ベクトル\(\mathbf{y}\)と行列\(\mathbf{X}\)が以下のように与えられているとする.
\[ \begin{equation} \mathbf{y}=\begin{bmatrix} 2 \\ 1 \\ 0 \\ 2 \\ \end{bmatrix}, \mathbf{X}=\begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 0 \\ 1 & 0 & 1 \\ 1 & 0 & 1 \\ \end{bmatrix} \end{equation} \]
【以下,解答欄】
【解答欄終わり】
\(\mathbf{y}\)を\(\mathbf{X}\)を回帰した時の係数ベクトルは\(\hat{\boldsymbol{\beta}}'=\left(0,1,1\right)\)である.
ヒント:正規方程式もしくは直交条件の成立を示せば良い.
【以下,解答欄】
【解答欄終わり】
確率ベクトル\(\mathbf{y}'=\left(Y_{1},Y_{2},Y_{3}\right)\)は3次元正規分布に従い,期待値と分散は以下のように与えられる.
\[ \begin{equation} E\left(\mathbf{y}\right)=\boldsymbol{\mu}=\begin{bmatrix} 0 \\ 0 \\ 1 \\ \end{bmatrix}, Var\left(\mathbf{y}\right)=\begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 4\\ \end{bmatrix} \end{equation} \]
また,\(\mathbf{y}\)に関する線形結合のベクトル\(\mathbf{z}\)を以下のように与える.
\[ \begin{equation} \mathbf{z}=\begin{bmatrix} 1 \\ 1 \\ \end{bmatrix}+\begin{bmatrix} 1 & 0 & 1 \\ 1 & 1 & 1 \\ \end{bmatrix} \mathbf{y} \end{equation} \]
【以下,解答欄】
【解答欄終わり】
ヒント:\(Y_{1},Y_{2}\)はそれぞれ独立な標準正規分布に従う変数である.
【以下,解答欄】
【解答欄終わり】
「RでOLS」(r_ols.Rmd)内で,bostonデータを用いて行ったものと同じ回帰モデル,すなわち,\(i\)を統計調査区に関する添字,\(\beta_{k}\)を\(k\)番目の変数に対応する回帰係数として,
\[ \begin{equation} MEDV_{i}= \beta_{0} + \beta_{1} CRIM_{i} + \beta_{2} RM_{i} + \beta_{3} INDUS_{i} + \beta_{4} NOX_{i} + \beta_{5} AGE_{i} + \beta_{6} DIS_{i} + \\ \beta_{7} RAD_{i} + \beta_{8} PTRATIO_{i} + \beta_{9} B_{i} + \beta_{10} LSTAT_{i} + \beta_{11} TAX_{i} + \varepsilon_{i}, \\ i=1,...,506, \varepsilon_{i} \sim N(0,\sigma^2), \end{equation} \]
と定式化された回帰モデルを考える.FWL定理を用いて,変数\(INDUS_{i},AGE_{i}\)に対応する回帰係数ベクトルの部分ベクトル\(\boldsymbol{\beta}_p'=\left[\beta_3,\beta_5\right]\)の最小二乗推定量\(\hat{\boldsymbol{\beta}}_p'=\left[\hat{\beta_3},\hat{\beta_5}\right]\)を推定しなさい.
【分析のための準備】
#install.packages("spdep",repos="https://cran.ism.ac.jp/")
library(spdep)
data(boston)
dat <- boston.c
【分析のための準備終わり】
まず,データを被説明変数ベクトルy,変数\(INDUS_{i},AGE_{i}\)でなる説明変数行列X2,それ以外の変数でなる説明変数行列X1に分けて格納する.
y <- dat$MEDV
X2 <- cbind(dat$INDUS,dat$AGE)
X1 <- cbind(1,dat$CRIM,dat$RM,dat$NOX,dat$DIS,dat$RAD,dat$PTRATIO,dat$B,dat$LSTAT,dat$TAX)
FWL定理のステップ1を実行する.
# ey <-
FWL定理のステップ2を実行する.
# E2 <-
FWL定理のステップ3を実行し,実行結果を表示する.
# beta_p <-
# beta_p
問題2と同じ定式化の回帰モデルに対して,「行列演算を用いて」標準誤差にWhiteの修正を行いなさい.
まず,通常の回帰分析を行い,回帰係数の推定値と残差を得る(「RでOLS」の内容と全く同じ).
datmat <- dat %>%
#必要な変数を取り出し
dplyr::select(MEDV,CRIM,RM,INDUS,NOX,AGE,DIS,RAD,PTRATIO,B,LSTAT,TAX) %>%
#行列に変換
as.matrix
#被説明変数ベクトル
y <- datmat[,1]
#説明変数行列
X <- datmat[,-1]
#定数項の説明変数を横結合
X <- cbind(1,X)
#Xの1番目の列名を変更
colnames(X)[1] <- "Intercept"
#OLS推定値
beta <- solve(t(X)%*%X)%*%t(X)%*%y
#残差ベクトル
e <- y-X%*%beta
残差二乗を対角成分に持つ対角行列sigma_white(講義スライド上では\(\Sigma_{White}\))を作成する.
#現状matrix型になっているeをvector型に変換(そうしないとdiag関数がうまく行かない)
e <- as.vector(e)
#eの二乗を対角要素に持つ対角行列を作成
sigma_white <- diag(x=e^2)
sigma_whiteを用いて,\(\hat{\boldsymbol{\beta}}\)の分散の推定値を計算する.
#分散の推定値を計算
# var_white <-
var_whiteの対角成分の平方根を取ったものがWhite標準誤差.行列の対角成分をベクトルとして取り出すにはdiag関数,ベクトルの平方根を取るにはsqrtを用いる.
#標準誤差を計算
# sd_white <-
#計算結果を表示
# sd_white
lm_robust関数を使った推定結果と一致するか確かめても良い.
#OLS推定
reg_robust <- estimatr::lm_robust(MEDV~CRIM+RM+INDUS+NOX+AGE+DIS+RAD+PTRATIO+B+LSTAT+TAX,
data=dat,
se_type="HC0")