<< brain wash? | Main | panel by R >>

2005年11月16日

coding stata

Levittのproblem setを解いていて,stataのdo fileを書いていたのだけれど,汚くなってしまった。

gen law_change= year if (divlaw==1 & divlaw[_n-1]==0)
replace law_change= 1968 if (divlaw==1 & year==1968)
replace law_change= 0 if (divlaw==0 & year==1988)
replace law_change= law_change[_n-1] if (divlaw==1 & divlaw[_n-1]==1)
replace law_change= law_change[_n+(1988-year)]

という感じに。法律制定のダミー変数から,制定年を示す変数law_changeを作りたかったのだけれど,どうも美しくない。51の州に,21年ずつのダミー(1968-1988)が入っているのだけれど,もっときれいな方法はないものか。

problem setを終えた後,Rでやったらどうなる?と試してみて,途中で挫折。何せ,Stataなら,
reg drate divlaw iyear* inumstate* divx* [aweight=pop]
ですむところが,Rだと,
r <- lm(drate~divlaw+divx1+divx2+divx3+divx4+divx5+divx6+divx7+divx8+divx9+ divx10+divx11+divx12+divx13+divx14+divx15+divx16+divx17+iyear2+iyear3+ iyear4+iyear5+iyear6+iyear7+iyear8+iyear9+iyear10+iyear11+iyear12+iyear13+ iyear14+iyear15+iyear16+iyear17+iyear18+iyear19+iyear20+iyear21+inumstate2+ inumstate3+inumstate4+inumstate5+inumstate6+inumstate7+inumstate8+inumstate9+ inumstate10+inumstate11+inumstate12+inumstate13+inumstate14+inumstate15+ inumstate16+inumstate17+inumstate18+inumstate19+inumstate20+inumstate21+ inumstate22+inumstate23+inumstate24+inumstate25+inumstate26+inumstate27+ inumstate28+inumstate29+inumstate30+inumstate31+inumstate32+inumstate33+ inumstate34+inumstate35+inumstate36+inumstate37+inumstate38+inumstate39+ inumstate40+inumstate41+inumstate42+inumstate43+inumstate44+inumstate45+ inumstate46+inumstate47+inumstate48+inumstate49+inumstate50+inumstate51,weights=pop)
になる。打ち込んでいて,51の州のfixed effectを入れていて,「もうダメ〜」となってしまった。Stataのxi:や*みたいなコマンド,Rにはないんだろうか。ないとなると,formulaに適当な文字列変数を設定して,forループ回して入れる...

ソスソスソスeソスソス hatsuru : 2005年11月16日 07:29

ソスgソスソスソスbソスNソスoソスbソスN

ソスソスソスフエソスソスソスgソスソスソス[ソスフトソスソスソスbソスNソスoソスbソスNURL:
http://www.law.tohoku.ac.jp/~hatsuru/cgi-local/mt/mt-tb.cgi/493