以下のコードは、周囲に二項ノイズを含む一連の「信号」確率で構成されるテストデータのセットを生成します。次に、コードは5000組の乱数を「説明的な」系列として使用し、それぞれについてロジスティック回帰のp値を計算します。
ランダムな説明シリーズは、57%のケースで5%レベルで統計的に有意であることがわかりました。以下の投稿の長い部分を読んだ場合、これはデータに強い信号が存在することに起因します。
だから、ここに主な質問があります:データに強い信号が含まれているときに説明変数の統計的有意性を評価するときに、どの検定を使用すべきですか?単純なp値は誤解を招くようです。
問題の詳細な説明は次のとおりです。
予測子が実際には単なる乱数のセットであるときに、ロジスティック回帰のp値を取得した結果に戸惑っています。私の最初の考えは、この場合、p値の分布はフラットでなければならないということでした。以下のRコードは、実際には低いp値で大きなスパイクを示しています。これがコードです:
set.seed(541713)
lseries <- 50
nbinom <- 100
ntrial <- 5000
pavg <- .1 # median probability
sd <- 0 # data is pure noise
sd <- 1 # data has a strong signal
orthogonalPredictor <- TRUE # random predictor that is orthogonal to the true signal
orthogonalPredictor <- FALSE # completely random predictor
qprobs <- c(.05,.01) # find the true quantiles for these p-values
yactual <- sd * rnorm(lseries) # random signal
pactual <- 1 / (1 + exp(-(yactual + log(pavg / (1-pavg)))))
heads <- rbinom(lseries, nbinom, pactual)
## test data, binomial noise around pactual, the probability "signal"
flips <- cbind(heads, nbinom - heads)
# summary(glm(flips ~ yactual, family = "binomial"))
pval <- numeric(ntrial)
for (i in 1:ntrial){
yrandom <- rnorm(lseries)
if (orthogonalPredictor){ yrandom <- residuals(lm(yrandom ~ yactual)) }
s <- summary(glm(flips ~ yrandom, family="binomial"))
pval[i] <- s$coefficients[2,4]
}
hist(pval, breaks=100)
print(quantile(pval, probs=c(.01,.05)))
actualCL <- sapply(qprobs, function(c){ sum(pval <= c) / length(pval) })
print(data.frame(nominalCL=qprobs, actualCL))
コードは、強い信号の周囲の二項ノイズからなるテストデータを生成し、ループ内で一連の乱数に対してデータのロジスティック回帰を適合させ、ランダムな予測子のp値を累積します。結果は、p値のヒストグラム、1%と5%の信頼レベルの実際のp値分位数、およびこれらの信頼レベルに対応する実際の偽陽性率として表示されます。
予期しない結果の1つの理由は、ランダムな予測子が一般に真の信号と何らかの相関関係を持ち、これが主に結果を説明しているためだと思います。ただし、に設定orthogonalPredictor
した場合TRUE
、ランダムな予測子と実際の信号の相関はゼロになりますが、問題は低減されたレベルで存在します。それについての私の最高の説明は、真の信号がフィッティングされるモデルのどこにもないので、モデルが誤って指定され、p値がとにかく疑わしいということです。しかし、これはキャッチ22です。データに正確に適合する予測子のセットを利用できる人はいますか?だからここにいくつかの追加の質問があります:
ロジスティック回帰の正確な帰無仮説は何ですか?それは、データが一定レベルの周りの純粋な2項ノイズであるということですか(つまり、真の信号はありません)。コードでsdを0に設定した場合、信号はなく、ヒストグラムは平坦に見えます。
コードの暗黙の帰無仮説は、予測子が乱数のセット以上の説明力を持たないというものです。これは、コードによって表示されるp値の経験的な5%分位数を使用してテストされます。この仮説をテストするためのより良い方法、または数値的にそれほど集中的ではない少なくとも1つの方法はありますか?
- - - 追加情報
このコードは次の問題を模倣します。過去のデフォルトレートは、景気循環によって駆動される時間(信号)の間に大きな変動を示します。特定の時点での実際のデフォルトカウントは、これらのデフォルト確率を中心とした二項式です。私はp値が疑わしくなったときに、信号の説明変数を見つけようとしていました。このテストでは、シグナルは経済サイクルを示すのではなく、時間の経過に伴ってランダムに並べられますが、ロジスティック回帰では問題になりません。そのため、過度の分散はありません。信号は実際には信号であることを意味します。