我在对数据运行Friedman检验时遇到问题。我正在尝试使用以下命令运行Friedman检验:
friedman.test(mean ~ isi | expId, data=monoSum)
在以下数据库(https://www.dropbox.com/s/2ox0y1b4gwld0ai/monoSum.csv)上:
> monoSum
expId isi N mean
1 m80B1 1 10 100.000000
2 m80B1 2 10 73.999819
3 m80B1 3 10 45.219362
4 m80B1 4 10 116.566174
. . . . .
18 m80L2 2 10 82.945491
19 m80L2 3 10 57.675480
20 m80L2 4 10 207.169277
. . . . . .
25 m80M2 1 10 100.000000
26 m80M2 2 10 49.752687
27 m80M2 3 10 19.042592
28 m80M2 4 10 150.411035
它返回错误:
Error in friedman.test.default(c(100, 73.9998193095267, 45.2193621626293, :
not an unreplicated complete block design
我认为它给出了误差,因为当monoSum$isi==1
时,平均值总是100,这对吗?
然而,monoSum$isi==1
始终为100,因为它是所有其他monoSum$isi
组被归一化的控制组。我不能假设正态分布,所以我不能运行rmANOVA......有没有办法对该数据运行弗里德曼检验,或者我在这里遗漏了一个非常重要的点?
提前感谢!
8条答案
按热度按时间ssm49v7z1#
如果运行您的数据集,我不会收到错误:
但是,您必须确保
expId
和isi
被编码为因子。然后再运行一次测试。这对我有类似的问题很有效。
zphenhs42#
我知道这是相当古老的,但为后代(另见:我当我忘记和谷歌这一次):
你可以通过运行
table(groups, blocks)
来确定你的数据框中缺少了什么值,或者在这个问题中是table(monoSum$isi, monoSum$expID)
。这将返回一个0和1的表格。这些缺少的记录在带有0的单元格中。我在尝试删除结果不完整的块后遇到了这个问题;由于某种原因,获取数据的子集并没有移除块。
jfewjypa3#
我想我会提到我发现这个帖子是因为我收到了一个类似的错误信息。上面的建议并没有解决这个问题。奇怪的是,我不得不对我的 Dataframe 进行排序,以便一个块一个块地按顺序显示组(即,我不能有以下内容:1 A座1 B座2 B座2 A座
它必须以A、B、A、B的形式出现)
3htmauhk4#
我在R中遇到了同样的隐含错误消息,尽管在我的情况下,当我将“as.matrix”函数应用于我使用read.csv()函数导入的CSV文件的原始 Dataframe 时,它得到了解决。
在我的原始数据集中也有一个缺失的数据点,我发现当我的数据被转换为friedman.test()调用的矩阵时,包含缺失数据点的整行都被自动省略了。
oalqel3c5#
使用函数as.matrix()来转换我的 Dataframe 是让函数为我运行的神奇之处。
s5a0g9ez6#
我的数据集也出现了同样的错误。结果发现函数
friedman.test()
接受 data frames(fx由data.frame()
创建的 Dataframe ),但不接受 * tibles *(由dplyr和其他现代工具创建的 Dataframe )。我的解决方案是先将我的数据集转换为dataframe。hpxqektj7#
我也遇到了这个问题。通过删除NA修复了我的问题。
z9gpfhce8#
我只是想分享一下我的问题。我的ID因子在执行pivot_longger()后没有正确的级别。因此,同样的错误也出现了。我确定了正确的级别,它的工作原理如下:as.factor(as.character(df$ID))