【发布时间】:2020-10-03 16:33:24
【问题描述】:
我有一个 3185x90 的二进制值数据集,并希望对独立性进行卡方检验,将所有列变量相互比较。
我已经尝试使用来自 google 搜索的不同代码变体,包括 chisq.test() 和一些 for 循环,但到目前为止,它们都没有奏效。
我该怎么做?
这是我修改过的框架。我的数据集是橡木。
chi_trial <- data.frame(a = c(0,1), b = c(0,1))
for(row in 1:nrow(oak)){
print(row)
print(chisq.test(c(oak[row,1],d[row,2])))
}
我也试过这个:
apply(d, 1, chisq.test)
这给了我错误: FUN(newX[, i], ...) 中的错误: 'x' 的所有条目必须是非负的和有限的
dput(oak[1:2],)
structure(list(post_flu = structure(c(1, 1, 1, 1, 1, 0, 0, 0,
0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1,
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
label = "Receipt of Flu Vaccine - Encounter Survey", format.stata = "%10.0g")), row.names = c(NA,
-3185L), class = c("tbl_df", "tbl", "data.frame"), label = "Main Oakland Clinic Analysis Dataset")
我在输出的最后几行中添加了一个数据样本。数据集的部分很小,但看起来都是这样的。
【问题讨论】:
-
您好 Joseph,不清楚您要在哪些行或列上执行
chisq.test。你能澄清一下吗?您打算如何纠正多重测试?此外,如果您至少提供数据样本dput(d[1:20,]),那么提供帮助会容易得多。您可以edit您的问题并粘贴输出。请用三个反引号(```)包围输出以获得更好的格式。请参阅How to make a reproducible example 了解更多信息。 -
我赞同伊恩的评论。另外,您说您的目标是“比较所有变量”,但是 for 循环中的比较是逐行的。数据框行是观察值,而 列 是变量。作为一项规则,χ2 对于观察比较也没有真正意义,尽管我认为可能偶尔会有例外。
-
+1 给@IanCampbell(和 gersht)。即使您得到了特定问题的答案,从长远来看,这也可能不会为您提供服务。在确定您所做的事情是否正确或适当之前,您需要考虑更深层次的问题。
-
我添加了一些数据。我想知道变量/列频率是否存在显着差异。最后,我不打算从事编码工作。我今年夏天正在进行的研究需要使用 r。我使用的代码通常来自其他堆叠的帖子,所以我不确定哪些可以工作。
标签: r for-loop chi-squared