trees<-read.table("trees.txt") names(trees)<-c("Diameter","Height","Volume") trees.fit <- lm(Volume~ Diameter+Height, trees) trees.fit summary(trees.fit) anova(trees.fit) trees.res <- residuals(trees.fit) trees.prd <- predict(trees.fit) s <- summary(trees.fit)$sigma h <- lm.influence(trees.fit)$hat trees.res <- trees.res/(s*sqrt(1-h)) par(mfrow=c(2,1)) plot(trees[,"Diameter"], trees.res, xlab="Diameter",ylab="Std. Residuals") abline(h=0, lty=2) title("Std. Residuals versus Diameter") plot(trees[,"Height"], trees.res, xlab="Height",ylab="Std. Residuals") abline(h=0, lty=2) title("Std. Residuals versus Height") par(mfrow=c(1,1)) plot(trees.prd, trees.res, xlab="Predicted Volume",ylab="Std. Residuals") abline(h=0,lty=2) title("Std. Residuals vs Fitted Values") qqnorm(trees.res,ylab="Std. Residuals",main="Normal Plot of Std. Residuals") qqline(trees.res) h <- lm.influence(trees.fit)$hat h plot(1:31,h, type="n", xlab="i", ylab="Diagonal of Hat Matrix") abline(h=mean(h)) segments(1:31, h, 1:31, mean(h)) trees1.fit <- lm(Volume~Diameter+I(Diameter*Diameter)+Height,trees) trees1.fit summary(trees1.fit) trees1.res<-residuals(trees1.fit) trees1.prd<-predict(trees1.fit) attach(trees) trees.drop1 <- drop1(trees.fit) trees.drop1 trees0.fit <- lm(Volume~1) trees.add1 <- add1(trees0.fit,~ Height+Diameter) trees.add1 trees1.drop1 <- drop1(trees1.fit) trees1.drop1 trees10.fit <- lm(Volume~1) trees1.add1 <- add1(trees10.fit,~ Height+Diameter+I(Diameter*Diameter)) trees1.add1