Thanks to Robert Picard, the following code estimates regression. How can I use it in ado program.
Code:
* define a linear regression with intercept in Mata mata: mata clear mata set matastrict on real rowvector myreg(real matrix Xall) { real colvector y, b, Xy real matrix X, XX, R real scalar ymean, tss, mss, r2 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, see help mata cross(), example 2 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 return(rows(X), r2, b') } end
Comment