私は不均一分散性を本当に理解していません。私のモデルがこのプロットに従って適切かどうかを知りたいです。
私は不均一分散性を本当に理解していません。私のモデルがこのプロットに従って適切かどうかを知りたいです。
回答:
@IrishStatがコメントしたように、観測された値をエラーと照合して、変動性に問題があるかどうかを確認する必要があります。最後にこれに戻ります。
。OK、これまでのところ、コードでそれを見てみましょう:
set.seed(1); #set the seed for reproducability
N = 100; #Sample size
x = runif(N) #Independant variable
beta = 4; #Regression coefficient
epsilon = rnorm(N); #Error with variance 1 and mean 0
y = x * beta + epsilon #Your generative model
lin_mod <- lm(y ~x) #Your linear model
そう、私のモデルはどのように振る舞いますか:
x11(); par(mfrow=c(1,3)); #Make a new 1-by-3 plot
plot(residuals(lin_mod));
title("Simple Residual Plot - OK model")
acf(residuals(lin_mod), main = "");
title("Residual Autocorrelation Plot - OK model");
plot(fitted(lin_mod), residuals(lin_mod));
title("Residual vs Fit. value - OK model");
次のようになります: つまり、あなたの残差はあなたの任意のインデックスに基づいて明白な傾向を持たないように見えます(1番目のプロット-実際には最も情報が少ない)、それらの間には本当の相関がないようですおそらく等分散性よりも重要です)、その近似値には明らかな失敗の傾向がありません。近似値と残差は非常にランダムに見えます。これに基づいて、残差がどこでも同じ分散を持っているように見えるため、不均一分散の問題はないと言います。
でも、あなたは不均一分散性が必要です。線形性と加法性の同じ仮定が与えられた場合、「明らかな」異分散性問題を持つ別の生成モデルを定義しましょう。つまり、いくつかの値の後、私たちの観察ははるかにうるさくなるでしょう。
epsilon_HS = epsilon;
epsilon_HS[ x>.55 ] = epsilon_HS[x>.55 ] * 9 #Heteroskedastic errors
y2 = x * beta + epsilon_HS #Your generative model
lin_mod2 <- lm(y2 ~x) #Your unfortunate LM
ここで、モデルの簡単な診断プロット:
par(mfrow=c(1,3)); #Make a new 1-by-3 plot
plot(residuals(lin_mod2));
title("Simple Residual Plot - Fishy model")
acf(residuals(lin_mod2), main = "");
title("Residual Autocorrelation Plot - Fishy model");
plot(fitted(lin_mod2), residuals(lin_mod2));
title("Residual vs Fit. value - Fishy model");
次のようになります。 ここでは、最初のプロットは少し「奇妙」に見えます。小さいマグニチュードでクラスター化するいくつかの残差があるように見えますが、それは必ずしも問題ではありません... 2番目のプロットはOKです。つまり、異なるラグの残差間に相関がないので、しばらく息を吸うかもしれません。そして、3番目のプロットは豆をこぼします。より高い値になると、残差が爆発することは明らかです。このモデルの残差には間違いなく不均一分散性があり、何かをする必要があります(例:IRLS、Theil–Sen回帰など)。
ここでは問題は本当に明らかでしたが、他のケースでは見逃していたかもしれません。それを逃す可能性を減らすために、別の洞察に満ちたプロットがIrishStatによって言及されたものでした:残差対観測値、または手元のおもちゃの問題:
par(mfrow=c(1,2))
plot(y, residuals(lin_mod) );
title( "Residual vs Obs. value - OK model")
plot(y2, residuals(lin_mod2) );
title( "Residual vs Obs. value - Fishy model")
次のようになります:
あなたの状況の公平さにおいて、あなたの残差対適合値のプロットは相対的なOKのようです。残差と観測値を確認することは、おそらく安全な側にいることを確認するのに役立つでしょう。(QQプロットやそのようなものについては、これ以上混乱しないように言及しませんでしたが、それらも簡単に確認することをお勧めします)。
あなたの質問は不均一分散に関するもののようです(名前で言及し、タグを追加したため)プロット"。異分散性を評価することよりも、モデルが不適切であるかどうかを判断すること以上のものがあります。
このWebサイト(ht @Alexis)を使用してデータをスクレイピングしました。データはの昇順でソートされていることに注意してくださいfitted
。回帰と左上のプロットに基づいて、それは十分に忠実であるようです:
mod = lm(residuals~fitted)
summary(mod)
# ...
# Residuals:
# Min 1Q Median 3Q Max
# -0.78374 -0.13559 0.00928 0.19525 0.48107
#
# Coefficients:
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) 0.06406 0.35123 0.182 0.856
# fitted -0.01178 0.05675 -0.208 0.836
#
# Residual standard error: 0.2349 on 53 degrees of freedom
# Multiple R-squared: 0.0008118, Adjusted R-squared: -0.01804
# F-statistic: 0.04306 on 1 and 53 DF, p-value: 0.8364
ここには異分散の証拠は見当たりません。右上(qqプロット)からも、正規性の仮定に問題はないようです。
一方、赤の低い適合(左上のプロット)の「S」曲線、およびacfおよびpacfプロット(下部)は問題があるように見えます。左端では、ほとんどの残差が灰色の0線より上にあります。右に移動すると、残差の大部分が0を下回り、次に上に、そして再び下に下がります。この結果、特定の残差を見ていて、負の値を持っていると言った場合(ただし、どの残差を見ているかはわかりませんでした)、近くの残差を正確に推測できます負の価値もありました。言い換えれば、残差は独立していません-あるものについて何かを知ると、他の人についての情報が得られます。
プロットに加えて、これをテストできます。簡単なアプローチは、実行テストを使用することです:
library(randtests)
runs.test(residuals)
# Runs Test
#
# data: residuals
# statistic = -3.2972, runs = 16, n1 = 27, n2 = 27, n = 54, p-value = 0.0009764
# alternative hypothesis: nonrandomness
これの意味するところは、モデルが誤って指定されているということです。関係には2つの「ベンド」があるため、を追加する必要があります。ため、モデルに用語をして、そのことを説明します。
明確な質問に答えるには:プロットは、自己相関/残差の非独立性を示します。これは、モデルが現在の形式では適切でないことを意味します。