この回答では、見積の意味を分析し、シミュレーション研究の結果を提示して、それを説明し、言おうとしていることの理解に役立てます。この研究は、R
他の信頼区間手順や他のモデルを探索するために、誰でも(初歩的なスキルを持つ)簡単に拡張できます。
この作業では、2つの興味深い問題が発生しました。 1つは、信頼区間手順の精度を評価する方法に関するものです。堅牢性の印象はそれに依存します。比較できるように、2つの異なる精度測定値を表示します。
もう1つの問題は、低い信頼度の信頼区間手順は堅牢であるかもしれないが、対応する信頼限界はまったく堅牢ではないかもしれないということです。間隔がうまく機能する傾向があるのは、一方の端で発生するエラーが他方の端で発生するエラーを相殺することが多いためです。実際問題として、信頼区間の約半分がパラメーターをカバーしていることはかなり確かですが、実際のパラメーターは、モデルの仮定から現実がどのように逸脱するかに応じて、各区間の特定の端の近くに常に存在する可能性があります。50 %
堅牢性は統計において標準的な意味を持ちます:
一般に、堅牢性は、基礎となる確率モデルを取り巻く仮定からの逸脱に対する無感覚性を意味します。
(Hoaglin、Mosteller、およびTukey、ロバストおよび探索的データ分析の理解。J. Wiley(1983)、p。2 )
これは質問の引用と一致しています。引用を理解するには、信頼区間の意図された目的を知る必要があります。このために、Gelmanが書いたことを確認しましょう。
次の3つの理由から、50%から95%の間隔が好ましいです。
計算の安定性、
より直感的な評価(50%間隔の半分に真の値を含める必要があります)、
アプリケーションでは、パラメータと予測値がどこにあるのかを把握することが最善であり、非現実的なほぼ確実性を試みるのではないという感覚。
予測値の感覚を得ることは、信頼区間(CI)の目的ではないため、パラメーター値の感覚を得ることに焦点を当てます。これがCIの役割です。これらを「ターゲット」値と呼びましょう。そこから、定義により、 CIが指定確率(その信頼水準)でその標的をカバーすることを意図しています。意図したカバレッジ率を達成することは、CI手順の品質を評価するための最小基準です。(さらに、一般的なCIの幅に興味があるかもしれません。投稿を適切な長さに保つために、この問題を無視します。)
これらの考慮事項により、信頼区間の計算が目標パラメーター値に関してどの程度誤解を招く可能性があるかを調査することができます。 この引用は、データがモデルとは異なるプロセスによって生成された場合でも、信頼性の低いCIがカバレッジを保持する可能性があることを示唆していると読むことができます。これはテストできます。手順は次のとおりです。
少なくとも1つのパラメーターを含む確率モデルを採用します。古典的なものは、未知の平均と分散の正規分布からのサンプリングです。
モデルの1つ以上のパラメーターのCI手順を選択します。優れたものは、標本平均と標本標準偏差からCIを構築し、後者にスチューデントt分布で与えられた係数を掛けます。
その手順をさまざまな異なるモデルに適用します(採用されたモデルからあまり離れていない)ため、信頼レベルの範囲にわたってカバレッジを評価します。
例として、私はちょうどそれをやった。基本的な分布は、ほぼベルヌーイから均一、正規、指数、そして対数正規までの広い範囲で変化することを許可しました。これらには、対称分布(最初の3つ)と強く歪んだ分布(最後の2つ)が含まれます。各分布のために、私は間の信頼レベルの両面のCI構築各サンプルについてサイズ12の50,000サンプルを生成した及びほとんどの用途をカバー。50 %99.8 %
現在、興味深い問題が発生しています。CIプロシージャの実行状況(またはその悪さ)をどのように測定する必要がありますか? 一般的な方法では、実際のカバレッジと信頼レベルの差を単純に評価します。ただし、これは、高い信頼レベルでは疑わしく見えます。たとえば、99.9%の信頼度を達成しようとしているが、99%のカバレッジしか得られない場合、生の差はわずか0.9%です。ただし、これは、プロシージャがターゲットの10倍の頻度でターゲットをカバーできないことを意味します。このため、カバレッジを比較するより有益な方法では、オッズ比などを使用する必要があります。オッズ比の対数であるロジットの違いを使用します。具体的には、目的の信頼レベルがで、実際のカバレッジがαp、その後
ログ( p1 − p) −ログ( α1 - α)
違いをうまく捉えています。ゼロの場合、カバレッジは意図した値になります。負の場合、カバレッジは低すぎます。つまり、CIは楽観的すぎて、不確実性を過小評価しています。
では、問題は、基礎となるモデルが摂動されるときに、これらのエラー率が信頼レベルによってどのように変化するかということです。 シミュレーション結果をプロットすることで答えが得られます。 これらのプロットは、CIの「非確実性」がこの典型的なアプリケーションでどの程度「非現実的」であるかを定量化します。
グラフィックは同じ結果を表示しますが、左側のものはロジットスケールで値を表示し、右側のものは生スケールを使用します。ベータ分布はベータ(実際にはベルヌーイ分布です)です。対数正規分布は、標準正規分布の指数です。このCI手順が実際に意図したカバレッジを達成していることを検証し、有限シミュレーションサイズから予想される変動量を明らかにするために、正規分布が含まれています。(実際、正規分布のグラフは快適にゼロに近く、大きな偏差はありません。)(1 / 30、1 / 30 )
ロジットスケールでは、信頼レベルが増加するにつれてカバレッジがさらに広がることは明らかです。 ただし、いくつかの興味深い例外があります。歪度や長いテールを導入するモデルの摂動に関心がない場合は、指数関数と対数正規関数を無視して、残りに集中できます。それらの動作は、が程度(ロジット)を超えるまで不安定であり、その時点で発散が始まります。α95%3
この小さな研究は、ゲルマンの主張にある程度の具体性をもたらし、彼が念頭に置いていたかもしれない現象のいくつかを示しています。特に、などの低い信頼レベルでCIプロシージャを使用している場合、基礎となるモデルが強く乱れている場合でも、カバレッジは近いように見えます。そのようなCIは約半分の時間で正しく、残りの半分は間違っていると感じられます。それは堅牢です。代わりに、正しいことを望んでいる場合、たとえばの時間、つまり本当に間違っているのはだけであることを意味しますα = 50 %50 %95 %5 % 当時、世界がモデルの想定どおりに機能しない場合に備えて、エラー率がはるかに高くなるように準備する必要があります。
ちなみに、 CIのこの特性は、対称信頼区間を研究しているため、大部分が成り立ちます。歪んだ分布の場合、個々の信頼限界はひどい場合があります(そしてまったくロバストではありません)が、その誤差はしばしば相殺されます。 通常、一方のテールは短く、もう一方のテールは長く、一方の端が過剰になり、もう一方の端が不足します。信頼限界は、対応する間隔ほど堅牢ではないと考えています。50 %50 %
これは、R
プロットを作成したコードです。他の分布、他の信頼範囲、および他のCI手順を調査するために容易に変更できます。
#
# Zero-mean distributions.
#
distributions <- list(Beta=function(n) rbeta(n, 1/30, 1/30) - 1/2,
Uniform=function(n) runif(n, -1, 1),
Normal=rnorm,
#Mixture=function(n) rnorm(n, -2) + rnorm(n, 2),
Exponential=function(n) rexp(n) - 1,
Lognormal=function(n) exp(rnorm(n, -1/2)) - 1
)
n.sample <- 12
n.sim <- 5e4
alpha.logit <- seq(0, 6, length.out=21); alpha <- signif(1 / (1 + exp(-alpha.logit)), 3)
#
# Normal CI.
#
CI <- function(x, Z=outer(c(1,-1), qt((1-alpha)/2, n.sample-1)))
mean(x) + Z * sd(x) / sqrt(length(x))
#
# The simulation.
#
#set.seed(17)
alpha.s <- paste0("alpha=", alpha)
sim <- lapply(distributions, function(dist) {
x <- matrix(dist(n.sim*n.sample), n.sample)
x.ci <- array(apply(x, 2, CI), c(2, length(alpha), n.sim),
dimnames=list(Endpoint=c("Lower", "Upper"),
Alpha=alpha.s,
NULL))
covers <- x.ci["Lower",,] * x.ci["Upper",,] <= 0
rowMeans(covers)
})
(sim)
#
# The plots.
#
logit <- function(p) log(p/(1-p))
colors <- hsv((1:length(sim)-1)/length(sim), 0.8, 0.7)
par(mfrow=c(1,2))
plot(range(alpha.logit), c(-2,1), type="n",
main="Confidence Interval Accuracies (Logit Scales)", cex.main=0.8,
xlab="Logit(alpha)",
ylab="Logit(coverage) - Logit(alpha)")
abline(h=0, col="Gray", lwd=2)
legend("bottomleft", names(sim), col=colors, lwd=2, bty="n", cex=0.8)
for(i in 1:length(sim)) {
coverage <- sim[[i]]
lines(alpha.logit, logit(coverage) - alpha.logit, col=colors[i], lwd=2)
}
plot(range(alpha), c(-0.2, 0.05), type="n",
main="Raw Confidence Interval Accuracies", cex.main=0.8,
xlab="alpha",
ylab="coverage-alpha")
abline(h=0, col="Gray", lwd=2)
legend("bottomleft", names(sim), col=colors, lwd=2, bty="n", cex=0.8)
for(i in 1:length(sim)) {
coverage <- sim[[i]]
lines(alpha, coverage - alpha, col=colors[i], lwd=2)
}