1

我有一个数据框,并希望为每一行(3x2 列联表)执行卡方检验。

  • 第 1 行 102 4998 105 3264 105 3636
  • 第 2 行 210 4890 22 3347 20 3721
  • 第 3 行 ...

因此,对于第一行,应对以下列联表进行卡方检验;

  • A组 102 4998
  • B组 105 3264
  • C组 105 3636

我使用以下代码,但这不会计算正确的 p 值(所有 p 值都等于零,而我自己计算卡方检验时并非如此):

table <- read.delim("dataframe.txt")
apply(table, 1, function(x) chisq.test(matrix(x,nrow=3)))

谁能帮我解决这个问题?

先感谢您

万斯

4

1 回答 1

1

使用ncol代替nrow

apply(table, 1, function(x) chisq.test(matrix(x,ncol=3)))

目前,您正在为第一行构建一个如下所示的矩阵:

102 3264
4998 105
105 3636

当 R 从向量构建矩阵时,它会按列构建它们,因此第二个值进入第二行,依此类推。

此外,如果您希望它只报告 p 值,您可以执行以下操作:

apply(table, 1, function(x) chisq.test(matrix(x,ncol=3))$p.value)
于 2015-12-11T21:41:38.547 回答