餡子付゛録゛

ソフトウェア開発ツールの便利な使い方を紹介。

Rでデータフレームに、t-1期のデータを追加する(ミクロデータ向き)

被説明変数が説明変数に影響を与えている事を同時性と言います。アイドルのCMやドラマ露出時間と、アイドルの人気度の関係などが例にあげられるでしょう。単回帰では問題ないのですが、重回帰分析では分析に深刻な影響を及ぼす可能性があります。
これを解決するには同時方程式モデルを用います。つまりIVやTSLS、GLM、差分パネルなどの計量手法のことになりますが、これらでは同時性をコントロールできる操作変数を用います。
さて、説明変数と関係があって、かつ被説明変数に影響を受けない操作変数を探すのは苦労するので、操作変数は昨年の説明変数のデータを用いる事が多いです。2011年のアイドルの露出時間を2011年の人気度と事務所の規模で重回帰分析を行うとすれば、2010年のアイドル人気度が操作変数として用いられるわけです。
大半の人はExcelでポチポチと同じ行に2011年と2010年のデータを並べているようですが、サンプル数が多いと鬱になって社会保険の負担を増加させる事になりますから、Rで機械的に処理を試みて見ましょう。マクロの時系列と違って各個体・各年ごとにデータがあるので、簡単にずらしてコピペしても厳密には解決しないことに注意してください。
データセットは以下のようなものを想定し、データフレームdfに格納されているとします。

Year ID Y X
2009 A 9 6
2010 A 11 4
2011 A 11 4
2009 B 8 6
2010 B 12 4
2011 B 12 4
2009 C 8 6
2010 C 8 6
2011 C 13 17

2011年の行に2010年のデータを、2010年のデータに2009年のデータをつなぎあわせる事が目標です。

t2 <- subset(df, Year>min(df$Year))
t1 <- subset(df, Year

2011年〜2010年、2010年〜2009年のデータセットを作成し、つなぎあわせる為のキーを追加した上で、merge関数でデータセットを合成し、最後につなぎあわせる為のキーを削除しています。min(df$Year)が2009、max(df$Year)が2010になる事に注意してください。
結果は以下のようになるはずです。

Year ID Y X Year.t1 ID.t1 Y.t1 X.t1
2010 A 11 4 2009 A 9 6
2011 A 11 4 2010 A 11 4
2010 B 12 4 2009 B 8 6
2011 B 12 4 2010 B 12 4
2010 C 8 6 2009 C 8 6
2011 C 13 17 2010 C 8 6

アンバランスド・モデルでも上手く機能します。