Photo by Ian Parker on Unsplash
の続きです。
今回は、R言語のlm()関数で重回帰分析をしてみます。
前回までは、sougou: 総合をhouse: 住居、utility: 水道・光熱費とそれぞれ一つの説明変数で回帰分析していました。今回は、house: 住居と utility: 水道・光熱費を同時に説明変数にして回帰分析します。
utility: 水道・光熱費は単回帰分析のときは有意な説明変数ではありませんでしたが、house: 住居と一緒に重回帰分析をすると有意な説明変数になるのですね。
前回と同じように、SST(Total Sum of Squares), SSE(Explained Sum of Squares), SSR(Residual Sum of Squares), R2(R-Squared)を計算しました。
R2が0.688と算出されましたが、summary()関数での出力結果のR2と同じ値になりました。
続いて、SER(Standard Error of the Regression)を計算しました。
SERは0.884と計算されました。これもsummary()関数の出力結果と一致しました。
Adjusted R-squaredを計算してみます。Adjusted R-squaredは説明変数の数を調整したR2です。
0.6867と算出されました。これもsummary()関数の出力結果と一致しました。
次は、それぞれの説明変数のStandard Error を計算してみます。
house: 住居のStandard Error から計算してみます。
単回帰分析のStandard Error と違うのは、house: 住居をその他の説明変数(今回はutility: 水道・光熱費だけですが)で回帰分析をしてそのR2を利用することですね。分子のほうにこのR2が入っていて、1 - R2_house となっていますから、このR2が大きくなればなるほど、つまり対象の説明変数がその他の説明変数と相関が大きくなればなるほどStandard Error の値も大きくなる、ということですね。0.004817 と算出されました。
これも、summary()関数の出力結果と一致しました。
utility: 水道・光熱費のStandard Error も計算してみます。
0.00839 と算出されました。これもsummry()関数の出力結果と一致します。
回帰分析の特徴である、残差の平均値が 0 であることを確認します。
次は、残差が Homoskedasticity であるかどうかを確認します。残差の2乗が house: 住居、utility: 水道・光熱費と関係なければ Homoskedasticity です。日本語だと、等分散、分散の均一性といいますね。
house: 住居のp値が0.0122と0.05 よりも小さく、回帰式全体のp値も0.04282 と0.05よりも小さいので、Homoskedasticity ではなくて、Heteroskedasticity ですね。
なので、通常のStandard Error よりも Heteroskedasticity-Robust Standard Error のほうがより適切です。carパッケージとlmtestパッケージを読み込んで、Heteroskedasticity Robust Standard Error を求めてみます。
coeftest()関数で Standard Error を出力します。
上のものが通常の Standard Error で、下のものが Heteroskedasticity-Robust Standard Error です。house: 住居のほうはHeteroskedasticity-Robust のほうが小さくなって、utility: 水道・光熱費のほうは大きくなっていますが、p値の結論はかわらず、どちらの説明変数も有意な説明変数です。
最後に3Dの散布図を描いてみましょう。scatterplot3dパッケージのscatterplot3d()関数を使うのが簡単です。
今回は以上です。
初めから読むには、
です。