OLSのロバスト標準誤差#
単回帰モデルの場合#
\(n\)個の観測値による単回帰モデルを想定する。
推定量#
ここで、
であるため、\(\hat{\beta}\)の式に代入すると
となり、OLS推定量\(\hat\beta\)は\(w_i\)という重みによる\(Y_i\)の線形和の形になっている
推定量の誤差#
と、\(\hat\beta\)は真値\(\beta\)の周りを誤差の加重和\(\sum w_i u_i\)の分だけばらつく確率変数であり、一般に\(\hat\beta\neq\beta\)であることがわかる。
誤差項\(u_i\)の仮定により、推定誤差の期待値はゼロになる
古典的線形回帰モデルの場合#
古典的な線形回帰モデルの仮定のうち、
母分散が均一:\(\operatorname{Var}(u_i) = E(u_i^2) = \sigma^2\)
というものが関わってくる
推定量の分散#
最後の等式は\(\sum_{i=1}^n w_i^2=\frac{1}{S_{XX}}\)を利用している
よって
\(s_X^2\)は\(X\)の標本分散。サンプル数\(n\)が大きいほど\(\operatorname{Var}(\hat{\beta})\)は減少する
条件付き分散#
不均一分散#
条件付き分散#
不均一分散のもとで、OLS推定量の条件付き分散は
と、均一分散の場合より複雑になる
漸近分散#
OLSは漸近正規推定量になる
\(\operatorname{Avar}(\hat{\beta})\)は未知の\(\sigma^2_i\)を含んでいるので、何らかの方法で推定する
Whiteの標準誤差#
よく使われる推定量は、ホワイトの頑健な分散推定量
その平方根はホワイトの標準誤差として知られる
重回帰モデルの場合#
\(n\in\mathbb{N}\)個の観測値があるとし、目的変数\(Y\in \mathbb{R}^n\)、説明変数\(X\in\mathbb{R}^{n\times m}\)、誤差項\(u\in\mathbb{R}^n\)について
という線形モデルを考える
推定量の誤差#
OLS推定量
を真値+αの形式にすると、
と表すことができる。
推定量の一致性#
線形回帰モデルの外生性の仮定\(E(X_i u_i) = 0\)が満たされるなら、
であるから、誤差の項\((X^T X)^{-1} X^T u\)は消失する
漸近正規性#
OLS推定量
を整理して以下の形にする
\(\frac{1}{\sqrt{N}} X^T u\)は\(\frac{1}{\sqrt{N}} \sum^N_{i=1} X_i u_i\)と書くことができる。OLSの仮定より
なので、中心極限定理により
となる。
一致性のときに導出した
を使うと、スルツキーの定理を用いて
となる。
スルツキーの定理
確率変数の行列\(Y_N, Y, X_N, X \in \mathbb{R}^{N\times N}\)、正則行列\(C \in \mathbb{R}^{N\times N}\)があるとする。
\(N\to \infty\)のとき
とする。
このとき、以下の結果が成り立ち、これを スルツキーの定理 という
\(X_N + Y_N \xrightarrow{d} X + C\)
\(Y_N X_N \xrightarrow{d} C X\)
\(Y_N^{-1}X_N \xrightarrow{d} C^{-1} X\)
\(V\)は以下のように一致推定できる
ただし、\(\operatorname{diag}[\hat{u}_i^2] \)は対角要素に\(\hat{u}_1^2, \dots, \hat{u}_N^2\)を並べた対角行列である。 これはHC0と呼ばれるタイプの誤差分散の推定量である
漸近分散の推定量#
{estimatr}パッケージでの呼び名 |
分散の推定量\(\widehat{\mathrm{V}}[\widehat{\beta}]\) |
notes |
---|---|---|
|
\(\frac{\mathbf{e}^\top\mathbf{e}}{n-m} (\mathbf{X}^{\top}\mathbf{X})^{-1}\) |
|
|
\((\mathbf{X}^{\top}\mathbf{X})^{-1}\mathbf{X}^{\top}\mathrm{diag}\left[e_i^2\right]\mathbf{X}(\mathbf{X}^{\top}\mathbf{X})^{-1}\) |
|
|
\(\frac{n}{n-m}(\mathbf{X}^{\top}\mathbf{X})^{-1}\mathbf{X}^{\top}\mathrm{diag}\left[e_i^2\right]\mathbf{X}(\mathbf{X}^{\top}\mathbf{X})^{-1}\) |
Eicker-Huber-Whiteの分散推定量などと呼ばれる |
|
\((\mathbf{X}^{\top}\mathbf{X})^{-1}\mathbf{X}^{\top}\mathrm{diag}\left[\frac{e_i^2}{1-h_{ii}}\right]\mathbf{X}(\mathbf{X}^{\top}\mathbf{X})^{-1}\) |
|
|
\((\mathbf{X}^{\top}\mathbf{X})^{-1}\mathbf{X}{\top}\mathrm{diag}\left[\frac{e_i^2}{(1-h_{ii})^2}\right]\mathbf{X}(\mathbf{X}^{\top}\mathbf{X})^{-1}\) |
\(h_{ii}=X_i (X^T X)^{-1} X_i^T\)
\(e_i = Y_i - X_i \hat{\beta}\)
\(m\)は推定量の次元数
出所:estimatrパッケージのドキュメント
参考#
鹿野繁樹. (2015). 新しい計量経済学: データで因果関係に迫る.
実験(WIP)#
import numpy as np
import matplotlib.pyplot as plt
n = 100
np.random.seed(0)
x1 = np.random.uniform(0, 5, size=(n, 1))
x0 = np.ones(shape=(n, 1))
X = np.append(x0, x1, axis=1)
beta = np.array([3, 5])
# 均一分散の場合
e = np.random.normal(loc=0, scale=1, size=n)
y = X @ beta + e
# plot
fig, ax = plt.subplots()
ax.scatter(x1, y)
<matplotlib.collections.PathCollection at 0x7f1fb09f7640>
beta_hat = np.linalg.inv(X.T @ X) @ X.T @ y
beta_hat
array([3.22215108, 4.987387 ])
X.T @ X
array([[100. , 236.39691976],
[236.39691976, 766.62957534]])
(X[0, ] @ X[0,].T)**(-1)
0.11723457858134044