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

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

都道府県別の15歳~64歳人口割合、1人当たり県民総所得、1人当たり最終エネルギー消費のデータの分析5- R で重回帰分析、1人当たり最終エネルギー消費の県民総所得に対する影響

(Bing Image Creator で生成: プロンプト: Close up of yellow Pieris japonica flowers, background is great long river and blue sky, photo)

 

www.crosshyou.info

の続きです。

今回は前回の線形回帰分析の説明変数に、enegy: 1人当たり最終エネルギー消費を加えてみます。

早速やってみましょう。

energy の係数は 1.309 です。popratio がかわらないまま、1人当たり最終エネルギー消費が 1 ギガ・ジュール増えると、1人当たり県民総所得が 1309 円増える、ということです。

1ギガ・ジュールってどのくらいなのでしょうね。Copilotに聞いてみたら、

2億3900万カロリー!!だそうです。すごいですね。energy の平均値は、112ほどでしたので、平均よりも1%弱増えると1309円増えるという感覚です。

model3のサマリーを確認しましょう。

popratio の係数が 53.5791 と energy を入れないときよりも大きな係数になりました。

energy の p値は 0.077843 なので 5%水準では有意ではないですが、10%水準では有意ですね。

plot() 関数でグラフをみます。

左側のグラフをみるかぎり、Heteroskedasticity(残差の不均一分散)ではないようです。

Breush-Pagan Test をして確認します。

p-value は 0.6579 なので、Heteroskedasticity(残差の不均一分散)ではないです。

残差の2乗を回帰分析して確認する方法でもやってみます。

p-value は 0.6793 でした。

実際の income の値と model3 の推定値を散布図にしてみます。

沖縄県は、モデルの推計値よりも実際の income が小さく、愛知県はその反対にモデルの推計値よりも実際の income が大きいことがわかります。

最後に stargazer() 関数で model1, model2, model3 を比較してみます。

Adjusted R2 を比べると、model3 が 0.723 と一番大きな値です。

今回は以上です。

次回は

www.crosshyou.info

です。

 

初めから読むには、

www.crosshyou.info

です。

今回のコードは以下になります。

#
# model2 に energy を追加
model3 <- lm(income ~ popratio + tokyo + energy,
             data = df_2020)
model3
#
# model3 のサマリー
summary(model3)
#
# model3 のプロット
par(mfrow = c(2, 2))
plot(model3)
par(mfrow = c(1, 1))
#
# Breush-Pagan Test
lmtest::bptest(model3)
#
# model3 の残差の2乗を popratio, tokyo, energy で回帰分析
lm(I(model3$residuals^2) ~ popratio + tokyo + energy,
   data = df_2020) |> 
  summary()
#
# 実際の income と model3 の予測の income
tibble(actual_income = df_2020$income,
       estimated_income = model3$fitted.values,
       pref = df_2020$pref) |> 
  ggplot(aes(x = actual_income, y = estimated_income)) +
  geom_point(color = "red") +
  geom_text(aes(label = pref), hjust = 0.5, vjust = -0.5, alpha = 0.3) +
  geom_abline(intercept = 0, slope = 1) +
  theme_bw()
#
# model1, model2, model3 の比較
stargazer(model1, model2, model3, type = "text")
#