/; /; Example shows that PC regression is /; the same as OLS only in the Linear case. b34sexec matrix; call echooff; call load(ppexp_p); doppexp=1; mm=5; /; sets order of legenre. Larger => smoother jj=4; fei=.1e-4; fei=1. ; nei = 1 ; nei = 2 ; trm=.1; /; trm=0.; /; +++++++++++++++++++++++++++++++++++++++++++++ n=200; k=4; nk=k*3; x=rn(array(n,k:)); s=submatrix(x,1,n,2,k); y = 1.0 + 1.0*x(,1)+ 1.2*sumrows(s*s)+rn(array(n:)); call olsq(y x :print :savex); if(doppexp.eq.1)then; call ppexp(%res %x :mm mm :jj jj :fei fei :nei nei :trm trm print); ppi_ols=%ppindex; call ppexp_p(%xpa,%mm,%nob,0,'b',%ppindex); call dodos('copy ppexp_1.wmf ols_1.wmf':); call dodos('copy ppexp_2.wmf ols_2.wmf':); call dodos('copy ppindex.wmf ppindexols.wmf':); * call ppexp_p(%xpa,%mm,%nob,1 ,'b',%ppindex); call print(ppi_ols); endif; call gamfit(y x :print :savex); if(doppexp.eq.1)then; call ppexp(%res %x :mm mm :jj jj :fei fei :nei nei :trm trm print); ppi_gam=%ppindex; call ppexp_p(%xpa,%mm,%nob,0,'b',%ppindex); call dodos('copy ppexp_1.wmf gam_1.wmf':); call dodos('copy ppexp_2.wmf gam_2.wmf':); call dodos('copy ppindex.wmf ppindexgam.wmf':); * call ppexp_p(%xpa,%mm,%nob,1 ,'b',%ppindex); call print(ppi_gam); endif; call marspline(y x :print :nk nk :savex); if(doppexp.eq.1)then; call ppexp(%res %x :mm mm :jj jj :fei fei :nei nei :trm trm print); ppi_mars=%ppindex; call ppexp_p(%xpa,%mm,%nob,0,'b',%ppindex); call dodos('copy ppexp_1.wmf mars_1.wmf':); call dodos('copy ppexp_2.wmf mars_2.wmf':); call dodos('copy ppindex.wmf ppindexmas.wmf':); * call ppexp_p(%xpa,%mm,%nob,1 ,'b',%ppindex); call print(ppi_mars); endif; if(doppexp.eq.1)then; call tabulate(ppi_ols,ppi_gam,ppi_mars); call graph(ppi_ols ppi_gam ppi_mars :heading 'Testing if nonlinearity removed' :nocontact :pgborder :nolabel); endif; s=svd(mfam(x),ibad,21,u); call olsq(y u :print :savex); if(doppexp.eq.2)then; call ppexp(%res %x :mm mm :jj jj :fei fei :nei nei :trm trm print); ppi_ols=%ppindex; call ppexp_p(%xpa,%mm,%nob,0,'b',%ppindex); call dodos('copy ppexp_1.wmf ols_1.wmf':); call dodos('copy ppexp_2.wmf ols_2.wmf':); call dodos('copy ppindex.wmf ppindexols.wmf':); * call ppexp_p(%xpa,%mm,%nob,1 ,'b',%ppindex); call print(ppi_ols); endif; call gamfit(y u :print :savex); if(doppexp.eq.2)then; call ppexp(%res %x :mm mm :jj jj :fei fei :nei nei :trm trm print); ppi_gam=%ppindex; call ppexp_p(%xpa,%mm,%nob,0,'b',%ppindex); call dodos('copy ppexp_1.wmf gam_1.wmf':); call dodos('copy ppexp_2.wmf gam_2.wmf':); call dodos('copy ppindex.wmf ppindexgam.wmf':); * call ppexp_p(%xpa,%mm,%nob,1 ,'b',%ppindex); call print(ppi_gam); endif; call marspline(y u :print :nk nk :savex); if(doppexp.eq.2)then; call ppexp(%res %x :mm mm :jj jj :fei fei :nei nei :trm trm print); ppi_mars=%ppindex; call ppexp_p(%xpa,%mm,%nob,0,'b',%ppindex); call dodos('copy ppexp_1.wmf mars_1.wmf':); call dodos('copy ppexp_2.wmf mars_2.wmf':); call dodos('copy ppindex.wmf ppindexmas.wmf':); * call ppexp_p(%xpa,%mm,%nob,1 ,'b',%ppindex); call print(ppi_mars); endif; if(doppexp.eq.2)then; call tabulate(ppi_ols,ppi_gam,ppi_mars); call graph(ppi_ols ppi_gam ppi_mars :heading 'Testing if nonlinearity removed' :nocontact :pgborder :nolabel); endif; b34srun;