nxm 列联表的统计检验

机器算法验证 列联表
2022-03-24 02:43:52

我有一个由三组元素组成的数据集,我们称它们为 G1、G2 和 G3。我分析了这些元素的某些特征,并将它们分为 3 类“行为”T1、T2 和 T3(我使用聚类分析来做到这一点)。

所以,现在我有一个像这样的 3 x 3 列联表,其中三组中的元素数量除以类型:

      |    T1   |    T2   |    T3   |
------+---------+---------+---------+---
  G1  |   18    |   15    |   65    | 
------+---------+---------+---------+---
  G2  |   20    |   10    |   70    |
------+---------+---------+---------+---
  G3  |   15    |   55    |   30    |

现在,我可以在 R 中对这些数据进行 Fisher 测试

data <- matrix(c(18, 20, 15, 15, 10, 55, 65, 70, 30), nrow=3)
fisher.test(data)

我得到

   Fisher's Exact Test for Count Data

data:  data 
p-value = 9.028e-13
alternative hypothesis: two.sided     

所以我的问题是:

  • 以这种方式使用 Fisher 测试是否正确?

  • 我怎么知道谁和谁不同?有我可以使用的事后测试吗?看看数据,我会说第三组的行为与前两组不同,我如何在统计上显示这一点?

  • 有人向我指出 logit 模型:它们是此类分析的可行选择吗?

  • 分析此类数据的任何其他选择?

十分感谢

妮可

2个回答

起初我认为Fisher检验是正确使用的。

计数数据最好使用对数线性模型(不是 logit,以确保拟合值有界)处理。在 R 中,您可以指定family=poisson(设置错误 = Poisson 和链接 = log)。对数链接确保所有拟合值都是正数,而泊松误差考虑到数据是整数并且方差等于它们的平均值的事实。例如glm(y~x,poisson),该模型配备了对数链接和泊松误差(以考虑非正态性)。

在存在过度离散的情况下(如果泊松误差假设合适,则剩余偏差应等于剩余自由度),而不是quasipoisson用作误差族,您可以拟合负二项式模型。(这涉及到glm.nbpackage的功能MASS

在您的情况下,您可以使用以下命令拟合和比较模型:

observed <- as.vector(data)
Ts<-factor(rep(c("T1","T2","T3"),each=3))
Gs<-factor(rep(c("G1","G2","G3"),3))

model1<-glm(observed~Ts*Gs,poisson)

#or and a model without the interaction terms
model2<-glm(observed~Ts+Gs,poisson)


#you can compare the two models using anova with a chi-squared test
anova(model1,model2,test="Chi")
summary(model1)

始终确保您的最小模型包含所有令人讨厌的变量。

至于我们如何知道谁与谁不同,有一些情节可能会对您有所帮助。R 函数assocplot生成一个关联图,指示二维列联表中行和列独立性的偏差。

这是绘制为马赛克图的相同数据

mosaicplot(data, shade = TRUE)

您可以使用nnet 包中的 multinom 进行多项式回归。您可以使用 car package 中的linearHypothesis进行事后测试您可以使用线性假设(Wald 检验)或方差分析(LR 检验)进行独立性检验。