/* ** Lesson 5.4: Ridge Regression and Principal Components */ use gpe2; output file = gpe\output5.4 reset; load data[17,7] = gpe\longley.txt; data = data[2:17,.]; year = data[.,1]; pgnp = data[.,2]; gnp = data[.,3]; af = data[.,5]; em = data[.,7]; call reset; _names = {"em","year","pgnp","gnp","af"}; call estimate(em,year~pgnp~gnp~af); /* explanatory variables including constant */ x = year~pgnp~gnp~af~ones(rows(year),1); /* ridge regression */ r=0.3; a = invpd(eye(cols(x))+r*invpd(x'x)); br = a*__b; vbr = a*__vb*a'; print "Ridge Regression Model:"; print " Coefficient Std Error";; print br~sqrt(diag(vbr)); /* Principal Components */ @ compute char. roots and vectors of X'X @ {r,v}=eigrs2(x'x); v = selif(v',r.>0.1)'; bpc = v*v'__b; vbpc = v*v'__vb*v*v'; print; print "Principal Components Model:"; print " Coefficient Std Error";; print bpc~sqrt(diag(vbpc)); end;