您好,登錄后才能下訂單哦!
我們將著眼于類別型變量的頻數表和列聯表,以及相應的獨立性檢驗、相關性的
度量、圖形化展示結果的方法還將連帶使用vcd包和gmodels包中的函數。
數據來自vcd包中的Arthritis數據集
library(vcd)
一維列聯表
可以使用table()函數生成簡單的頻數統計表
> mytables<-with(Arthritis,table(Improved))
> mytables
Improved
None Some Marked
42 14 28
可以用prop.table()將這些頻數轉化為比例值
> prop.table(mytables)
Improved
None Some Marked
0.5000000 0.1666667 0.3333333
或使用prop.table()*100轉化為百分比:
> prop.table(mytables)*100
Improved
None Some Marked
50.00000 16.66667 33.33333
---
二維列聯表
對于二維列聯表,table()函數的使用格式為:
其中的A是行變量,B是列變量
table(A,B)
其中的mydata是一個矩陣或數據框
xtabs(~A+B,data=mydata)
> mytable <- xtabs(~ Treatment+Improved,data=Arthritis)
> mytables
Improved
None Some Marked
42 14 28
你可以使用margin.table()和prop.table()函數分別生成邊際頻數和比例。行和與行比
例可以這樣計算:
> margin.table(mytable,1)
Treatment
Placebo Treated
43 41
> margin.table(mytable,2)
Improved
None Some Marked
42 14 28
下標1指代table()語句中的第一個變量,行變量
下標2指代table()語句中的第二個變量,列變量
---
各單元格所占比例可用如下語句獲取
> prop.table(mytable)
Improved
Treatment None Some Marked
Placebo 0.34523810 0.08333333 0.08333333
Treated 0.15476190 0.08333333 0.25000000
每個單元格比例加起來為1
> prop.table(mytable,1)
Improved
Treatment None Some Marked
Placebo 0.6744186 0.1627907 0.1627907
Treated 0.3170732 0.1707317 0.5121951
> prop.table(mytable,2)
Improved
Treatment None Some Marked
Placebo 0.6904762 0.5000000 0.2500000
Treated 0.3095238 0.5000000 0.7500000
計算每個行或者列占比,1為計算列,2為計算行
---
你可以使用addmargins()函數為這些表格添加邊際和
> addmargins(prop.table(mytable,2))
Improved
Treatment None Some Marked Sum
Placebo 0.6904762 0.5000000 0.2500000 1.4404762
Treated 0.3095238 0.5000000 0.7500000 1.5595238
Sum 1.0000000 1.0000000 1.0000000 3.0000000
> addmargins(prop.table(mytable,1))
Improved
Treatment None Some Marked Sum
Placebo 0.6744186 0.1627907 0.1627907 1.0000000
Treated 0.3170732 0.1707317 0.5121951 1.0000000
Sum 0.9914918 0.3335224 0.6749858 2.0000000
計算每個行或者列和
> addmargins(mytable)
Improved
Treatment None Some Marked Sum
Placebo 29 7 7 43
Treated 13 7 21 41
Sum 42 14 28 84
> addmargins(prop.table(mytable))
Improved
Treatment None Some Marked Sum
Placebo 0.34523810 0.08333333 0.08333333 0.51190476
Treated 0.15476190 0.08333333 0.25000000 0.48809524
Sum 0.50000000 0.16666667 0.33333333 1.00000000
table()函數默認忽略缺失值(NA)。要在頻數統計中將NA視為一個有效的類別,請設
定參數useNA="ifany"。
-------
使用gmodels包中的CrossTable()函數是創建二維列聯表的第三種方法
。CrossTable()
函數仿照SAS中PROC FREQ或SPSS中CROSSTABS的形式生成二維列聯表
用CrossTable生成二維列聯表
> library(gmodels)
> CrossTable(Arthritis$Treatment,Arthritis$Improved)
Cell Contents
|-------------------------|
| N |
| Chi-square contribution |
| N / Row Total |
| N / Col Total |
| N / Table Total |
|-------------------------|
Total Observations in Table: 84
| Arthritis$Improved
Arthritis$Treatment | None | Some | Marked | Row Total |
--------------------|-----------|-----------|-----------|-----------|
Placebo | 29 | 7 | 7 | 43 |
| 2.616 | 0.004 | 3.752 | |
| 0.674 | 0.163 | 0.163 | 0.512 |
| 0.690 | 0.500 | 0.250 | |
| 0.345 | 0.083 | 0.083 | |
--------------------|-----------|-----------|-----------|-----------|
Treated | 13 | 7 | 21 | 41 |
| 2.744 | 0.004 | 3.935 | |
| 0.317 | 0.171 | 0.512 | 0.488 |
| 0.310 | 0.500 | 0.750 | |
| 0.155 | 0.083 | 0.250 | |
--------------------|-----------|-----------|-----------|-----------|
Column Total | 42 | 14 | 28 | 84 |
| 0.500 | 0.167 | 0.333 | |
--------------------|-----------|-----------|-----------|-----------|
CrossTable()函數有很多選項,可以做許多事情:計算(行、列、單元格)的百分比;指
定小數位數;進行卡方、Fisher和McNemar獨立性檢驗;計算期望和(皮爾遜、標準化、調整的
標準化)殘差;將缺失值作為一種有效值;進行行和列標題的標注;生成SAS或SPSS風格的輸出。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。