【问题标题】:R - help on basic one-way permutation testR - 基本单向置换测试的帮助
【发布时间】:2013-09-11 05:53:40
【问题描述】:

我在编写单向置换测试时遇到了困难。我有来自跑步比赛的数据,我正在查看两列以查看来自国外或美国的跑步者是否更快。左栏是两个因素,A 或 D - 国外或国内(国外跑步者显然要快得多)。右栏是他们的时间,以分钟为单位。因为国外的样本量太小,所以我想做一个置换检验来回答这个问题:如果时间是随机分配的,那么国外跑者被分配快速时间的概率是多少?

我将不胜感激任何指导。我拥有的唯一代码是将列转换为因子。我也有一个排列测试的尝试,但我不知道它会去哪里。

abroaddomestic$City.f <- factor(abroaddomestic$City, labels = c("Abroad", "Domestic"))
msamp <- mean(abroad$TimeInMin) 
mpop <- mean(abroaddomestic$TimeInMin) 
msim <- replicate(10000, mean(sample(abroaddomestic$TimeInMin, 250))) 
sum(abs(msim-mpop) >= abs(msamp-mpop))/10000 

【问题讨论】:

    标签: r permutation


    【解决方案1】:

    与 Carl Witthoft 的回答类似,您可以将模拟视为来自二项分布。即模拟每个跑者的国内或国外类型是随机抽签。

    从那里,您可以将前十名(或任何阈值)中的跑步者数量视为您的统计数据,并针对国内/国外类型随机分配给所有跑步者的模拟分布进行测试。例如,假设有 1000 名跑步者,其中 100 名来自国外:

    # calculate your test statistic
    # as the number of abroad runners in top ten
    statistic <- 3
    # 5000 simulations of number of abroad in top ten times
    # take number of values greater than statistic as p-value
    sum(replicate(5000,sum(rbinom(1000,1,.1)[1:10])) > statistic)/5000
    # or, equivalently:
    sum(replicate(5000,rbinom(1,10,.1)) > statistic)/5000
    

    在此示例中,您的 p 值类似于 0.01,因此拒绝了前十名的位置是随机的(独立于国内/国外类型)的零假设。

    【讨论】:

      【解决方案2】:

      我认为您无需担心因素或几乎任何源数据。比如说,你有 1000 名跑步者,其中 10 名是 'abroad' 。然后你需要做的就是计算(模拟)runif(1000) 的前 10 个值在生成的所有随机值的前 X% 中的概率。由于您假设不相关,因此生成顺序无关紧要。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-15
        • 1970-01-01
        • 2011-08-12
        • 2010-12-05
        • 1970-01-01
        相关资源
        最近更新 更多