統計的仮説検定の検出力分析の理解は、いくつかを実行して結果を注意深く見ることによって強化できます。
デザインにより、サイズのテストされて意図少なくとものチャンスで帰無仮説を棄却する nullが真(その予想される場合、偽陽性率)。ααα この特性を備えた代替手順から選択する能力(または贅沢)がある場合、(a)名目上の偽陽性率に実際に近づき、(b)ある場合に帰無仮説を棄却する可能性が比較的高いものを優先します。違います。
2番目の基準では、ヌルが真に失敗する方法と方法を規定する必要があります。代替案は範囲が限定され、明確に指定されているため、教科書ではこれは簡単です。Shapiro-Wilkのような配布テストでは、代替案ははるかにあいまいであり、「非正規」です。分散テストから選択する場合、アナリストは自分の1回限りの電力調査を実施して、問題が懸念されるより具体的な代替仮説に対してテストがどの程度うまく機能するかを評価する必要があります。
Michael Mayerの回答の動機付けされた例は、代替分布がスチューデントt分布のファミリーと同様の性質を持つ可能性があると仮定しています。数値(および場所とスケール)によってパラメーター化されたこのファミリーには、正規分布の大きな制限が含まれます。ν≥ 1ν
どちらの状況でも、実際のテストサイズとその検出力のどちらを評価しても、指定した分布から独立したサンプルを生成し、各サンプルでテストを実行して、帰無仮説を棄却する割合を見つける必要があります。 ただし、テスト結果には、P値など、より多くの情報があります。そのようなAシミュレーション中に生成P-値のセットを保持することにより、我々は後にテストをするためにはnullを拒否した速度を評価することができます任意の値我々が気にかもしれませんが。したがって、電力分析の中心は、このP値の分布を生成するサブルーチンです(先ほど説明したように、シミュレーションによって、または(場合によっては)理論式を使用して)。これはでコーディングした例です。その引数にはαR
残りのパラメーターは、結果の表示を制御します。これらは主に、この回答で図を生成するための便宜として含まれています。
sim <- function(rdist, n, n.iter, prefix="",
breaks=seq(0, 1, length.out=20), alpha=0.05,
plot=TRUE, ...) {
# The simulated P-values.
# NB: The optional arguments "..." are passed to `rdist` to specify
# its parameters (if any).
x <- apply(matrix(rdist(n*n.iter, ...), ncol=n.iter), 2,
function(y) shapiro.test(y)$p.value)
# The histogram of P-values, if requested.
if (plot) {
power <- mean(x <= alpha)
round.n <- 1+ceiling(log(1 + n.iter * power * (1-power), base=10) / 2)
hist(x[x <= max(breaks)], xlab=paste("P value (n=", n, ")", sep=""),
breaks=breaks,
main=paste(prefix, "(power=", format(power, digits=round.n), ")", sep=""))
# Specially color the "significant" part of the histogram
hist(x[x <= alpha], breaks=breaks, col="#e0404080", add=TRUE)
}
# Return the array of P-values for any further processing.
return(x)
}
5100。ん520。
n.iter <- 10^5 # Number of samples to generate
n.spec <- c(5, 10, 20) # Sample sizes to study
par(mfrow=c(1,length(n.spec))) # Organize subsequent plots into a tableau
system.time(
invisible(sapply(n.spec, function(n) sim(rnorm, n, n.iter, prefix="DF = Inf ")))
)
パラメータを指定すると、このコードも1行になります。次の出力が生成されます。
01α = 0.05 、.04810.0499
10.2
νν= 100ν= 11001000)、まったく時間をかけません。今度は、コードに二重ループが必要です(より複雑な状況では、変化させる必要のあるすべての側面に対応するために、三重または四重ループが必要になることがよくあります)。自由度。ただし、もう一度、すべてが1行のコード(3行目と最後の行)で行われます。
df.spec <- c(64, 16, 4, 2, 1)
par(mfrow=c(length(n.spec), length(df.spec)))
for (n in n.spec)
for (df in df.spec)
tmp <- sim(rt, n, n.iter, prefix=paste("DF =", df, ""), df=df)
このタブローの少しの研究は力についての直感を提供します。 私はその最も顕著で有用な側面に注目したいと思います。
面白いことに、実際には3行のコードに相当するものが収集されます。1つは指定された分布からのiidサンプルをシミュレートし、1つはnull分布の配列にそれを適用し、3つ目はそれを適用します。代替ディストリビューションの配列。これらは、電力分析に入る3つのステップです。残りは、結果を要約して解釈するだけです。