计算Fisher';s数据帧行中的精确测试p值

计算Fisher';s数据帧行中的精确测试p值,r,chi-squared,R,Chi Squared,我有一个数据框中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值的第六

我有一个数据框中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 

我想你可以这样做

df$p_value <- apply(df,1,function(x) fisher.test(matrix(x[-1],nrow=2))$p.value)

df$p_值我想你可以这样做

df$p_value <- apply(df,1,function(x) fisher.test(matrix(x[-1],nrow=2))$p.value)

df$p_值首先,R中还有
?fisher.test
。您需要将代码放入
apply
语句中,以便它作用于每一行,如
apply(df[-1],1,函数(x)…)
其中
x
是每一行中可以放入矩阵的4个数字。即使使用apply()或by(),2x2矩阵的生成仍然是一个问题。首先,R中也有
?fisher.test
。您需要将代码放入
apply
语句中,以便它作用于每一行,如
apply(df[-1],1,函数(x)…)
其中
x
是每一行中可以放入矩阵的4个数字。即使使用apply()或by(),2x2矩阵的生成仍然是一个问题。