Rで何かをしたり、読書をするブログ

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

都道府県別の工業統計調査のデータの分析6 - Rのlm()関数で線形回帰分析を実行して、Heteroskedasticityをチェックした。

UnsplashEugene Golovesovが撮影した写真 

www.crosshyou.info

の続きです。

今回は、Rで回帰分析をしてみたいと思います。

被説明変数を gdp : 県内総生産額にして、説明変数を num_jin, sta_num, sal_sta, inp_num, out_inp, add_staにしてみます。

まず、変数どうしの相関係数を確認します。

一番相関係数の高いペアはsta_numとinp_numの0.699です。多重共線性の心配はないようです。

Rでは、lm()関数で簡単に回帰分析ができます。

結果は、summary()関数で見ることができます。

一番下にあるp-valueの値が、このモデル全体のp値になります。2.826e-07と0.01よりもかなり低いので、このモデルは有意なモデルです。

係数の値が大きくて読みにくいので、gdpの単位を変更します。

gdpは今は百万円単位になっているので、100000で割って1000億円単位にしましょう。

もう一度、lm()関数で回帰分析を実行します。

summary()関数で結果を表示します。

さきほどの結果と比べると、係数や標準誤差の桁数が違うだけで、t値とp値は同じであることがわかります。

p値が0.05よりも小さい統計的に有意な変数は、

num_jin : 人口10万人当たりの事業所数(単位は1事業所)

sta_num : 事業所1か所当たりの従業員数(単位は1人)

sal_sta : 従業員1人当りの給与総額(単位は百万円)

の3つの変数です。

num_jinの係数は、-1.15ですから、人口10万人当たりの事業所が1増えると、他の変数の値が変わらないとすると県内総生産額は1150億円減る、ということです。

sta_numの係数は、-8.54ですから事業所当たりの従業員数が1人増えると、他の変数が変わらないとすると県内総生産額は8540億円減る、ということです。

sal_staの係数は、284です。従業員1人の給与総額が百万円増えると、他の変数が変わらないとすると県内総生産額は28兆4000億円増える、ということです。

線形回帰分析をするときは、一番注意しなければならないのが Heteroskedasticity です。残差の分散が説明変数と関連していてはいけないということです。

残差は、resid()関数で求まります。残差は平均は0なので、残差の2乗は残差の分散です。

チェックしてみましょう。

結果を見ると、残差の2乗は、num_jin, sta_num, sal_staと関連していますね、

つまり、gdp = b0 + b1*num_jin + b2*sta_num + b3*sal_sta + b4*inp_num + b5*out_inp + b6*add_sta + u のモデルは、Heteroskedasticity になっているので、線形回帰分析では正しく係数を推計できない、ということです。

どうしましょうか。。。次回考えましょう。

今回は以上です。

次回は

www.crosshyou.info

です。

初めから読むには、

www.crosshyou.info