#getwd setwd("/Users/hedibert/Desktop") data = read.table("http://hedibert.org/wp-content/uploads/2014/03/houseprices.txt",header=TRUE) attach(data) size = 0.092903*SqFt price = 3.31*Price/1000 pdf(file="houseprices-analise-de-residuos.pdf",width=9,height=6) # Regressores potenciais # ------------------------ par(mfrow=c(2,2)) plot(size,price,xlab="Tamanho (m2)",ylab="Preco (x1000 reais)") plot(Bedrooms,price,xlab="Numero de quartos",ylab="Preco (x1000 reais)") plot(Bathrooms,price,xlab="Numero de banheiros",ylab="Preco (x1000 reais)") plot(Brick,price,xlab="Alvenaria?",ylab="Preco (x1000 reais)") # 1o modelo de regressao # -------------------------- reg.simples = lm(price~size) sighat = summary(reg.simples)$sigma par(mfrow=c(1,2)) plot(size,price,xlab="Tamanho (m2)",ylab="Preco (x1000 reais)") abline(reg.simples,col=2,lwd=2) plot(size,reg.simples$residuals,xlab="Tamanho (m2)",ylab="Residuos") abline(h=-2*sighat,lty=2,lwd=2,col=2) abline(h=0,lty=1,lwd=2,col=2) abline(h=2*sighat,lty=2,lwd=2,col=2) par(mfrow=c(1,2)) plot(size,reg.simples$residuals,xlab="Tamanho (m2)",ylab="Residuos") abline(h=-2*sighat,lty=2,lwd=2,col=2) abline(h=0,lty=1,lwd=2,col=2) abline(h=2*sighat,lty=2,lwd=2,col=2) plot(size,reg.simples$residuals/sighat,xlab="Tamanho (m2)",ylab="Residuos padronizados") abline(h=-2,lty=2,lwd=2,col=2) abline(h=0,lty=1,lwd=2,col=2) abline(h=2,lty=2,lwd=2,col=2) # 2o modelo de regressao # -------------------------- reg.multipla = lm(price~size+Bedrooms) sighat = summary(reg.multipla)$sigma par(mfrow=c(1,2)) plot(size,reg.multipla$residuals/sighat,xlab="Tamanho (m2)",ylab="Residuos padronizados") abline(h=-2,lty=2) abline(h=0,lty=1) abline(h=2,lty=2) plot(Bedrooms,reg.multipla$residuals/sighat,xlab="Numero de quartos",ylab="Residuos padronizados") abline(h=-2,lty=2) abline(h=0,lty=1) abline(h=2,lty=2) par(mfrow=c(1,1)) plot(reg.multipla$fit,reg.multipla$residuals/sighat,xlab="Valores ajustados",ylab="Residuos padronizados") abline(h=-2,lty=2) abline(h=0,lty=1) abline(h=2,lty=2) title("preco = b0 + b1*tamanho + b2*quartos") # 3o modelo de regressao # -------------------------- reg.multipla2 = lm(price~size+Bedrooms+Bathrooms) sighat = summary(reg.multipla2)$sigma par(mfrow=c(1,1)) plot(reg.multipla2$fit,reg.multipla2$residuals/sighat,xlab="Valores ajustados", ylab="Residuos padronizados") abline(h=-2,lty=2) abline(h=0,lty=1) abline(h=2,lty=2) title("preco = b0 + b1*tamanho + b2*quartos + b3*banheiros") # 4o modelo de regressao # -------------------------- n = nrow(data) brick=rep(0,n) brick[Brick=="Yes"]=1 reg.multipla3 = lm(price~size+Bedrooms+Bathrooms+brick) sighat = summary(reg.multipla3)$sigma par(mfrow=c(1,1)) plot(reg.multipla3$fit,reg.multipla3$residuals/sighat,xlab="Valores ajustados", ylab="Residuos padronizados") abline(h=-2,lty=2) abline(h=0,lty=1) abline(h=2,lty=3) title("preco = b0 + b1*tamanho + b2*quartos + b3*banheiros + b4*alvenaria") # Comparing fitted values with observed values # ------------------------------------------------------- par(mfrow=c(2,2)) plot(reg.simples$fit,price,xlab="Valores ajustados",ylab="Preco (x1000 reais)") title("Tamanho") abline(0,1) legend("topleft",paste("R2=",round(summary(reg.simples)$adj.r,4),sep="")) plot(reg.multipla$fit,price,xlab="Valores ajustados",ylab="Preco (x1000 reais)") title("Tamanho e quartos") abline(0,1) legend("topleft",paste("R2=",round(summary(reg.multipla)$adj.r,4),sep="")) plot(reg.multipla2$fit,price,xlab="Valores ajustados",ylab="Preco (x1000 reais)") title("Tamanho, quartos e banheiros") abline(0,1) legend("topleft",paste("R2=",round(summary(reg.multipla2)$adj.r,4),sep="")) plot(reg.multipla3$fit,price,xlab="Valores ajustados",ylab="Preco (x1000 reais)") title("Tamanho, quartos, banheiros e alvenaria") abline(0,1) legend("topleft",paste("R2=",round(summary(reg.multipla3)$adj.r,4),sep="")) dev.off()