*1 Generate 5 different stationary autoregressive processes of order 1.*
clear all
set seed 12345
set obs 300
gen e=rnormal(0, 3^0.5)
gen t=_n
gen y=.
replace y=rnormal(0,1)
replace y=0.1*y[_n-1]+e if t>1
tset t
ac y
clear all
set seed 12345
set obs 300
gen e=rnormal(0, 3^0.5)
gen t=_n
gen y=.
replace y=rnormal(0,1)
replace y=0.3*y[_n-1]+e if t>1
tset t
ac y
clear all
set seed 12345
set obs 300
gen e=rnormal(0, 3^0.5)
gen t=_n
gen y=.
replace y=rnormal(0,1)
replace y=0.4*y[_n-1]+e if t>1
tset t
ac y
clear all
set seed 12345
set obs 300
gen e=rnormal(0, 3^0.5)
gen t=_n
gen y=.
replace y=rnormal(0,1)
replace y=0.5*y[_n-1]+e if t>1
tset t
ac y
clear all
set seed 12345
set obs 300
gen e=rnormal(0, 3^0.5)
gen t=_n
gen y=.
replace y=rnormal(0,1)
replace y=0.6*y[_n-1]+e if t>1
tset t
ac y
*2 Generate a random walk with drift*
clear all
set seed 12345
set obs 300
gen e=rnormal(0, 3^0.5)
gen t=_n
gen y=.
replace y=rnormal(0,1)
replace y=0.7+y[_n-1]+e if t>1
tset t
ac y
*3 AR(1) without drift*
clear all
program station, rclass
clear
set obs 200
gen time=_n
gen e=rnormal(0,1)
gen y=e
qui replace y=0.15*y[_n-1]+e if time>1
tsset time
gen dy=y-y[_n-1]
gen ly=y[_n-1]
qui regress dy ly
end
set seed 12345
simulate bv=_b[ly] sev=_se[ly], reps(10000) nodots:station
gen adfs=bv/sev
sum, detail
hist adfs, percent
clear all
program station, rclass
clear
set obs 200
gen time=_n
gen e=rnormal(0,1)
gen y=e
qui replace y=0.25*y[_n-1]+e if time>1
tsset time
gen dy=y-y[_n-1]
gen ly=y[_n-1]
qui regress dy ly
end
set seed 12345
simulate bv=_b[ly] sev=_se[ly], reps(10000) nodots:station
gen adfs=bv/sev
sum, detail
hist adfs, percent
clear all
program station, rclass
clear
set obs 200
gen time=_n
gen e=rnormal(0,1)
gen y=e
qui replace y=0.33*y[_n-1]+e if time>1
tsset time
gen dy=y-y[_n-1]
gen ly=y[_n-1]
qui regress dy ly
end
set seed 12345
simulate bv=_b[ly] sev=_se[ly], reps(10000) nodots:station
gen adfs=bv/sev
sum, detail
hist adfs, percent
clear all
program station, rclass
clear
set obs 200
gen time=_n
gen e=rnormal(0,1)
gen y=e
qui replace y=0.42*y[_n-1]+e if time>1
tsset time
gen dy=y-y[_n-1]
gen ly=y[_n-1]
qui regress dy ly
end
set seed 12345
simulate bv=_b[ly] sev=_se[ly], reps(10000) nodots:station
gen adfs=bv/sev
sum, detail
hist adfs, percent
clear all
program station, rclass
clear
set obs 200
gen time=_n
gen e=rnormal(0,1)
gen y=e
qui replace y=0.76*y[_n-1]+e if time>1
tsset time
gen dy=y-y[_n-1]
gen ly=y[_n-1]
qui regress dy ly
end
set seed 12345
simulate bv=_b[ly] sev=_se[ly], reps(10000) nodots:station
gen adfs=bv/sev
sum, detail
hist adfs, percent
*random walk without draft*
clear all
set seed 12345
program rw
syntax[, obs(integer 1)]
clear
set obs `obs'
gen e=rnormal(0,1)
gen t=_n
tset t
gen y=.
replace y=e
replace y=L.y+e if t>1
reg d.y L.y
gen df=(_b[L.y])/_se[L.y]
end
simulate df=df, nodots reps(10000): rw, obs(200)
hist df
sum df, detail
gen dfmean=r(mean)
gen dfvariance=r(var)
gen dfskewness=r(skewness)
gen dfkurtosis=r(kurtosis)
sum dfmean dfvariance dfskewness dfkurtosis
clear
*4AR(3)*
clear all
set seed 12345
program ar3, rclass
syntax[, obs(integer 1)]
clear
set obs `obs'
gen e=rnormal(0, 3^0.5)
gen t=_n
tset t
gen y=rnormal(0,1)
replace y=e
replace y=1.1*L.y+e if t>1
replace y=1.1*L.y-0.38*L2.y+e if t>2
replace y=1.1*L.y-0.38*L2.y+0.04*L3.y+e if t>3
corrgram y
gen ac1=r(ac1)
gen ac2=r(ac2)
gen ac3=r(ac3)
gen ac4=r(ac4)
gen ac5=r(ac5)
gen ac6=r(ac6)
gen ac7=r(ac7)
gen ac8=r(ac8)
gen ac9=r(ac9)
gen ac10=r(ac10)
gen ac11=r(ac11)
gen ac12=r(ac12)
gen ac13=r(ac13)
gen ac14=r(ac14)
gen ac15=r(ac15)
gen ac16=r(ac16)
gen pac1=r(pac1)
gen pac2=r(pac2)
gen pac3=r(pac3)
gen pac4=r(pac4)
gen pac5=r(pac5)
gen pac6=r(pac6)
gen pac7=r(pac7)
gen pac8=r(pac8)
gen pac9=r(pac9)
gen pac10=r(pac10)
gen pac11=r(pac11)
gen pac12=r(pac12)
gen pac13=r(pac13)
gen pac14=r(pac14)
gen pac15=r(pac15)
gen pac16=r(pac16)
end
simulate ac1=ac1 ac2=ac2 ac3=ac3 ac4=ac4 ac5=ac5 ac6=ac6 ac7=ac7 ac8=ac8 ac9=ac9 ac10=ac10 ac11=ac11 ac12=ac12 ac13=ac13 ac14=ac14 ac15=ac15 ac16=ac16 pac1=pac1 pac2=pac2 pac3=pac3 pac4=pac4 pac5=pac5 pac6=pac6 pac7=pac7 pac8=pac8 pac9=pac9 pac10=pac10 pac11=pac11 pac12=pac12 pac13=pac13 pac14=pac14 pac15=pac15 pac16=pac16, nodots reps(500): ar3, obs(300)
*The above is in one line. Since the stata doesn't work when I repeat 10000 times, I repeat 500 times.*
graph bar (mean) ac1 ac2 ac3 ac4 ac5 ac6 ac7 ac8 ac9 ac10 ac11 ac12 ac13 ac14 ac15 ac16
graph bar (mean) pac1 pac2 pac3 pac4 pac5 pac6 pac7 pac8 pac9 pac10 pac11 pac12 pac13 pac14 pac15 pac16
*5 MA(5)*
clear all
program ma5, rclass
clear
set obs 300
gen time=_n
gen e=rnormal(0, 3^(1/2))
gen y=rnormal(0, 3^(1/2))
qui replace y=0.2-0.37*e[_n-1]+0.045*e[_n-2]+0.0018*e[_n-3]+e in 4/L
tsset time
corrgram y, lags(16) noplot
matrix ac=r(AC)
matrix pac=r(PAC)
svmat ac
svmat pac
return scalar ac1=ac1 in 1
return scalar ac2=ac2 in 1
return scalar ac3=ac3 in 1
return scalar ac4=ac4 in 1
return scalar ac5=ac5 in 1
return scalar ac6=ac6 in 1
return scalar ac7=ac7 in 1
return scalar ac8=ac8 in 1
return scalar ac9=ac9 in 1
return scalar ac10=ac10 in 1
return scalar ac11=ac11 in 1
return scalar ac12=ac12 in 1
return scalar ac13=ac13 in 1
return scalar ac14=ac14 in 1
return scalar ac15=ac15 in 1
return scalar ac16=ac16 in 1
return scalar pac1=pac1 in 1
return scalar pac2=pac2 in 1
return scalar pac3=pac3 in 1
return scalar pac4=pac4 in 1
return scalar pac5=pac5 in 1
return scalar pac6=pac6 in 1
return scalar pac7=pac7 in 1
return scalar pac8=pac8 in 1
return scalar pac9=pac9 in 1
return scalar pac10=pac10 in 1
return scalar pac11=pac11 in 1
return scalar pac12=pac12 in 1
return scalar pac13=pac13 in 1
return scalar pac14=pac14 in 1
return scalar pac15=pac15 in 1
return scalar pac16=pac16 in 1
end
simulate ac1=ac1 ac2=ac2 ac3=ac3 ac4=ac4 ac5=ac5 ac6=ac6 ac7=ac7 ac8=ac8 ac9=ac9 ac10=ac10 ac11=ac11 ac12=ac12 ac13=ac13 ac14=ac14 ac15=ac15 ac16=ac16 pac1=pac1 pac2=pac2 pac3=pac3 pac4=pac4 pac5=pac5 pac6=pac6 pac7=pac7 pac8=pac8 pac9=pac9 pac10=pac10 pac11=pac11 pac12=pac12 pac13=pac13 pac14=pac14 pac15=pac15 pac16=pac16, nodots reps(500): ma5, obs(300)
*The above is in one line. Since the stata doesn't work when I repeat 10000 times, I repeat 500 times.*
graph bar (mean) ac1 ac2 ac3 ac4 ac5 ac6 ac7 ac8 ac9 ac10 ac11 ac12 ac13 ac14 ac15 ac16
graph bar (mean) pac1 pac2 pac3 pac4 pac5 pac6 pac7 pac8 pac9 pac10 pac11 pac12 pac13 pac14 pac15 pac16
*6 Compare DF *
clear
set seed 12345
set obs 25
gen e=rnormal(0,2.5^0.5)
gen t=_n
tset t
gen y=.
replace y=rnormal(0,1)
replace y=0.98*L.y+e if t>1
regress d.y L.y
gen DF=(_b[L.y])/_se[L.y]
*1%*
sum DF if DF1
regress d.y L.y
gen DF=(_b[L.y])/_se[L.y]
*1%*
sum DF if DF<-2.66
*5%*
sum DF if DF<-1.95
*10%*
sum DF if DF<-1.60
*comparing is in the output file*
*7 AR(1) and random walk without drift*
clear all
set seed 12345
set obs 30
gen time=_n
gen ex=rnormal(0,1)
gen ey=rnormal(0,1)
gen x=rnormal(0,1)
gen y=rnormal(0,1)
qui replace x=x[_n-1]+ex in 2/L
qui replace y=0.2*y[_n-1]+ey in 2/L
regress y x
predict resid, res
gen tstatistic=(_b[x])/_se[x]
gen r2=e(r2)
tsset time
corrgram resid, lags(15)
ac resid, lags(15)
*2000000*
clear all
set seed 12345
set obs 2000000
gen time=_n
gen ex=rnormal(0,1)
gen ey=rnormal(0,1)
gen x=rnormal(0,1)
gen y=rnormal(0,1)
qui replace x=x[_n-1]+ex in 2/L
qui replace y=0.2*y[_n-1]+ey in 2/L
regress y x
predict resid, res
gen tstatistic=(_b[x])/_se[x]
gen r2=e(r2)
tsset time
corrgram resid, lags(15)
ac resid, lags(15)
*8 Two independent random walks with drift*
clear all
set seed 12345
set obs 1000000
gen time=_n
gen ex=rnormal(0,1)
gen ey=rnormal(0,1)
gen x=rnormal(0,1)
gen y=rnormal(0,1)
qui replace x=0.25+x[_n-1]+ex in 2/L
qui replace y=0.5+y[_n-1]+ey in 2/L
reg y x
gen r2=e(r2)
sum r2
predict residual, res
tsset time
ac residual, lags(25)