上級マクロ経済学

第8回 回帰分析

Author

荻巣嘉高

1 単回帰モデル

回帰関数

回帰関数

確率変数Xの値がxであったとき、平均的にYがどの程度になるかを示す関数を回帰関数h(X)と言う。 これは、条件付き期待値で表される h(X) = E(Y| X)

線形単回帰モデル

線形単回帰モデル

E(Y| X) = \beta_0 + \beta_1 X

  • 単回帰モデルは、変数が一つ。
  • 線形モデルは1次関数。

  • 単回帰分析はこれを仮定しています。

例:能力と賃金

E(実質賃金| 労働生産性) = \beta_0 + \beta_1 労働生産性

労働生産性
労働者一人が1時間でどれだけの価値を生産できるか。

誤差項と回帰モデル

実際の変数間の関係が1次関数であるとは限らない。 そのため、誤差項uを用いて、次のようにモデルを仮定する。

Y = \beta_0 + \beta_1 X + u

  • 両辺について、Xを条件づけた期待値を取れば、

. . .

E(Y|X) = \beta_0 + \beta_1 X + E(u|X)

  • E(u|X)=0が成立すると仮定すると、

. . .

E(Y|X) = \beta_0 + \beta_1 X

となり、線形回帰モデルとして解釈できる。

回帰モデルの用語

Y = \beta_0 + \beta_1 X + u

  • X説明変数あるいは独立変数と呼ばれる。
  • Y被説明変数あるいは従属変数と呼ばれる。
  • 回帰係数\beta_1がわかれば、Xが1単位上昇したときに、Yがどれくらい増える(減る)かがわかる。

. . .

\beta_1の値に関心がある

  • これをデータから推計するのが回帰分析

2 直線の当てはめ

最小二乗法

データが与えられた時に、最も当てはまりの良い直線を選ぶのが、最小二乗法

2025-09-13T13:04:20.640891 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

2020年 労働生産性(円/時間) 賃金所得(千円)
0 北海道 8997.702921 4232.5
1 青森 8946.026251 3667.9
2 岩手 8336.011457 3790.4
3 宮城 8875.070576 4459.4
4 秋田 8700.560140 3758.0
5 山形 8154.747457 3868.4
6 福島 9391.495832 4126.0
7 茨城 10961.847154 4828.8
8 栃木 9837.563869 4570.5
9 群馬 9363.880300 4566.1
10 埼玉 9399.600963 4665.6
11 千葉 10106.490775 4756.1
12 東京 10052.449825 5952.4
13 神奈川 9230.573427 5369.7
14 新潟 8258.925215 3981.7
15 富山 8927.186234 4585.0
16 石川 8293.178123 4510.7
17 福井 10523.762093 4340.2
18 山梨 11092.570139 4620.2
19 長野 9867.076495 4475.1
20 岐阜 9516.513560 4549.4
21 静岡 9724.677147 4651.9
22 愛知 10036.033945 5133.8
23 三重 11038.813552 4755.0
24 滋賀 11684.668761 4862.2
25 京都 9967.990688 4900.6
26 大阪 8074.419289 5042.4
27 兵庫 10482.963000 4848.7
28 奈良 10584.334912 4610.7
29 和歌山 10983.142948 4347.5
30 鳥取 7679.885745 4014.7
31 島根 9470.007380 4010.3
32 岡山 8600.643622 4421.0
33 広島 8879.207215 4668.1
34 山口 11201.411321 4536.7
35 徳島 12309.294291 4236.5
36 香川 8999.513429 4419.3
37 愛媛 8365.670733 4082.0
38 高知 9352.010593 3922.4
39 福岡 8388.697603 4435.6
40 佐賀 8592.664745 3973.1
41 長崎 8652.119309 3955.7
42 熊本 8628.955241 4106.3
43 大分 9964.425198 4049.3
44 宮崎 8014.619457 3840.2
45 鹿児島 9279.043083 3979.1
46 沖縄 8043.928221 3740.3

データとモデル

いま、(Y,X)について得られたN個のデータを(y_i, x_i )とする。 このiについての誤差項をu_iとすれば、仮定したモデル Y = \beta_0 + \beta_1 X + u

に従って、

y_i = \beta_0 + \beta_1 x_i + u_i

が得られる。

直線の方程式

当てはめる直線を

Y = \beta_0 + \beta_1 X

としてやれば、X=x_iの時のYの値を\hat{y}_iとして、

\hat{y}_i = \beta_0 + \beta_1 x_i

とできる。

  • このとき、一般にy_i = \hat{y}_i(観測値=推測値)となるとは限らない。

誤差

y_i\hat{y}の差が誤差として考えられる。

  • y_iはデータから得られている。
  • \hat{y}_iは、\beta_0\beta_1適当に定めれば、X_iから計算される。

. . .

\begin{aligned} y_i - \hat{y}_i &= (\beta_0 + \beta_1 x_i + u_i)- (\beta_0 + \beta_1 x_i ) \\ &= u_i \end{aligned}

最小二乗法の目的関数

最小二乗法の目的関数Oは、次のように定められる。 \begin{aligned} O(\beta_0, \beta_1) &= \sum_{i=1}^{N} u_i^2 \\ &= \sum_{i=1}^{N} (y_i - \beta_0 - \beta_1 x_i)^2 \end{aligned}

  • このOを最小化するように(\beta_0, \beta_1)を定める。
  • 最小二乗法によって推定された(\beta_0, \beta_1)をそれぞれ(\hat{\beta}_0, \hat{\beta}_1)と表す。
  • (\hat{\beta}_0, \hat{\beta}_1)は最小二乗推定量、あるいはOLS推定量とか呼ばる。

最小二乗推定量の導出

Oを最小化するための条件(一階の条件)は、

\begin{aligned} \frac{\partial O(\beta_0, \beta_1)}{\partial \beta_0} = - \sum_{i} 2 (y_i - \beta_0 - \beta_1 x_i) &= 0 \\ \frac{\partial O(\beta_0, \beta_1)}{\partial \beta_1} = - \sum_{i} 2 x_i (y_i - \beta_0 - \beta_1 x_i) &= 0 \end{aligned}

  • O(\beta_0, \beta_1)\beta_0\beta_1それぞれについて下に凸なので、二階の条件も満たされる。

OLS推定量

\hat{\beta}_1 = \frac{\sum_{i=0}^N (y_i-\bar{y})(x_i-\bar{x}) }{\sum_{i=0}^N (x_i-\bar{x})^2} \hat{\beta}_0 = \bar{y} - \hat{\beta}_1 \bar{x}

  • データの集合\{(x_i, y_i)\}_iが得られれば、これらは計算可能。
  • \{(x_i, y_i)\}_iは、母集団から確率的にドローされた集合だと考えられるので、(x_i, y_i)確率変数
  • 確率変数の関数になっている\hat{\beta}_0, \hat{\beta}_1確率変数である。
推定量の求め方についてはこちら

一本目の式から、

\begin{aligned} \sum_i (y_i - \beta_0 - \beta_1 x_i ) &= 0 \\ \Longrightarrow ~ \sum_i y_i - \beta_0 N - \beta_1 \sum_i x_i &= 0 \\ \Longrightarrow ~ \frac{\sum_i y_i}{N} - \beta_0 - \beta_1 \frac{\sum_i x_i}{N} &= 0 \\ \Longrightarrow ~ \bar{y} = \beta_0 + \beta_1 \bar{x} & \\ \end{aligned}

二本目の式にこれを代入して計算すれば、

\begin{aligned} 左辺 &= \sum_{i} x_i \left[ y_i - (\bar{y} - \beta_1 \bar{x}) - \beta_1 x_i \right] \\ &= \sum_{i} x_i \left[ (y_i - \bar{y}) - \beta_1 ( x_i - \bar{x}) \right] 0 \\ &= \sum_{i} (x_i - \bar{x}) \left[ (y_i - \bar{y}) - \beta_1 ( x_i - \bar{x}) \right] \\ & ~ + \sum_{i} \bar{x} \left[ (y_i - \bar{y}) - \beta_1 ( x_i - \bar{x}) \right] \\ &= \sum_{i} (x_i - \bar{x}) \left[ (y_i - \bar{y}) - \beta_1 ( x_i - \bar{x}) \right] \\ & ~ + \bar{x} \left[ \left(\sum_{i} y_i - N\bar{y}\right) - \beta_1 \left( \sum_{i} x_i - N \bar{x}\right) \right] \\ &= \sum_{i} (x_i - \bar{x}) \left[ (y_i - \bar{y}) - \beta_1 ( x_i - \bar{x}) \right] \\ & ~ + \bar{x} N \left[ \underbrace{\left(\bar{y} - \bar{y}\right) - \beta_1 \left( \bar{x} - \bar{x}\right)}_{=0} \right] \\ &= \sum_{i} (x_i - \bar{x}) \left[ (y_i - \bar{y}) - \beta_1 ( x_i - \bar{x}) \right] \\ \therefore &\sum_{i} (x_i - \bar{x}) \left[ (y_i - \bar{y}) - \beta_1 ( x_i - \bar{x}) \right] = 0 \end{aligned} これを整理して、 \begin{aligned} \beta_1 \sum_{i} (x_i - \bar{x})^2 = \sum_{i} (x_i - \bar{x}) (y_i - \bar{y}) \\ \beta_1 = \frac{\sum_{i} (x_i - \bar{x}) (y_i - \bar{y})}{\sum_{i} (x_i - \bar{x})^2} \\ \end{aligned}

OLSの仮定

いくつかの仮定のもと、OLS推定量は統計的に望ましい性質を持つ。

(A1) 無作為標本の仮定

データ(y_i, x_i)は独立かつ同一な分布に従い、 y_i = \beta_0 + \beta_1 x_i + u_i を満たす。

  • クロスセクションデータなら満たされる場合も多い。
  • 時系列データだと満たされない場合が多い。
(A2) 外生性

誤差項について、Xの条件付き期待値はゼロ。 E(u_i | x_i) = 0

  • モデルではx_i以外のy_iへ影響を与える要因が全て、u_iに含まれている。
  • u_iが(平均的には)x_iと無関係である、ということを意味している。
(A3) 4次モーメントの有限性

x_iu_iの4次モーメントが有限 0 < E(x_i^4)< \infty, ~ 0< E(u_i^4) < \infty

  • 平均からひどく離れた値を取りにくいということ。

OLS推定量の性質

先の仮定のもと、次の性質が成り立つ。

不偏性

E(\hat{\beta}_0) = \beta_0

E(\hat{\beta}_1) = \beta_1

  • 言葉で言えば、推定された値(確率変数\hat{\beta}_0, \hat{\beta}_1)の期待値がモデルの真の値\beta_0, \beta_1と等しくなる、ということです。

さらに、標本のサイズが十分に大きければ、次の性質が成り立つ。

一致性

\hat{\beta}_0 \overset{p}{\to} \beta_0

\hat{\beta}_1 \overset{p}{\to} \beta_1

ここで、\overset{p}{\to}は確率収束を表す。

  • 確率収束は、サンプルサイズ(N)が大きくなるにつれてある値に近づいていくことを表しています。
  • 詳しく知りたい人は、統計学あるいは計量経済学の中級〜上級のテキストを参照してください。
漸近正規性

\sqrt{\frac{N}{V_0}} (\hat{\beta}_0 - \beta_0) \overset{d}{\to} \mathcal{N}(0,1)

\sqrt{\frac{N}{V_1}} (\hat{\beta}_1 - \beta_1) \overset{d}{\to} \mathcal{N} (0,1)

ここで、\overset{d}{\to}は分布収束を表している。

  • 分布収束は、サンプルサイズ(N)が大きくなるにつれて、左の値(確率変数)が、右に示される確率分布に従うようになることを示している。

  • V_0V_1Xuの期待値、分散などから計算される定数である。

    • この講義では、なんかうまく計算できる定数と考えれば十分です。
  • 推定された\hat{\beta}_1とモデルの真の値\hat{\beta}_1との差(\hat{\beta}_1 - \beta_1)の定数倍が正規分布に近似されるようになる、ということです。

V_0V_1の推定値

V_0V_1は、実はデータからは計算できない。

データから計算できる値でこれらを置き換えれば、 \sqrt{\frac{N}{V_1}} (\hat{\beta}_1 - \beta_1)が計算できる。 これらは、次のように計算される。 \hat{V}_1 = \frac{\frac{1}{N} \sum_{i} (x_i - \bar{x})^2 \hat{u}_i^2}{\left[ \frac{1}{N} \sum_{i} (x_i - \bar{x})^2 \right]^2}

\hat{V}_0 = \frac{\frac{1}{N} \sum_i \hat{H}_i^2 \hat{u}_i^2}{\left( \frac{1}{N} \sum_i \hat{H}^2 \right)^2} ただし、 \hat{H}_i \equiv 1 - \left( \frac{\bar{x} }{\frac{1}{N}\sum_j x_j^2}\right) x_i

こんなの計算して何が嬉しいの?

  • これが計算できると、統計検定ができる。

3 回帰係数の検定

OLSの復習

我々が推計するのは、次の式の係数\beta_0, \beta_1だった。 Y = \beta_0 + \beta_1 X + u

最小二乗法(OLS)によって、\beta_0, \beta_1の推計値である\hat{\beta}_0, \hat{\beta}_1が推計できた。

検定の例

  • 得られたデータから回帰係数\hat{\beta}_1および\hat{V}_1を計算。

OLSで推計された\hat{\beta}_1は、次の性質を持っていた(前回内容)。 t = \sqrt{\frac{N}{\hat{V}_1}} (\hat{\beta}_1 - \beta_1) \sim \mathcal{N}(0,1) \hspace{12pt} (N \to \infty)

ちなみに、\sqrt{\frac{\hat{V}_1}{N}}は標準誤差(の推計値)と呼ばれ、\hat{SE}(\hat{\beta_1})と表される。 これを用いると、 t = \frac{\hat{\beta}_1 - \beta_1}{\hat{SE}(\hat{\beta_1})} \sim \mathcal{N} (0,1) \hspace{12pt} (N \to \infty)

真の値は何か

  • いま、データのサンプルサイズは100(N=100)であるとする。
  • 真の値\beta_1が1だと仮定しよう。
  • このとき、N=100が十分に大きいと考えれば、 t = \frac{\hat{\beta}_1 - 1}{\hat{SE}(\hat{\beta_1})} \sim \mathcal{N}(0,1) となっているはず。

検定のアイデア

  • 推計された\hat{\beta}_1が2.5、\hat{SE}(\hat{\beta_1})が0.5であったとしよう。 t = \frac{2.5 - 1}{0.5} = 3.0

となる。

  • t \sim \mathcal{N}(0,1)より、このt=3.0は、平均0、分散1の正規分布に従って確率的に現れた値であるはず。

「仮定」を疑う

  • 一方で、正規分布\mathcal{N}(0,1)のなかで、t \ge 3.0となる確率は、0.1%程度。
  • これは、ほとんど生じないケースなので、もとの仮定\beta_1=1が妥当でなかった、と考えられる。
  • したがって、「モデルの真の値\beta_1は1ではない」と考えられる。

2025-09-13T13:04:20.788775 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

標準誤差とt統計量

t \equiv \frac{\hat{\beta}_1 - \beta_1}{\hat{SE}(\hat{\beta_1})} t統計量と呼びます。

  • サンプルサイズNが大きければ、t統計量は標準正規分布\mathcal{N}(0,1)に従うとみなせます。
    • OLS推定量の漸近正規性
  • サンプルサイズNが小さいとき、t統計量は自由度N-1t分布に従います。

t分布と標準正規分布

  • N\le 30程度になると、どちらを用いてもほとんど結果に違いはでない。
    • 近年ではサンプルサイズNがあまりにも少ない推計はほとんどない。
    • あまり神経質にならず、標準正規分布を用いて良い。

2025-09-13T13:04:20.841903 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

例:能力と賃金(再考)

E(実質賃金| 労働生産性) = \beta_0 + \beta_1 労働生産性

を思い出そう。

実質賃金をY、労働生産性をXと考える。

Y_i = \beta_0 + \beta_1 X_i + u_i

という関係を仮定しよう。

労働生産性が実質賃金に影響を与えるならば、真のモデルの係数は、

\beta_1 \neq 0

であるはず。

帰無仮説と対立仮説

統計検定は背理法のアイデアで行われていた。 \beta_1 \neq 0 を示したいならば、検定においては、はじめに次の仮説H_0を立てる。 H_0:~\beta_1 = 0 を仮定する。 この仮説H_0帰無仮説と呼ぶ。

. . .

一方、H_0が成立しない時の仮説がH_1 H_1:~\beta_1 \neq 0 この仮説H_1対立仮説と呼ぶ。

  • 検定では、帰無仮説が成り立つとして議論を始める。

有意水準

次の問題は、「どれくらいの確率なら妥当でないだろうと判断するか」。

  • 統計学では経験的に1%、5%、10%などがその確率として使われている。
  • これらの値のことを有意水準と呼ぶ。
  • 有意水準は\alpha = 0.05などで表されることが多い。
  • 片側検定(\beta_1 > 0)と両側検定(\beta_1 \neq 0)ができるが、両者で少し閾値の計算が異なる。
  • この講義では、両側検定を主に扱います。

両側検定の閾値

有意水準\alphaの時の閾値を\alphaパーセントポイント点といったりする。

2025-09-13T13:04:20.896760 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

2025-09-13T13:04:20.924215 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

2025-09-13T13:04:20.952290 image/svg+xml Matplotlib v3.9.2, https://matplotlib.org/

検定の手順

  1. 仮説を立てる。
    • 「AがBに影響を与えているはずだ」というようなもの。
  2. モデルを設定して、帰無仮説と対立仮説を設定する。
    • 真の(\beta_0, \beta_1)などについて、仮説を設定。
  3. 有意水準\alphaを定める。
    • 先に定めることが重要です。
  4. データ(X_i,Y_i)を集める。
  5. 回帰係数(\beta_0,\beta_1)を求める。
  6. 回帰係数のt値を計算する。
  7. 有意水準\alphaでの閾値を検証して、tがまれにしか発生しない値になるかどうかを検定する。
    • 例えば、\alpha=0.05と定めていてたら、閾値の下限は-1.960で上限は1.960
    • t<-1.960またはt>1.960であれば、帰無仮説を棄却して、対立仮説を採択する。
    • そうでなければ、帰無仮説を棄却しない。

Pythonでの実装とstatsmodels

Pythonのライブラリ、「statsmodels」を使えば、

  • データさえあれば
  • 回帰係数を計算し
  • t値も(そしてその他の値もいろいろ)計算してくれる

. . .

したがって、Pythonで回帰分析を行うのはかなり簡単。

  • 帰無仮説と対立仮説を立て、有意水準を定めれば、あとはデータを放り込んだらパソコンがやってくれます。

まとめ

  • 回帰分析の初歩を概説。
    • 基本は散布図に直線を当てはめるだけ。
  • データがあれば、OLS推定量が計算できる。
  • 検定によって、推定されたモデルの係数が統計的に有意かどうかを判断する。
  • 実際の推定については、pythonがやってくれるから、心配せずにいれば良い。