• このセクションで使う R パッケージ一覧
library(broom)
library(car)
library(jtools)
library(normtest)
library(patchwork)
library(stargazer)
library(tidyverse)
library(zoo)

最小二乗法による回帰係数の推定

最良線形不偏推定量: BLUE

  • 最良線形不偏推定量 (BLUE: Best Linear Unbiased Estimator) とは、次の 5 つの仮定が満たされるときの最小二乗法による回帰係数の推定量のこと
  1. 誤差項の期待値がゼロ
  2. パラメータにおける線形性
  3. 誤差項の条件付き期待値がゼロ
  4. 多重共線性がない
  5. 誤差項の分散均一性
  • ここではこの BLUE に即して、社会科学において要求される最小二乗法による回帰分析の前提と回帰モデルの妥当性の診断方法を解説する

回帰分析の前提と妥当性の診断方法

回帰分析の前提 妥当性の診断方法
1. 回帰モデルは妥当なモデルである 学問上の知識に基づいて判断
2. 誤差項の期待値がゼロ
3. 加法性と線形性 Scatter plotで確認
4. 誤差が独立である 慎重に交絡変数を検討する
5. 誤差の分散が均一である 残差プロットによる診断
6. 誤差が正規分布に従う 正規QQプロットによる診断
7. 完全な多重共線性がない 分散拡大係数 (VIF) による診断

1. 回帰モデルは妥当なモデルである

2. 誤差項の期待値がゼロ   

2.1 証明

  • 誤差項は観測されない
  • 「誤差項の期待値がゼロである」という仮定を満たすことは難しいことではない
  • ここで次のようなモデルを考える

\[Y_i = \alpha_0 + β_1X_1i +u_i\]

  • \(u_i\) はこのモデルにおける誤差項

  • 誤差項の期待値がゼロでない」場合でも、誤差項の期待値がゼロになることを示す

  • つまり、誤差項の期待値 \(E(u_i) = σ(シグマ)、σ≠0\) ということ

  • ここでは、誤差項 \(u_i\) の期待値がゼロでない場合から始めても、誤差項 \(ε_i\)の期待値はゼロとなり仮定は満たされることを示してみる

モデル 解説
\(Y_i = \alpha_0 + β_1X_1i +u_i\) 誤差項 \(u_i\) の期待値がゼロでないと仮定
\(Y_i = \alpha_0 + β_1X_1i +u_i + \sigma - \sigma\) \(\sigma=0\)なので、計算上右辺に \(\sigma\) を足して引く
\(Y_i = (\alpha_0 + \sigma) + β_1X_1i + (u_i - \sigma)\) 新たな \(Y\) 切片は \((\alpha_0 + \sigma)\)、新たな誤差項は \((u_i - \sigma) になる\)
\(\beta_0 = (\alpha_0 + \sigma), ε_i = (u_i - \sigma)\)と定義する
\(Y_i = \beta_0 + β_1X_1i + ε_i\) 誤差項 \(u_i\) の期待値がゼロでない場合、\(Y\) 切片の値は \(\alpha_0\) から \(\beta_0 = \alpha_0 + σ\) に変わるが、傾きは \(\beta_1\) のまま変化せず
\(E[ε_i]=E[u_i-\sigma]\) 再定義した誤差項 \(ε_i = u_i - \sigma\) の期待値をとる
\(E[ε_i]=E[u_i] - E[\sigma]\) 期待値の加法性 \(E[X+Y] = E[X] + E[Y]\) より
\(E[ε_i]=\sigma - \sigma\) \(E[u_i] = \sigma\)であり、\(E[定数] = 定数\)だから(\(\sigma\) は定数)
\(E[ε_i] = 0\) 従って、誤差項 \(ε_i\)の期待値はゼロとなり、仮定は満たされた

ポイント
・誤差項 \(u_i\) の期待値がゼロでない場合、\(Y\) 切片の値は \(\alpha_0\) から \(\beta_0 = \alpha_0 + σ\) に変わるが、傾きは \(\beta_1\) のまま変化しない
・新たに定義し直した誤差項 \(ε_i = u_i - \sigma\) の期待値はゼロと見なすことができる

2.2 R を使った誤差項のシミュレーション

  • 人工的にデータを作り、誤差項の期待値が 0 の場合と、誤差項の期待値が 0 でない場合に、それぞれ正しくモデルの傾きを推定できるかどうか確かめてみる
set.seed(20220225) # seed の設定(数字は任意)  
n <- 1000      # 生成するデータ数を n = 1000 と設定
a0 <- 1      # モデルの切片 (α0)を 1 に設定
b1 <- 2       # モデルの傾き (β1) を 2 に設定
x1 <- rnorm(n) # x1 の値をランダムに 1000個生成

2.2.1 誤差項の期待値(平均値)が 0 の場合

u1 <- rnorm(n, 0, 1) # 誤差項の期待値を 0 と設定
                     # 標準偏差を 1 と設定
  • 生成した誤差項 \(u1\) を可視化する
hist(u1)