今までの分析ではすべてクロスセクション(横断面)データまたは時系列データを想定していた。
customer <- read.table("customer.txt", header = T)
head(customer)
## ID gender age freq DM
## 1 1 0 36 2 0
## 2 2 1 31 5 1
## 3 3 0 34 1 0
## 4 4 1 26 4 1
## 5 5 0 28 3 0
## 6 6 0 25 1 0
sales <- read.table("sales.txt", header = T)
head(sales)
## date units price disp feat temp
## 1 1 27 130 0 A 24
## 2 2 23 130 0 A 23
## 3 3 41 120 1 A 27
## 4 4 39 120 1 A 26
## 5 5 18 130 0 A 21
## 6 6 24 130 0 A 21
複数時点における, 同一の人々(企業、国々)の観測値からなるデータをパネル・データ(panel data)と呼ぶ。
life <- read.csv("life_xt.csv")
head(life)
## id t income life shock y2 shock_y2
## 1 1 1 300 3 0 0 0
## 2 1 2 300 1 0 1 0
## 3 2 1 300 3 1 0 0
## 4 2 2 300 4 1 1 1
## 5 3 1 50 3 1 0 0
## 6 3 2 300 2 1 1 1
いくつかあるデータセットを合わせて一つのデータセットにすることを、データを一括またはプールする(pool)と言う。
パネルデータの利点の一つは、データをプールすることにより標本数を大きくすることができることである。
ある政策が与える影響を計測することを考える。
もし、ある政策が導入されている地域と導入されていない地域があれば、繰り返しクロスセクション・データを使ってその政策の効果を調べることが可能な場合がある。
一般的に、政策の影響を受けるグループを処置群(treatment group)、影響を受けないグループを対照群(control group)と呼ぶ。
補助金あり | 補助金なし | |
---|---|---|
1990年 | 600万円 | 700万円 |
2000年 | 550万円 | 600万円 |
2つの時点を\(t=1,2\)とし、対照群をグループ\(A\)、処置群をグループ\(B\)とする。
パネル・データがある場合は、さらに強力な方法で政策評価を行うことができる。
各個人のより詳細な情報がある場合は、多重回帰モデルを用いてより精度の高い「差の差の推定」ができる。
\(Y\)のみでも政策の効果を測ることはできるが、より詳細な情報を利用できる場合は、多重回帰モデルにより外的条件を制御することができ、より精度の高い政策効果の評価が可能になる。
各個人がどちらのグループに入るかが無作為には決まっていない場合も多い。
多重回帰モデルによる「差の差の推定」であれば、成果変数\(Y\)に効果を与えると考えられる外的条件をできるだけ制御しながら分析できる。
この点で、回帰分析に基づいた差の差の推定は、単なる平均値の比較に基づいた差の差の推定よりも優れている。
このような自己選択問題を解決するために、次のような方法が行われている。
パネル・データは同じ個人の繰り返しセクション・データなので、当然「差の差の推定」に用いることもできる。しかし、パネル・データが使える場合は、「個人特有で、時間を通じて不変な観測できない外的条件をすべて制御する」ことができる。
簡単化のため、2時点分のパネル・データを用いて、次の多重回帰モデルを推定することを考える。 \[ Y_{it} = \beta_{0} + \beta_{1}X_{1it} + \cdots + \beta_{K}X_{Kit} + v_{i} + u_{it} \qquad (i=1,2,\cdots,n, \quad t = 1,2) \]
パネル・データを使って個別効果\(v_{i}\)を制御する方法は、実は大変簡単である。
\[ \Delta Y_{i} = Y_{i2} - Y_{i1}、\quad \Delta X_{ij} = X_{i2j} - X_{i1j}, \quad \Delta u_{i} = u_{i2} - u_{i1} \]
\[ \Delta Y_{i} = \beta_{1} \Delta X_{i1} + \beta_{2} \Delta X_{i2} + \cdots + \beta_{K} \Delta X_{iK} + \Delta u_{i} \]
上の1階の差分をとった回帰モデルには定数項\(\beta_{0}\)が含まれていないが、時点1と時点2で定数項が異なるモデルを推定することもできる。
\(t=1\)であれば0、\(t=2\)であれば1となるダミー変数\(D_{t}\)を用いた回帰モデルを考える。 \[ Y_{it} = \beta_{0} + \delta_{0}D_{t} + \beta_{1}X_{it1} + \cdots + \beta_{k}X_{itk} + v_{i} + u_{it} \]
1階の差分をとると次のようになる。 \[ \Delta Y_{i} = \delta_{0} + \beta_{1} \Delta X_{i1} + \beta_{2} \Delta X_{i2} + \cdots + \beta_{K} \Delta X_{iK} + \Delta u_{i} \]
このモデルを用いて、時点1と時点2の定数項の違い\(\delta_{0}\)を推定することができる。
このように時点によって定数項が違うことを考慮することは、時点固定効果を考慮するとも言う。
1階差分法を使うと、観測できない個別効果だけでなく、時間を通じて不変な変数の効果はすべて取り除かれてしまう。
1階差分法を用いて個別効果を取り除く場合は、時間を通じて変化しない変数をもとの回帰モデルに入れないように注意が必要である。
自己選択があるときに差の差の推定法を使って政策効果を評価したいときには、観測できる外的条件をできるだけ制御することが望ましい。パネル・データが利用可能な場合は、時間を通じて変化しない個別効果を制御しながら政策効果の評価を行うことができる。
3期間以上のパネル・データがある場合も、同様の方法により差の差の推定量を求めることができる。
病気やけがをすると生活の満足度は下がるのかを調べるために、次のような多重回帰モデルを考える。
\[ life_{it} = \beta_{0} + \beta_{1}shock_{i} + \beta_{2}D_{t} + \beta_{3}(shock_{i} \times D_{t}) + \beta_{4}income_{it} + v_{i} + u_{it} \quad (i=1,2,\cdots,n, \ t = 1,2) \]
3020人分の2007年(\(t=1\))と2009年(\(t=2\))について、以下の変数が収録されているデータセットを用いる。
y2
:2009年(\(t=2\))であれば1、そうでなければ0となるダミー変数shock_y2
:\(shock\)とy2
との交差項(2009年(\(t=2\))で、かつ2008年に病気やけがで仕事を休んだことがあれば1、そうでなければ0となるダミー変数)
#データの読み込み
life <- read.csv("life_xt.csv", header = TRUE)
head(life)
## id t income life shock y2 shock_y2
## 1 1 1 300 3 0 0 0
## 2 1 2 300 1 0 1 0
## 3 2 1 300 3 1 0 0
## 4 2 2 300 4 1 1 1
## 5 3 1 50 3 1 0 0
## 6 3 2 300 2 1 1 1
2009年(\(t=2\))のデータを使って推定すると次のようになる。
#t=2期目(2009年)のデータを使って最小2乗法で回帰
reg1 <- lm(life ~ shock + income, data = subset(life, t==2))
summary(reg1)
##
## Call:
## lm(formula = life ~ shock + income, data = subset(life, t ==
## 2))
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.9558 -0.6737 0.2417 0.3948 1.4512
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.674e+00 3.053e-02 87.575 < 2e-16 ***
## shock -1.249e-01 3.460e-02 -3.609 0.000312 ***
## income 2.822e-04 7.101e-05 3.974 7.23e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9342 on 3017 degrees of freedom
## Multiple R-squared: 0.009842, Adjusted R-squared: 0.009186
## F-statistic: 14.99 on 2 and 3017 DF, p-value: 3.313e-07
個別効果を考慮するために2時点のデータを使って一階の差分をとった回帰モデル \[ \Delta life_{i} = \beta_{2} + \beta_{3}shock_{i} + \beta_{4} \Delta income_{i} + \Delta u_{i} \] を推定すると次のようになる。
#t=1のデータを抽出
life_s1 <- subset(life, t == 1)
head(life_s1)
## id t income life shock y2 shock_y2
## 1 1 1 300 3 0 0 0
## 3 2 1 300 3 1 0 0
## 5 3 1 50 3 1 0 0
## 7 4 1 400 3 1 0 0
## 9 5 1 200 3 0 0 0
## 11 6 1 0 2 0 0 0
#t=2のデータを抽出
life_s2 <- subset(life, t == 2)
head(life_s2)
## id t income life shock y2 shock_y2
## 2 1 2 300.0 1 0 1 0
## 4 2 2 300.0 4 1 1 1
## 6 3 2 300.0 2 1 1 1
## 8 4 2 400.0 3 1 1 1
## 10 5 2 200.0 3 0 1 0
## 12 6 2 12.5 2 0 1 0
#t=2とt=1の差分を取る
life_ds <- life_s2 - life_s1
head(life_ds)
## id t income life shock y2 shock_y2
## 2 0 1 0.0 -2 0 1 0
## 4 0 1 0.0 1 0 1 1
## 6 0 1 250.0 -1 0 1 1
## 8 0 1 0.0 0 0 1 1
## 10 0 1 0.0 0 0 1 0
## 12 0 1 12.5 0 0 1 0
#差分を取ったデータを使って最小2乗法で回帰
reg2 <- lm(life ~ shock_y2 + income , data = life_ds)
summary(reg2)
##
## Call:
## lm(formula = life ~ shock_y2 + income, data = life_ds)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.2600 -1.0752 -0.0976 0.8070 3.9694
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.2153646 0.0313550 6.869 7.84e-12 ***
## shock_y2 -0.1401174 0.0484445 -2.892 0.00385 **
## income 0.0002233 0.0001614 1.383 0.16666
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.309 on 3017 degrees of freedom
## Multiple R-squared: 0.003434, Adjusted R-squared: 0.002773
## F-statistic: 5.197 on 2 and 3017 DF, p-value: 0.005581
shock_y2
)の係数は有意に負となる。R
にはパネル・データ分析用パッケージplm
がある。
plm
のオプションでmodel = "fd"
と指定することで、1階差分法によって回帰モデルを推定することができる。#パネル・データ分析用パッケージインストール
# install.packages("plm")
#パネル・データ分析用パッケージ読み込み
library(plm)
#plmパッケージを用いて,1階差分法(fd)による回帰
preg1 <- plm(life ~ shock_y2 + income, data = life, effect ="individual",
model = "fd", index = c("id", "t"))
summary(preg1)
## Oneway (individual) effect First-Difference Model
##
## Call:
## plm(formula = life ~ shock_y2 + income, data = life, effect = "individual",
## model = "fd", index = c("id", "t"))
##
## Balanced Panel: n = 3020, T = 2, N = 6040
## Observations used in estimation: 3020
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -4.260022 -1.075247 -0.097576 0.806964 3.969410
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## (Intercept) 0.21536463 0.03135500 6.8686 7.842e-12 ***
## shock_y2 -0.14011741 0.04844452 -2.8923 0.003851 **
## income 0.00022329 0.00016141 1.3834 0.166659
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 5186.5
## Residual Sum of Squares: 5168.7
## R-Squared: 0.0034335
## Adj. R-Squared: 0.0027729
## F-statistic: 5.19735 on 2 and 3017 DF, p-value: 0.0055809
時間を通じて変化しない個別効果を制御する別の推定方法として、平均差分法と呼ばれる方法がある。この方法では、各個人についての被説明変数と説明変数すべての時間平均を作り、その平均と各変数の差分をとることによって個別効果を消去する。
なお、一階差分法と同様に、平均差分法では時間を通じて変化しない変数の係数は推定できないので、そのような変数を含めないように注意が必要である。
先の応用例で推定した多重回帰モデルを、平均差分法で推定する。
y2
と\(shock\)との交差項shock_y2
も含まれている。R
にはパネル・データ分析用パッケージplm
がある。plm
のオプションでmodel = "within"
と指定することで、平均差分法によって回帰モデルを推定することができる。#パネル・データ分析用パッケージ読み込み
library(plm)
#固定効果モデル(within)を用いた回帰
preg1 <- plm(life ~ shock + y2 + shock_y2 + income, data = life, effect ="individual",
model = "within", index = c("id", "t"))
summary(preg1)
## Oneway (individual) effect Within Model
##
## Call:
## plm(formula = life ~ shock + y2 + shock_y2 + income, data = life,
## effect = "individual", model = "within", index = c("id",
## "t"))
##
## Balanced Panel: n = 3020, T = 2, N = 6040
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -2.13001 -0.45121 0.00000 0.45121 2.13001
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## y2 0.21536463 0.03135500 6.8686 7.842e-12 ***
## shock_y2 -0.14011741 0.04844452 -2.8923 0.003851 **
## income 0.00022329 0.00016141 1.3834 0.166659
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 2634
## Residual Sum of Squares: 2584.4
## R-Squared: 0.018844
## Adj. R-Squared: -0.96394
## F-statistic: 19.3148 on 3 and 3017 DF, p-value: 2.1065e-12
y2
の交差項shock_y2
で、その係数の推定値は有意に負となっており、先ほどの1階差分法による係数と一致している。