0

一方向置換テストのコーディングに苦労しています。ランニング レースのデータがあり、2 つの列を調べて、海外のランナーと米国のランナーのどちらが速いかを調べています。左の列は、A または D の 2 つの要因です。海外または国内です (海外のランナーは明らかにはるかに速いです)。右の列は時間 (分単位) です。海外のサンプル サイズが非常に小さいため、次の質問に答える順列検定を行いたいと思います:タイムがランダムに割り当てられた場合、海外のランナーに速いタイムが割り当てられる確率はどれくらいですか?

ガイダンスをいただければ幸いです。私が持っている唯一のコードは、列を因子に変えることです。順列テストも試みていますが、どこに行くのかわかりません。

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 の回答と同様に、シミュレーションは二項分布に由来すると考えることができます。つまり、各ランナーの国内または国外のタイプが無作為抽選であるかどうかをシミュレートします。

そこから、トップ 10 (または任意のしきい値) 内のランナーの数を統計として扱い、国内/海外のタイプがすべてのランナーにランダムに割り当てられたシミュレートされた分布に対してテストできます。たとえば、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 程度であり、トップ 10 への配置がランダムであるという帰無仮説を棄却します (国内/海外のタイプとは無関係)。

于 2013-09-11T17:29:01.777 に答える
0

要因やソースデータのほとんどを気にする必要はないと思います。たとえば、1000 人のランナーがいて、そのうち 10 人が '海外' であるとします。runif(1000)次に、最初の 10 個の値が、生成されたすべてのランダム値の上位 X% に含まれる確率を計算 (シミュレート) するだけです。非相関を想定しているため、世代の順序は関係ありません。

于 2013-09-11T11:52:28.073 に答える