频数表可以很好地展现类别型变量的分布。
使用vcd包中的Arthritis数据集。我们使用table()函数。
我们可以得知,女性有59人,男性有25人。
我们可以得知,女性占比70%,男性占比30%。
table()函数的第一个变量是行变量,第二个变量是列变量。
margin.table()能够给出表格的边际和,1表示按行变量加和,2表示按列变量加和。
1表示按行算比例,图中可知,安慰剂组的有16%的人有显著改善,治疗组有51%的人有显著改善。
2表示按列算比例,图中可知,显著改善的人中有25%是服用安慰剂,而75%的人受到了治疗。
用ftable()函数可以将其转换为一个紧凑的形式。
chisq.test()函数可以对二维列联表的两个变量进行独立性检验。
P值小于0.05,说明治疗方式和改善情况不独立。
fisher.test()函数也可以进行独立性检验。
得到了同样的结论。
另一个例子
HairEyeColor是R的内置数据集。它是一个三维列联表,记录了592个学生的头发眼睛颜色和性别。
我们现在想要知道,头发的颜色和眼睛的颜色这两个变量是否独立。
先将这个三维列联表转换成头发和眼睛颜色的二维列联表。然后用chisq.test()函数计算。结果显示,眼睛和头发的颜色不独立,而且p值非常小。