www.crosshyou.info

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

都道府県別の1人当り最終エネルギー消費量のデータ分析3 - R言語のlm関数で重回帰分析。scatterplot3d関数で3次元散布図

 

www.crosshyou.info

 の続きです。

今回はR言語のlm関数で重回帰分析をしてみたいと思います。

まず、対数変換後のavgPr(15-64歳人口割合の9年間の平均)、avgSh(1人当り県民所得の9年間の平均)、avgEn(1人当り最終エネルギー消費量)のヒストグラムをhist関数で描いてみます。

f:id:cross_hyou:20200325192550p:plain

f:id:cross_hyou:20200325192601p:plain

log(avgEn)がresponse variable(反応変数)で、log(avgPr)とlog(avgSh)explanatory variables(説明変数)です。

それぞれログをとった変数をlogdfという名前のデータフレームに格納してしまいます。

f:id:cross_hyou:20200325193052p:plain

データフレームは、data.frame関数で作成できます。

それでは、lm関数で重回帰分析をしてみます。

f:id:cross_hyou:20200325193329p:plain

一番下の行にあるp-valueは0.04276と0.05よりも小さいですから有意なモデルです。でも、各説明変数の係数のp値は0.05以上ですね。

とりあえず、p値が一番大きいPrを外したモデルを考えてみます。

f:id:cross_hyou:20200325193647p:plain

p値は0.7082と0.05よりも大きいので、model1とmodel2に有意な違いは無いことがわかりました。model2を見てみましょう。

f:id:cross_hyou:20200325193844p:plain

p値は0.02001とmodel1よりも小さいですね。すべての説明変数の係数のp値も0.05以下なので有意です。でも、R-squaredが0.2024なので、説明力は低いですね。

I(Pr^2)とShの交互作用を加えてみます。

f:id:cross_hyou:20200325194247p:plain

p値は0.7273なので0.05よりも大きいので、加えても意味なかったですね。それでは、I(Pr^2):I(Sh^2)を加えてみます。

f:id:cross_hyou:20200325194554p:plain

これも意味なかったですね。

それでは、Sh:I(Sh^2), つまりI(Sh^3)を加えてみます。

f:id:cross_hyou:20200325194810p:plain

これも意味なかったですね。model2がいいということですね。

せっかくなので、3次元散布図を描いてみます。

stats.biopapyrus.jpのサイトを参考にしました。ありがとうございます。

まず、scatterplot3dというパッケージをインストールする必要があるそうです。

f:id:cross_hyou:20200325195609p:plain

library関数でこのパッケージを読込みます。

f:id:cross_hyou:20200325195725p:plain

あとは、scatterplot3d関数で3次元散布図が出来上がります。

f:id:cross_hyou:20200325200930p:plain

f:id:cross_hyou:20200325200941p:plain

Z軸をEnではなくて、モデルで予測した値にしましょう。model2$fitted.valuesにすればいいです。

f:id:cross_hyou:20200325201843p:plain

どうでしょうか?モデルの予測値のほうが実際の値よりもバラツキが小さいようですね。

最後にmodel2の残差プロットを見てみます。

f:id:cross_hyou:20200325202131p:plain

大分県、岡山県、山口県は前回の分析でもそうでしたがこの残差プロットでも外れていますね。

今回は以上です。