## Fitting the prostate data set using algorithm 3.2 > pr.train <- pr.std[train==1,] > dim(pr.train) [1] 67 10 > is.data.frame(pr.train) [1] TRUE > attach(pr.train) > mean(pgg45) [1] 0.06691289 > pgg45res <- pgg45-mean(pgg45) # regress pgg45 on the 1-vector > lm(gleason~pgg45res) Call: lm(formula = gleason ~ pgg45res) Coefficients: (Intercept) pgg45res -0.02940 0.71530 > lm1<-.Last.value > lm2<-lm(lcp~lm1$residuals+pgg45res) > lm3<-lm(svi~lm2$residuals+lm1$residuals+pgg45res) > lm4<-lm(lbph~lm3$residuals+lm2$residuals+lm1$residuals+pgg45res) > lm5 <- lm(age~lm4$residuals+lm3$residuals+lm2$residuals+lm1$residuals+pgg45res) > lm6<-lm(lweight~lm5$residuals+lm4$residuals+lm3$residuals+lm2$residuals+lm1$residuals+pgg45res) > > lm6<-lm(lweight~lm5$residuals+lm4$residuals+lm3$residuals+lm2$residuals+lm1$residuals+pgg45res) > lm7 <- lm(lcavol~lm6$residuals+lm5$residuals+lm4$residuals+lm3$residuals+lm2$residuals+lm1$residuals+pgg45res) > lm(lpsa~lm7$residuals) Call: lm(formula = lpsa ~ lm7$residuals) Coefficients: (Intercept) lm7$residuals 2.4523 0.6795 > pr.lm Call: lm(formula = lpsa ~ . - train, data = pr.std, subset = train == 1) Coefficients: (Intercept) lcavol lweight age lbph svi lcp gleason 2.47951 0.67953 0.30494 -0.14146 0.21015 0.30520 -0.28849 -0.02131 pgg45 0.26696 ## Note that coefficient for lcavol obtained earlier is the same as the one ## obtained using algorithm 3.2 ##################################### ## all possible subsets regression > library(leaps) > ?leaps > ls() [1] "junk" "last.warning" "lm1" "lm2" "lm3" "lm4" "lm5" [8] "lm6" "lm7" "pgg45res" "pr" "pr.gam" "pr.lm" "pr.lm2" [15] "pr.std" "pr.train" "prostate.tree" "std" "test.y" "x" > pr.train[1,] lcavol lweight age lbph svi lcp gleason pgg45 lpsa train 1 -1.637356 -1.778439 -1.862426 -1.024706 -0.5229409 -0.8631712 -1.042157 -0.8644665 -0.4307829 1 > pr[1,] lcavol lweight age lbph svi lcp gleason pgg45 lpsa train 1 -0.5798185 2.769459 50 -1.386294 0 -1.386294 6 0 -0.4307829 TRUE > leaps(x=as.matrix(pr.train[,1:8]),y=pr.train[,9]) $which 1 2 3 4 5 6 7 8 1 TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 1 FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE 1 FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE 1 FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE 1 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE 1 FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE 1 FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE 2 TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE 2 TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE 2 TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE 2 TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE 2 TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE 2 TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE 2 TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE 2 FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE 2 FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE 2 FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE 3 TRUE TRUE FALSE FALSE TRUE FALSE FALSE FALSE 3 TRUE TRUE FALSE FALSE FALSE FALSE FALSE TRUE 3 TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE 3 TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE 3 TRUE TRUE FALSE FALSE FALSE FALSE TRUE FALSE 3 TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE 3 TRUE TRUE FALSE FALSE FALSE TRUE FALSE FALSE 3 TRUE FALSE FALSE TRUE FALSE FALSE FALSE TRUE 3 TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE 3 TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE 4 TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE 4 TRUE TRUE FALSE FALSE TRUE FALSE FALSE TRUE 4 TRUE TRUE FALSE TRUE FALSE FALSE FALSE TRUE 4 TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE 4 TRUE TRUE FALSE FALSE TRUE FALSE TRUE FALSE 4 TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE 4 TRUE TRUE FALSE FALSE FALSE TRUE FALSE TRUE 4 TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE 4 TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE 4 TRUE FALSE FALSE TRUE TRUE TRUE FALSE FALSE 5 TRUE TRUE FALSE TRUE TRUE FALSE FALSE TRUE 5 TRUE TRUE FALSE FALSE TRUE TRUE FALSE TRUE 5 TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE 5 TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE 5 TRUE TRUE FALSE TRUE TRUE FALSE TRUE FALSE 5 TRUE TRUE TRUE TRUE FALSE FALSE FALSE TRUE 5 TRUE TRUE TRUE FALSE TRUE FALSE FALSE TRUE 5 TRUE TRUE FALSE FALSE TRUE TRUE TRUE FALSE 5 TRUE TRUE FALSE TRUE FALSE TRUE FALSE TRUE 5 TRUE TRUE TRUE FALSE FALSE TRUE FALSE TRUE 6 TRUE TRUE FALSE TRUE TRUE TRUE FALSE TRUE 6 TRUE TRUE TRUE TRUE TRUE FALSE FALSE TRUE 6 TRUE TRUE TRUE FALSE TRUE TRUE FALSE TRUE 6 TRUE TRUE TRUE TRUE TRUE FALSE TRUE FALSE 6 TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE 6 TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE 6 TRUE TRUE FALSE TRUE TRUE FALSE TRUE TRUE 6 TRUE TRUE FALSE FALSE TRUE TRUE TRUE TRUE 6 TRUE TRUE TRUE TRUE FALSE TRUE FALSE TRUE 6 TRUE TRUE TRUE FALSE TRUE TRUE TRUE FALSE 7 TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE 7 TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE 7 TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE 7 TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE 7 TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE 7 TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE 7 TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE 7 FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 8 TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE $label [1] "(Intercept)" "1" "2" "3" "4" "5" "6" "7" [9] "8" $size [1] 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 [57] 7 7 8 8 8 8 8 8 8 8 9 $Cp [1] 24.766739 67.919902 81.356324 82.093779 88.676389 104.520541 113.652518 116.938459 12.108779 17.825642 [11] 22.398961 24.587817 26.560758 26.646478 26.701812 40.929828 47.492867 50.890946 9.803880 10.841197 [21] 11.896574 11.986624 13.254631 13.567505 14.104723 16.973886 19.451158 19.637461 7.679020 10.160844 [31] 10.520823 10.554147 11.210485 11.418311 11.486420 11.622995 12.633296 12.689889 8.209530 8.501411 [41] 8.633280 8.708966 9.327889 10.415197 11.313823 11.324420 11.690506 11.850092 7.194521 8.487149 [51] 9.230453 9.688924 9.703734 9.903660 10.078118 10.383958 11.262653 12.214720 7.021515 8.948562 [61] 10.020087 10.485363 11.226501 13.097221 14.566842 35.797073 9.000000 ## In class I plotted $Cp against $size