【问题标题】:How do I sample and conduct a random permutation test for data with unequal list lengths in R?如何对 R 中列表长度不等的数据进行采样和随机排列测试?
【发布时间】:2020-07-10 15:25:04
【问题描述】:

我有一个问题,我有 2 个长度不等的列表,我想对它们进行 5000 次迭代的随机排列测试,以确定两者的均值差异是否显着。

dataset1v <- c(10, 10, 5, 10, 50, 2, 5, 50, 10, 40, 50, 20, 25, 20, 10, 10, 50, 10)
dataset2v <- c(50, 10, 20, 10, 40, 10, 20, 30, 10, 10, 80, 15)

所有关于随机排列测试的教程都假定列表长度相等,因此它们不适用,因为当我使用列表运行它时会弹出警告。我已经尝试过permutation.test.discrete 以及其他选项,但它始终是同一个问题:列表长度不相等。此外,我还想将每个数据重新采样为它们的原始列表长度(每个 18 和 12)。我是 R 编码的初学者,所以我花了好几个小时试图弄清楚如何解决这个问题。将不胜感激一些帮助和正确方向的指示!谢谢!!

【问题讨论】:

  • 你不能分别从每个列表中分别替换 18 次或 12 次吗?
  • 我为此做了一个循环,最终效果如何!我基本上将两者合并为一个长列表并分别对其进行采样,然后计算出两者的平均值并找出平均差,然后将其放入预制的空矩阵中。谢谢你的建议!! a &lt;- c() for(i in 1:5000){ data &lt;- c(10, 10, 5, 10, 50, 2, 5, 50, 10, 40, 50, 20, 25, 20, 10, 10, 50, 10, 50, 10, 20, 10, 40, 10, 20, 30, 10, 10, 80, 15) s1 &lt;- sample(data, size = 18, FALSE) s2 &lt;- sample(data, size = 12, FALSE) M1 &lt;- mean(s1) M2 &lt;- mean(s2) MD &lt;- (M1-M2) a[i] &lt;- MD}
  • 好吧,这根本不是我的意思 ;) 1. 如果我们想估计 each 列表的 mean,我们不应该将它们合并,而是计算每个列表的平均值。 2.我们不是要使用replace=TRUE吗(否则我们每次都会得到完全相同的样本)

标签: r random permutation sampling


【解决方案1】:

您可以使用DAAG 包中的twot.permutation

library("DAAG")
set.seed(42)
twot.permutation(dataset1v, dataset2v, nsim=5e3)
# [1] 0.605

它还包括绘图功能:


数据

dataset1v <- c(10, 10, 5, 10, 50, 2, 5, 50, 10, 40, 50, 20, 25, 20, 10, 10, 50, 10)
dataset2v <- c(50, 10, 20, 10, 40, 10, 20, 30, 10, 10, 80, 15)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多