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

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

都道府県別の人口密度、総所得増加率、自殺者数のデータの分析5 - R でパネルデータ分析 Fixed Effects Regression

(Bing Image Creator で生成: Close up of yellow Acacia dealbata flowers, background is green woods and blue sky, photo)

www.crosshyou.info

の続きです。

今回は、パネルデータ分析をしてみます。

参考ウェブサイトは、

www.econometrics-with-r.org

です。

まず、jisatsu, mitsudo, growth の揃っているデータフレームだけを作成します。

plm パッケージを読み込みます。

pdata.frame() で df_nona をパネルデータフレームに変換します。

n = 47 は47の都道府県があるということ、T = 2 は年度が2005年と2010年であることを表しています。

これから係数を推定しようとするモデルは、

jisatsu = beta1 * mitsudo + beta2 * growth + prefの固定効果 + yearの固定効果 + 誤差項

になります。

lm() 関数を使う方法は、

mitsudo の係数は 0.007646, growth の係数は -0.141477 です。人口密度が高いほど、自殺者の数が増えるという前回と逆の結果となりました。総所得増加率が高いほど、自殺者数が減るということですね。

plm() を使う方法は、

lm() を使う方法と同じ係数になります。

この係数が統計的に有意にゼロと違うかどうかチェックします。

AER パッケージを読み込みます。

coeftest() でゼロと違うかどうかをチェックします。

mitsudo の p値は 0.013 で、growth の p値は 0.095 です。

mitsudo は5%水準で有意な値、growth は 10%水準で有意な値です。

mitsudo は1平方キロメートル当たりの人口密度、jisatsu は人口10万人当たりの自殺者数です。

1平方キロメートル当たりの人口密度が一人増えると、人口10万人当たりの自殺者数が0.007645人増える、ということですね。

人口密度が10人増えると自殺者数は0.07645人増える、

100人だと0.7645人増える、

1000人だと7.645人増える、ということですね。

このデータの最小の人口密度は3317人、最大は12022人、平均は5488人です。

このデータの最小の自殺者数は19.3人、最大は39.2人、平均は24.76人です。

人口密度の効果は結構ばかにならないように見えます。

growth は総所得増加率でパーセント表示です。

1パーセントポイント上昇すると、自殺者数は0.1414人減るということですね。

growth の最小値は -3.5, 最大値は 8.7, 平均は 3.3です。

8.7 * 0.1414 = 1.23 ぐらいです。総所得増加率の効果はそれほど大きくないように見えます。

今回は以上です。

初めから読むには、

www.crosshyou.info

です。

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

#
# jisatsu, mitsudo, growth が揃っているデータフレームを作成
df_nona <- df_raw |> 
  na.omit()
summary(df_nona)
#
# plm パッケージを読み込む
library(plm)
#
# panel data frame に変換
pdf <- pdata.frame(df_nona,
                   index = c("pref", "year"))
pdim(pdf)
#
# lm() を使う方法
fe_lm_mod <- lm(jisatsu ~ mitsudo + growth + pref + year - 1,
                data = pdf)
fe_lm_mod
#
# plm() を使う方法
fe_plm_mod <- plm(jisatsu ~ mitsudo + growth,
                  data = pdf,
                  index = c("pref", "year"),
                  model = "within",
                  effect = "twoways")
fe_plm_mod
#
# AERパッケージを読み込む
library(AER)
#
# 係数がゼロと違うかどうか
coeftest(fe_plm_mod, vcov = vcovHC, type = "HC1")
#