*! version 1.1 13 July 1992 (STB-9: srd13) program define maxr2 version 3.0 if "$S_E_cmd"!="fit" { error 301 } local sse=_result(4) local tss=_result(2)+`sse' local rsq=_result(7) local dfn=_result(3) local dfd=_result(5) local enn=_result(1) parse "$S_E_vl", parse(" ") local lhs "`1'" mac shift local rhs "`*'" if "$S_E_if" !="" | "$S_E_in" !="" { qui keep $S_E_if $S_E_in } qui keep if $S_E_depv!=. while "`1'"!="" { qui keep if `1'!=. mac shift } sort `rhs' qui by `rhs': gen double ydouble=sum(`lhs')/_N qui by `rhs': replace ydouble=ydouble[_N] qui by `rhs': gen int num=_n qui by `rhs': gen int num2=num if _n==_N-1 qui gen int dfs2=sum(num2) qui su dfs2 local dfsd=_result(6) local dfsn=`dfd'-`dfsd' qui fpredict double yhold qui gen double resid2=yhold-ydouble qui gen double resid4=resid2^2 qui gen double sse4=sum(resid4) qui su sse4 local loferr=_result(6) local purerr=`sse'-`loferr' local maxr2=(`tss'-`purerr')/`tss' noi di "max R-square = " %5.4f `maxr2' noi di "relative R-square = " %5.4f `rsq'/`maxr2' local rsqnew=`rsq'/`maxr2' #del ; noi di "Rel. Adj. R-square= " %5.4f 1-((1-`rsqnew')*((`enn'-1)/(`enn'-(`dfn'+1)))) ; #del cr noi di "" local msl=`loferr'/`dfsn' local se2=`purerr'/(`dfd'-`dfsn') local loff=`msl'/`se2' noi di "SSLF (df) = " `loferr' _skip(1) "(" `dfsn' ") MSLF = " `msl' noi di "SSPE (df) = " `purerr' _skip(1) "(" `dfd'-`dfsn' ") MSPE = " `se2' noi di "" #del ; noi di "F (dfn, dfd) for lack-of-fit test (MSLF/MSPE) = "%9.4f `loff' _skip(1) "(" `dfsn' "," `dfsd' ")" ; noi di " prob > F = " %9.4f fprob(`dfsn',`dfsd',`loff') ; #del cr qui gen numk=sum(num2) noi di "" noi di "number of covariate patterns = " `enn'-numk[_N] noi di " as ratio of observations: " %5.3f (`enn'-numk[_N])/`enn' qui us $S_FN, replace end