fat <- c(3,4,4,5,5,5,6,31,40) chol <- c(0,20,23,20,26,25,48,85,145) calories <- c(232,282,288,296,312,323,342,560,720) Subs <- data.frame(fat,chol,calories) rownames(Subs) <- c("Veggie","Turkey","Turkey+Ham","Ham","RoastBeef","ChickenBreast", "ChickenOriental","LoadedBurger","CheesyBurger") rm(fat,chol,calories) # fit a model to all of the data Subs.Fit <- lm(calories ~ fat + chol, data = Subs) summary(Subs.Fit) # this code creates a residual-by-predicted plot and a normal plot of the residuals par(mfrow=c(2,2)) # makes all future plots appear four per page plot(fitted(Subs.Fit),resid(Subs.Fit),xlab="Predicted Values", ylab="Residuals",main="Residual by Predicted plot") qqnorm(resid(Subs.Fit)) qqline(resid(Subs.Fit)) plot(Subs.Fit$model$fat,resid(Subs.Fit),xlab="Fat",ylab="Residuals",main="Residuals vs. Fat") plot(Subs.Fit$model$chol,resid(Subs.Fit),xlab="Cholesterol",ylab="Residuals",main="Residuals vs. Cholesterol") par(mfrow=c(1,1)) # restores one plot per page windows() # this plots Studentized residuals vs. Leverage values, with reference lines # to help identify points that have high leverage and are outliers plot(hatvalues(Subs.Fit),rstudent(Subs.Fit),xlim=c(0,1),main=c("Studentized Residuals vs. Hat values")) abline(h=-2) abline(h=2) abline(v=2*length(Subs.Fit$coefficients)/length(Subs.Fit$residuals)) # reference line at 2p/n text(hatvalues(Subs.Fit),rstudent(Subs.Fit),labels=rownames(Subs.Fit$model),pos=4,cex=.8) # fit the model again after deleting the two burgers Subs.Fit2 <- update(Subs.Fit,subset = calories <= 500) summary(Subs.Fit2) # this code creates a residual-by-predicted plot and a normal plot of the residuals par(mfrow=c(2,2)) # makes all future plots appear four per page plot(fitted(Subs.Fit2),resid(Subs.Fit2),xlab="Predicted Values", ylab="Residuals",main="Residual by Predicted plot") qqnorm(resid(Subs.Fit2)) qqline(resid(Subs.Fit2)) plot(Subs.Fit2$model$fat,resid(Subs.Fit2),xlab="Fat",ylab="Residuals",main="Residuals vs. Fat") plot(Subs.Fit2$model$chol,resid(Subs.Fit2),xlab="Cholesterol",ylab="Residuals",main="Residuals vs. Cholesterol") par(mfrow=c(1,1)) # restores one plot per page windows() # this plots Studentized residuals vs. Leverage values, with reference lines # to help identify points that have high leverage and are outliers plot(hatvalues(Subs.Fit2),rstudent(Subs.Fit2),xlim=c(0,1),main=c("Studentized Residuals vs. Hat values")) abline(h=-2) abline(h=2) abline(v=2*length(Subs.Fit2$coefficients)/length(Subs.Fit2$residuals)) # reference line at 2p/n text(hatvalues(Subs.Fit2),rstudent(Subs.Fit2),labels=rownames(Subs.Fit2$model),pos=4,cex=.8)