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

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

都道府県別の道路平均交通量の分析5 - 単回帰分析の level - level, level - log, log - level, log - log モデルの解釈の方法

(Bing Image Creator で生成: プロンプト: Close up photograph of Cornus florida flowers, the tree is standing on the top of high mountains, photo)

www.crosshyou.info

の続きです。

今回も Wooldridge の Introductory Econometrics: A modern Approach, 7eを教科書にして回帰分析をしてみます。

今回は37ページ目から始まっている2-4b Incorporating Nonlinearities in Simple Regressionの部分をやります。ここでは説明変数、被説明変数を対数変換したら、モデル式はどういう解釈になるか、ということが書かれています。

はじめはlevel -level モデルです。これは前回と同じモデルで、説明変数も被説明変数もそのままの値のモデルです。

kotsu = 3543 + 1.69 * pop1000 + u

という式になります。これは、pop1000が1上がったら、kotsuが1.69増える、という解釈ですね。Δkotsu = 1.69 * Δpop1000です。pop1000 = 1ということは、1000人です。人口が1000人増えたら、交通量は1.69台増える、ということです。これは特に

次はlevel - log モデルです。

kotsu = -16470 + 3256 * log(pop1000) + u です。

Δkotsu = 3256 * Δlog(pop1000) です。これは式を変形すると、

Δkotsu = (3256 / 100) * %Δpop1000 になります。もう少し式を変形すると、

Δkotsu = 32.56 * %Δpop1000 になります。pop1000が1%増えると、kotsuが32.56台増える、ということです。これは本当にそうなのか検証の必要がありますね。

pop1000の平均値が1551.548なので、pop1000 = 1500でやってみました。

pop1000 = 1500 のとき、kotsu = 7344.04台でした。

1500の1%増えた値、pop1000 = 1515にしたとき、kotsu = 7376.441台でした。

なので、kotsuの増加は、7376.441 - 7344.04 = 32.401となりました。

モデルは32.56台増えるという解釈なので、ほぼ一致してます。

次は、log-levelモデルです。

log(kotsu) = 8.3065 + 0.0002017875 * pop1000 + u です。

これは、Δlog(kotsu) = 0.0002017875 * Δpop1000 です。この式を変形すると、

%Δkotsu = 100 * 0.0002017875 * Δpop1000 です。式をさらに変形すると、

%Δkotsu = 0.02017875 * Δpop1000 です。pop1000が1増えると、kotsuが0.02017875%増える、という解釈です。これも検証が必要ですね。

pop1000 = 1500 のとき、kotsu = 5481.904で、pop1000 = 1501 のとき、kotsu = 5483.01でした。増加率は0.02017547%です。検証できました。
そして、最後はlog-log modelです。

log(kotsu) = 5.7 + 0.42 * log(pop1000) + u です。

これは、Δlog(kotu) = 0.42 * Δlog(pop1000)です。式を変形すると。

%Δkotsu = 0.42 * %Δpop1000 です。pop1000が1%増えると、kotsuは0.42%増える、という解釈です。検証してみましょう。

pop1000 = 1500 のとき、kotsu = 6448.008です。pop1000 = 1515のとき、kotsu = 6475.012です。kotsuは0.418796%増えました、ほぼ0.42%ですね。検証できました。

今回は以上です。

次回は

www.crosshyou.info

です。

 

初めから読むには、

www.crosshyou.info

です。

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

#
# level-level model
model_lev_lev <- lm(kotsu ~ pop1000, data = df_2020)
summary(model_lev_lev)
#
# level-log model
model_lev_log <- lm(kotsu ~ log(pop1000), data = df_2020)
summary(model_lev_log)
#
# level-log modelの検証
# pop1000 = 1500のとき
-16470 + 3256.3 * log(1500)
#
# pop1000 = 1515(1500+1%)
-16470 + 3256.3 * log(1515)
#
# kotsuの増加台数
7376.441 - 7344.04
#
# log-level model
model_log_level <- lm(log(kotsu) ~ pop1000, data = df_2020)
summary(model_log_level)
coef(model_log_level)
#
# log-levelの検証
# pop1000 = 1500のとき
predict(model_log_level, newdata = data.frame(pop1000 = 1500)) |> 
  exp()
#
# pop1000 = 1501のとき
predict(model_log_level, newdata = data.frame(pop1000 = 1501)) |> 
  exp()
#
(5483.01 / 5481.904 - 1) * 100
#
# log-log model
model_log_log <- lm(log(kotsu) ~ log(pop1000), data = df_2020)
summary(model_log_log)
#
# log-log modelの検証
# pop = 1500のとき
predict(model_log_log, newdata = list(pop1000 = 1500)) |> 
  exp()
#
# pop = 1515のとき
predict(model_log_log, newdata = list(pop1000 = 1515)) |> 
  exp()
#
(6475.012 / 6448.008 - 1) * 100
#