【发布时间】:2016-07-06 16:36:12
【问题描述】:
我在一个数据框中有一个包含 1700 个样本的列表,其中每一行代表每个助手在来自不同盒子的随机样本中计数的彩色项目的数量。有两种可用颜色和两个人计算项目,因此可以轻松创建 2x2 列联表。
df
Box-ID 1_Red 1_Blue 2_Red 2_Blue
1 1075 918 29 26
2 903 1076 135 144
我想知道如何将每一行视为列联表(向量或矩阵),以执行卡方检验(如 Fisher 或 Barnard)并生成具有 p 值的第六列。 这是我迄今为止尝试过的,但我不确定它是否正确
df$p-value = chisq.test(t(matrix(c(df[,1:4]), nrow=2)))$p.value
【问题讨论】:
-
首先,R 中也有
?fisher.test。您需要将代码放在apply语句中,以便它作用于每一行,例如apply(df[-1], 1, function(x) .... ),其中x是每行中可以放入矩阵的4 个数字。 -
即使使用 apply() 或 by(),2x2 矩阵的生成仍然是个问题。
标签: r chi-squared