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

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

都道府県別の道路平均交通量の分析8 - Heteroskedasticity の判断と Weighted Least Squares Estimation

(Bing Image Creator で生成: プロンプト: Landscape scenery of flowering  Dahila, background is blue sky and beautiful liver, photo)

www.crosshyou.info

の続きです。

今回は、回帰分析では欠かせない Heteroskedasticity のチェックをします。

2020年度のkotsuを2015年度の交通で回帰するモデルを考えます。

この回帰モデルの残差の2乗をu_sqという名前で保存します。

このu_sqがkotsu2015と関連していたら、Heteroskedasticityということです。

kotsu2015の係数は5.380で、p値は0.000237となっています。つまり、kotsu2015が大きいほどu_sqも大きい、つまり、kotsu2015が大きいほど残差の分散も大きい、ということなので、明らかにHeteroskedasticityがあります。

なので、kotsu = beta0 + beta1 * kotsu2015 + u をOLS(Ordinary Least Squares)で推定するより、WLS(Weighted Least Squares)で推定したほうがいいとなります。

Wooldridge の Introductory Econometrics A Modern Approace 7e

の 8-4b The Heteroskedasticity Function Must Be Estimated:Feasible GLS のセクションにその方法が書かれています。

ステップ1は、kotsu ~ kotsu2015をOLSで推定してその残差を保存します。

ステップ2は、その残差の2乗の対数を計算します。

ステップ3は、ステップ2の残差の2乗の対数をkotsu2015で回帰します。そしてその回帰モデルの予測値をgとして保存します。

ステップ4は、gをexp()関数で処理します。そしてそれをhとします。

ステップ5は、kotsu ~ kotsu2015を (1 / h)でウェイトをつけて回帰分析です。

kotsu = -130 + 0.981 * kotsu2015 + u という回帰式が推定できました。

今回は以上です。

初めから読むには、

www.crosshyou.info

です。

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

#
# kotsu ~ kotsu2015のモデル
model_8 <- lm(kotsu ~ kotsu2015, data = df_2020)
summary(model_8)
#
# model_8のu^2を定義
u_sq <- resid(model_8)^2
#
# u_sq ~ kotsu2015のモデル
model_usq <- lm(u_sq ~ kotsu2015, data = df_2020)
summary(model_usq)
#
# Heteroskedasticityがあるので、A Feasible GLS
# Step 1 kotsu ~ kots2015をOLSで推定して、残差を保存
u_hat <- resid(lm(kotsu ~ kotsu2015, data = df_2020))
#
# Step 2 u_hatを2乗して対数にする
log_u_hat_sq <- log(u_hat^2)
#
# Step 3 log_u_hat_sq を kotsu2015で回帰分析して、予測値をgとする
g <- fitted(lm(log_u_hat_sq ~ kotsu2015, data = df_2020))
#
# Step 4 gをexp()で処理
h <- exp(g)
#
# Step 5 kotsu ~ kotsu2015を 1/ h でウェイトして推定
model_gls <- lm(kotsu ~ kotsu2015, data = df_2020, weights = 1 / h)
summary(model_gls)
#