t統計は、フィーチャの予測能力について何も言うことができないので、予測変数を予測モデルから選別したり、予測変数を予測モデルに含めるために使用しないでください。
P値は、偽の特徴が重要であると言う
Rでの次のシナリオのセットアップを考えてみましょう。2つのベクトルを作成してみましょう。1つ目は、単純にコインフリップです。5000
set.seed(154)
N <- 5000
y <- rnorm(N)
2番目のベクトルは観測値であり、それぞれ500個の同じサイズのランダムクラスのいずれかにランダムに割り当てられます。5000500
N.classes <- 500
rand.class <- factor(cut(1:N, N.classes))
次に、y
与えられrand.classes
たを予測するために線形モデルを適合させます。
M <- lm(y ~ rand.class - 1) #(*)
すべての係数の正しい値はゼロであり、いずれも予測力を持ちません。それにもかかわらず、それらの多くは5%レベルで重要です
ps <- coef(summary(M))[, "Pr(>|t|)"]
hist(ps, breaks=30)
実際、予測力はありませんが、それらの約5%が重要であると予測する必要があります。
P値は重要な特徴を検出できません
他の方向の例を次に示します。
set.seed(154)
N <- 100
x1 <- runif(N)
x2 <- x1 + rnorm(N, sd = 0.05)
y <- x1 + x2 + rnorm(N)
M <- lm(y ~ x1 + x2)
summary(M)
それぞれ予測力を持つ2つの相関予測子を作成しました。
M <- lm(y ~ x1 + x2)
summary(M)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.1271 0.2092 0.608 0.545
x1 0.8369 2.0954 0.399 0.690
x2 0.9216 2.0097 0.459 0.648
相関はモデルがデータから2つの個々の係数を推定する精度に影響するため、p値は両方の変数の予測力を検出できません。
推論統計は、変数の予測力や重要性を伝えるためのものではありません。これらの測定値をそのように使用することは、これらの測定値の乱用です。予測線形モデルの変数選択には、はるかに優れたオプションがありますglmnet
。の使用を検討してください。
(*)ここでインターセプトを省略していることに注意してください。したがって、すべての比較は、最初のクラスのグループ平均ではなく、ゼロのベースラインに対して行われます。これは@whuberの提案でした。
コメントで非常に興味深い議論につながったため、元のコードは
rand.class <- factor(sample(1:N.classes, N, replace=TRUE))
そして
M <- lm(y ~ rand.class)
次のヒストグラムにつながりました