回答:
応答変数がそうでなくても、回帰問題の残差が正規分布することは合理的です。単変量回帰問題を考える場合。回帰モデルが適切になるように、さらに、β = 1の真の値を仮定します。この場合、真の回帰モデルの残差は正常ですが、yの条件付き平均はxの関数であるため、yの分布はxの分布に依存します。データセットに多くのxの値がある場合それらはゼロに近く、の値が高くなるほど徐々に少なくなり、yの分布は左に歪んでいきます。xの値が対称的に分布している場合、yは対称的に分布し、以下同様です。回帰問題の場合、応答はxの値を条件とする通常の条件のみであると仮定します。
もちろん、@ DikranMarsupialはまったく正しいのですが、特にこの懸念が頻繁に浮かび上がってくると思われるので、彼の主張を説明するのは良いことだと思いました。特に、回帰モデルの残差は、p値が正しいように正規分布する必要があります。ただし、残差が正規分布している場合でも、が保証されるわけではありません(重要ではありません...)。Xの分布に依存します。
簡単な例を見てみましょう(私はそれを作成しています)。我々は薬をテストしているとしましょう孤立性収縮期高血圧(すなわち、トップ血圧数が高すぎます)。さらに、収縮期血圧は通常、患者集団内で分布し、平均160およびSDが3であり、患者が毎日服用する薬物のmgごとに、収縮期血圧が1mmHg低下することを規定します。換言すれば、真の値 160であり、そしてβ 1が -1であり、真のデータ生成機能がある: B P S Y S = 160 - 1 × 毎日の薬物投与+ ε 私たちの架空の研究では、患者300人を無作為に0mg(プラセボ)、20mgを、または一日あたりのこの新しい薬40mgのを取るために割り当てられています。( Xが正規分布していないことに注意してください。)次に、薬が有効になるのに十分な時間が経過すると、データは次のようになります。
(私はポイントが区別しにくいほど重ならないように線量をジッタリングしました。)では、の分布(つまり、限界/元の分布)と残差を調べてみましょう。
set.seed(123456789) # this make the simulation repeatable
b0 = 160; b1 = -1; b1_null = 0 # these are the true beta values
x = rep(c(0, 20, 40), each=100) # the (non-normal) drug dosages patients get
estimated.b1s = vector(length=10000) # these will store the simulation's results
estimated.b1ns = vector(length=10000)
null.p.values = vector(length=10000)
for(i in 1:10000){
residuals = rnorm(300, mean=0, sd=3)
y.works = b0 + b1*x + residuals
y.null = b0 + b1_null*x + residuals # everything is identical except b1
model.works = lm(y.works~x)
model.null = lm(y.null~x)
estimated.b1s[i] = coef(model.works)[2]
estimated.b1ns[i] = coef(model.null)[2]
null.p.values[i] = summary(model.null)$coefficients[2,4]
}
mean(estimated.b1s) # the sampling distributions are centered on the true values
[1] -1.000084
mean(estimated.b1ns)
[1] -8.43504e-05
mean(null.p.values<.05) # when the null is true, p<.05 5% of the time
[1] 0.0532
これらの結果は、すべてが正常に機能することを示しています。