【问题标题】:Friedman test unreplicated complete block design error弗里德曼检验未复制的完整块设计错误
【发布时间】:2014-02-22 19:34:43
【问题描述】:

我在对我的数据运行 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… 有没有办法对这些数据进行弗里德曼测试,还是我在这里遗漏了一个非常重要的点?

非常感谢!

【问题讨论】:

  • 我还尝试对均值的连续值而不是归一化值进行分析......同样的错误:(

标签: r error-handling statistics


【解决方案1】:

如果我运行您的数据集,我不会收到错误消息:

   Friedman rank sum test

   data:  mean and isi and expId
   Friedman chi-squared = 17.9143, df = 3, p-value = 0.0004581

但是,您必须确保将 expIdisi 编码为因子。运行这些命令:

    monoSum$expID$<-factor(monoSum$expID)
    monoSum$isi$<-factor(monoSum$isi)

然后再次运行测试。这对我有类似的问题有用。

【讨论】:

  • 我重新启动了 R,它现在也在这里运行顺利......即使没有编码作为因素......令人难以置信的是,这让我坚持了将近一个多星期 :') 谢谢你的努力
【解决方案2】:

我知道这已经很老了,但对于后代来说(另请参阅:当我忘记并再次谷歌时的我):

您可以通过运行table(groups, blocks) 或在此问题table(monoSum$isi, monoSum$expID) 的情况下确定数据框中的缺失值。这将返回一个由 0 和 1 组成的表格。这个缺失的记录在带有 0 的单元格中。

我在尝试删除结果不完整的块后遇到了这个问题;由于某种原因,获取数据的一个子集并没有删除这些块。

【讨论】:

    【解决方案3】:

    只是想我会提到我发现了这篇文章,因为我收到了类似的错误消息。上述建议并没有解决它。奇怪的是,我必须对我的数据框进行排序,以便逐块按顺序显示组(即我不能拥有以下内容: 区块 1 A 1号B座 2 B座 区块 2 A

    它必须显示为 A、B、A、B)

    【讨论】:

      【解决方案4】:

      我在 R 中遇到了相同的神秘错误消息,但在我的情况下,当我将“as.matrix”函数应用于我使用 read.csv( ) 函数。

      我的原始数据集中也有一个缺失的数据点,我发现当我的数据被转换成一个矩阵用于friedman.test() 调用时,包含缺失数据点的整行都被自动省略了。

      【讨论】:

        【解决方案5】:

        使用函数 as.matrix() 来转换我的数据框是让函数为我运行的魔力。

        【讨论】:

          【解决方案6】:

          我的数据集也有这个确切的错误。 事实证明,friedman.test() 函数接受 data frames(fx 由 data.frame() 创建的那些)但不接受 tibbles(由 dplyr 和其他现代工具创建的那些)。我的解决方案是先将我的数据集转换为数据框。

          D_fri <- D_all %>% dplyr::select(FrustrationEpisode, Condition, Participant)
          D_fri <- as.data.frame(D_fri)
          str(D_fri) # confirm the object should now be a 'data.frame'
          friedman.test(FrustrationEpisode ~ Condition | Participant, D_fri)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-08-19
            • 1970-01-01
            相关资源
            最近更新 更多