0

我在编写单向置换测试时遇到了困难。我有跑步比赛的数据,我正在查看两列以查看来自国外或美国的跑步者是否更快。左栏是两个因素,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 
4

2 回答 2

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,因此拒绝了前十名的位置是随机的(独立于国内/国外类型)的零假设。

于 2013-09-11T17:29:01.777 回答
0

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

于 2013-09-11T11:52:28.073 回答