I'm trying to run a rolling time-series regression using mata and rangestat. The code that I'm using is the following:
Code:
mata:
mata clear
mata set matastrict on
real rowvector myreg(real matrix Xall)
{
real colvector y, b, Xy
real matrix X, XX
real scalar ymean, tss, mss, r2, r2a
y = Xall[.,1] // dependent var is first column of Xall
X = Xall[.,2::cols(Xall)] // the remaining cols are the independent variables
X = X,J(rows(X),1,1) // add a constant
XX = quadcross(X, X) // linear regression
Xy = quadcross(X, y)
b = invsym(XX) * Xy
ymean = mean(y)
tss = sum((y :- ymean) :^ 2) // total sum of squares
mss = sum( (X * b :- ymean) :^ 2) // model sum of squares
r2 = mss / tss
r2a = 1 - (1 - r2) * (rows(X) - 1) / (rows(X) - cols(X))
return(rows(X), r2a, b')
}
end
/*************Mata end*********************************************************/
rangestat (myreg) rirf rmrf, interval(date -60 -1) by(fund_id) casewise
rename myreg* (obs AdjR2 b_rmrf b_cons)Thanks
0 Response to Rangestat SE
Post a Comment