RAの仕事で算出することに

以前,学部の後輩がSTATA上で全作業できるらしいっすよ(゜Д゜)って言ってたのを思い出したのですが,できず.どこかの大学のサイトにDoファイルが書いているらしいが,見つからず.

というわけで前作業をExcelでさせて,やってみた.
下のはそれを若干修正したもの.いじったので,間違えているかもしれません.サーセン

たぶん使いにくいかと思いますが,お好きにいじって使ってください.

VimもhatenaもStataシンタックスが使える.すばらしい.

*CARを出すdoファイル
*ついでにBHARも出せる(こっちは自信がない)
*
*データフォーマットを前もって整理する必要がある.
*	各企業につき修正済株価とその日に対応するINDEXを並べる必要がある.
*	つまり,データは,企業数の倍の列が必要.
*	このdoファイルでは,それぞれ t`i'price, t`i'index と名付けている.
*	tは1から順に振る必要がある.
*	また,このデータでは,-270日から+20日までの291行あり,271行目にイベントディが来るように,表計算ソフトか何かでデータの整理をしている.

*ar_3から.ar_5までの変数ができる.それらが,-3日から+5日までのARに相当する(mはマイナスのつもり,Stataでは"-"が変数名として認識できないっぽい.).
*それぞれ,1行目にi=1番目の企業,2行目にi=2番目の企業のARが並ぶようになっている.

set more off
gen a =.
gen b =.
gen ar_m3 = .
gen ar_m2 = .
gen ar_m1 = .
gen ar_0 = .
gen ar_1 = .
gen ar_2 = .
gen ar_3 = .
gen ar_4 = .
gen ar_5 = .
gen n = .

set obs 1000
forvalue i = 1 / 852{
* CAR
	gen t`i'index_return = (t`i'index - t`i'index[_n-1] ) /t`i'index[_n-1] 
	gen t`i'price_return = (t`i'price - t`i'price[_n-1] ) /t`i'price[_n-1] 
	qui:reg t`i'price_return t`i'index_return in 1/250		*ここのin 以降が推定期間である.
	replace a = _b[_cons]
	replace b = _b[t`i'index_return]
	gen ar`i' = t`i'price_return - (a + b * t`i'index_return)
	local n =  ar`i' in 268
	replace ar_m3 = `n' in `i'

	local n =  ar`i' in 269
	replace ar_m2 = `n' in `i'

	local n =  ar`i' in 270
	replace ar_m1 = `n' in `i'

	local n =  ar`i' in 271
	replace ar_0 = `n' in `i'

	local n =  ar`i' in 272
	replace ar_1 = `n' in `i'

	local n =  ar`i' in 273
	replace ar_2 = `n' in `i'

	local n =  ar`i' in 274
	replace ar_3 = `n' in `i'

	local n =  ar`i' in 275
	replace ar_4 = `n' in `i'

	local n =  ar`i' in 276
	replace ar_5 = `n' in `i'

* BHAR		
	local bhr_i = 1
	local bhr_m = 1
	forvalue day = 251 / 292{
		local bhar_i = t`i'price_return + 1 in `day' 
		local bhar_m = t`i'index_return + 1 in `day' 
		local bhr_i = `bhr_i' * `bhar_i'
		local bhr_m = `bhr_m' * `bhar_m'
		local bhar = `bhr_i' - `bhr_m'
		replace bhar`day' = `bhar' in `i'		
	}
	drop t`i'index_return
	drop t`i'price_return
	drop t`i'index
	drop t`i'turn
	drop t`i'price
}
*CARの算出.お好きに変更してください.
gen car_m1_0 = ar_m1 + ar_0					*CAR of day -1 to day 0
gen car_m1_1 = ar_m1 + ar_0 + ar_1				*CAR of day -1 to day +1
gen car_m2_2 = ar_m2 + ar_m1 + ar + ar_1 + ar_2	*CAR of day -2 to day +2