OLSのロバスト標準誤差#

単回帰モデルの場合#

n個の観測値による単回帰モデルを想定する。

Yi=α+βXi+ui,i=1,2,,n

推定量#

{u^i=(Yiα^β^Xi)=0u^iXi=(Yiα^β^Xi)Xi=0α^=Y¯β^X¯,β^=SXYSXX

ここで、

SXX=(XiX¯)Xi,SXY=(XiX¯)Yi

であるため、β^の式に代入すると

β^=SXYSXX=(XiX¯)YiSXX=(XiX¯SXX)Yi=wiYi,wi=XiX¯SXX

となり、OLS推定量β^wiという重みによるYiの線形和の形になっている

推定量の誤差#

β^=wiYi=wi(α+βXi+ui)=αwi=0+βwiXi=1+wiui=β+wiui

と、β^は真値βの周りを誤差の加重和wiuiの分だけばらつく確率変数であり、一般にβ^βであることがわかる。

誤差項uiの仮定により、推定誤差の期待値はゼロになる

E(i=1nwiui)=i=1nwiE(ui)=0=0

古典的線形回帰モデルの場合#

古典的な線形回帰モデルの仮定のうち、

母分散が均一:Var(ui)=E(ui2)=σ2

というものが関わってくる

推定量の分散#

Var(i=1nwiui)=i=1nwi2Var(ui)=σ2i=1nwi2=σ2SXX

最後の等式はi=1nwi2=1SXXを利用している

よって

E(β^)=β,Var(β^)=σ2SXX=σ2(XiX¯)2=σ2(n1)sX2

sX2Xの標本分散。サンプル数nが大きいほどVar(β^)は減少する

条件付き分散#

Var(β^X1,X2,,Xn)=1SXX2(XiX¯)2σ2=σ2SXX2(XiX¯)2=SXX=σ2SXX

不均一分散#

Var(ui)=E(ui2)=σi2

条件付き分散#

不均一分散のもとで、OLS推定量の条件付き分散は

Var(β^X1,X2,,Xn)=1SXX2(XiX¯)2σi2

と、均一分散の場合より複雑になる

漸近分散#

OLSは漸近正規推定量になる

β^aN(β,Avar(β^)),Avar(β^)=1nσX4E[(XiμX)2σi2]

Avar(β^)は未知のσi2を含んでいるので、何らかの方法で推定する

Whiteの標準誤差#

よく使われる推定量は、ホワイトの頑健な分散推定量

V=1nsX41n(XiX¯)2u^i2=1n2sX4(XiX¯)2u^i2

その平方根はホワイトの標準誤差として知られる

 s.e. (β^)=V=1nsX2(XiX¯)2u^i2

重回帰モデルの場合#

nN個の観測値があるとし、目的変数YRn、説明変数XRn×m、誤差項uRnについて

Y=Xβ+u

という線形モデルを考える

推定量の誤差#

OLS推定量

β^=(XTX)1XTY

を真値+αの形式にすると、

β^=(XTX)1XTY=(XTX)1XT(Xβ+u)=(XTX)1XTX=Iβ+(XTX)1XTu=β+(XTX)1XTu=β+(1nXTX)11nXTu

と表すことができる。

推定量の一致性#

線形回帰モデルの外生性の仮定E(Xiui)=0が満たされるなら、

1nXTu=1ni=1nXiuipE(Xiui)=0

であるから、誤差の項(XTX)1XTuは消失する

漸近正規性#

OLS推定量

β^=β+(1NXTX)11NXTu

を整理して以下の形にする

N(β^β)=(1NXTX)11NXTu

1NXTu1Ni=1NXiuiと書くことができる。OLSの仮定より

E(Xiui)=0Var(Xiui)=E(u2XiXiT)

なので、中心極限定理により

1NXTu=1Ni=1NXiuidN(0,E(ui2XiXiT))

となる。

一致性のときに導出した

1NXTXpE(XiXiT)

を使うと、スルツキーの定理を用いて

N(β^β)=(1NXTX)11NXTud(E(XiXiT))1×N(0,E(ui2XiXiT))=N(0,(E(XiXiT))1E(ui2XiXiT)(E(XiXiT))1)=N(0,V)

となる。

スルツキーの定理

確率変数の行列YN,Y,XN,XRN×N、正則行列CRN×Nがあるとする。

Nのとき

XNdXYNdC

とする。

このとき、以下の結果が成り立ち、これを スルツキーの定理 という

  1. XN+YNdX+C

  2. YNXNdCX

  3. YN1XNdC1X

Vは以下のように一致推定できる

V^HC0=[1Ni=1NXiXiT]11Ni=1Nu^i2XiXiT[1Ni=1NXiXiT]1=(1NXTX)11NXTdiag[u^i2]X(1NXTX)1

ただし、diag[u^i2]は対角要素にu^12,,u^N2を並べた対角行列である。 これはHC0と呼ばれるタイプの誤差分散の推定量である

漸近分散の推定量#

{estimatr}パッケージでの呼び名

分散の推定量V^[β^]

notes

"classical"

eenm(XX)1

"HC0"

(XX)1Xdiag[ei2]X(XX)1

"HC1", "stata"

nnm(XX)1Xdiag[ei2]X(XX)1

Eicker-Huber-Whiteの分散推定量などと呼ばれる

"HC2" (default)

(XX)1Xdiag[ei21hii]X(XX)1

"HC3"

(XX)1Xdiag[ei2(1hii)2]X(XX)1

  • hii=Xi(XTX)1XiT

  • ei=YiXiβ^

  • mは推定量の次元数

出所:estimatrパッケージのドキュメント

参考#

実験(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 0x7f3c942bce80>
../../_images/d6096f8c32697940933b5c4767d6431b2b5ee8b91c08e28b6de1e6b3688dd1e0.png
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