Exemplo de Regressão Linear Simples Dados: Valores de vendas de empresas do ramo de bebidas, sendo: Y = Total das vendas (US$10mil) e X = gastos com propaganda. X 11 5 3 9 1 6 5 9 Y 5 13 8 0 5 1 10 15 Figura 1: Gráfico de pontos de Y versus X. I) Somas e somas de quadrados: a) x 11 5 3 9 1 6 5 9 60 b) x 11 5 9 81 144 36 5 81 5 c) y 5 13 8 0 5 1 10 15 18 d) y 65 169 64 400 65 144 100 5 35 e) xy 75 65 4 180 300 7 50 135 1101 II) Médias e variâncias amostrais: 60 18 a) x 7. 50 e y 16. 0 8 8 b) S x x n x 5 8(7.5) 7 e 7 s x 7
c) S y y n y 35 8(16) 304 d) S xy xy n x y 1101 8(7.5)(16) 141 e e 304 s y 7 141 s xy 7 sxy 141 e) CorrelaÄÅo entre X e Y: r xy 0. 953 s s 7 304 x y (muito alta) III) Estimativas dos coeficientes de regressåo: S a) xy 141 1 1. 958 S 7 x e y x 1. 31 0 1 b) Reta ajustada: y x 1.31 1. 958x 0 1 Sxy ( 141) c) Coeficiente de determinaäåo: R ( r ) 0. 908 xy, S S 7 304 ou seja, a porcentagem da variaäåo de Y explicada pela reta ajustada É de 90.8%. x y IV) Valores ajustados e resñduos: y i yi 0 1 x i ei yi y i 5.85.15 13 11.10 1.89 8 7.19 0.81 0 18.94 1.06 5 4.81 0.19 1 13.06-1.06 10 11.10-1.10 15 18.94-3.94 V) Tabela de Analise de variöncia: SQRegr ( y i y) 76.15 SQRes ( y i ) i y 7.875 SQTotal ( yi y) S y 304 Nota: SQTotal SQRegr SQRes 76.15 7.875 304
ANOVA Fonte de Variação GL SQ QM F Valor p Regressão 1 76.15 76.15 59.435 0.000497 Resíduos 6 7.875 4.64583 Total 7 304.000 Observações: i) Hipóetes para a tabela ANOVA: H 0 : 1 0 H A: 1 0 ; ii) O valor F da tabela ANOVA, sob a hipótese nula, tem distribuição F com 1 e 6 graus de liberdade, associados aos graus de liberdade da regressão e resíduos, respectivamente, ou seja: F F 1; 6 iii) O valor p associado do teste F é obtido de P F 59.435 0. 000497 p. 1;6 No R este valor é calculado com o comando: 1-pf(59.435,1,6) VI) Análise dos resíduos: Realizados os cálculos e análises anteriores, vamos avaliar os resíduos para avaliar a qualidade do ajuste. (normalidade, igualdade de variâncias e independência) Figura : Gráfico 4 1 para análise dos resíduos. A questão que fica: O que dizer desse ajuste?
# Exemplo 1 - Dados qualidade do ar ################################### Sol.R <- c(190,118,149,313,99,99,56,90,74,65,334,307,78,3,44,8,30,5,9, 13,5,79,17,91,33,148,191,37,10,137,48,36,175,314,76,67, 7,175,64,175) Wind <- c(7.4,8,1.6,11.5,8.6,13.8,9.7,9.,10.9,13.,11.5,1,18.4,11.5,9.7,9.7, 16.6,9.7,1,1,14.9,7.4,9.7,13.8,11.5,8,14.9,9.,11.5,10.3,9.,9., 4.6,10.9,5.1,6.3,5.7,7.4,14.3,14.9) Temp <- c(67,7,74,6,65,59,69,66,68,58,64,66,57,68,6,59,73,61,61,67,81,76,8, 90,87,8,77,65,73,76,85,81,83,83,88,9,9,89,73,81) Ozone <- c(41,36,1,18,3,19,16,11,14,18,14,34,6,30,11,1,11,4,3,3,45,37,9,71, 39,3,1,0,1,13,49,3,64,40,77,97,97,85,10,7) cor(cbind(ozone,sol.r,wind,temp)) # corelações plot(sol.r,ozone,pch=19) plot(wind,ozone,pch=19) plot(temp,ozone,pch=19) ## Ajustando o modelo para as variáveis Ozone vs. Temp ## X = Temp e Y = Ozone ## --------------------------------------------------- n <- length(temp) xbar <- mean(temp) ybar <- mean(ozone) Sx <- sum(temp^)-n*(xbar^) Sy <- sum(ozone^)-n*(ybar^) Sxy <- sum(ozone*temp)-n*xbar*ybar rxy <- Sxy/sqrt(Sx*Sy) beta1 <- Sxy/Sx beta0 <- ybar-beta1*xbar c(beta0,beta1) ych <- beta0+beta1*temp res <- Ozone-ych # valores ajustados # resíduos # Análise gráfica dos resíduos par(mfrow = c(,)) # esse comando divide a janela gráfica numa matriz x # histograma dos resíduos hist(res, col = "bisque", xlab="resíduos padronizados", ylab=" ", main="histograma dos Resíduos", cex.main=1) # gráfico normal qq-plot dos resíduos qqnorm(res, pch=19, col="red", xlab="quantis teóricos", ylab="quantis amostrais", main="normal Q-Q plot dos Resíduos", cex.main=1) qqline(res, col="blue3") # gráfico resíduos x valores ajustados plot(ych,res,pch=19,col="red", xlab="valores ajustados", ylab="resíduos padronizados", main="resíduos x Ajustados", cex.main=1) lines(c(0,max(ych)),c(0,0),lty=) # resíduos x ordem (timeplot) plot(res, main="resíduos x ordem", ylab="resíduos padronizados", pch=19, col="red3", cex.main=1) lines(res, col="blue3") lines(c(0,max(ych)),c(0,0),lty=) par(mfrow = c(1,1))
# gráfico de pontos com modelo ajustado plot(temp,ozone,pch=19, xlab="temperatura", ylab="conc.ozone (ppm)", main="gráfico XY", cex.main=1) lines(temp[order(temp)],ych[order(temp)], col="blue3", lwd=) # Exemplo - Dados com função quadrática ######################################### x <- c(.5,3.6,5.0,3.7,3.8,3.,4.3,3.6,4.6,4.3,4.3,4.,3.0,.1,.6,3.1,.0,.,4.9,4.0,4.9,3.3,.5,3.5,4.1,.6,3.9,4.6,4.1,.3,4.6,3.5,4.4,3.6,.9,.7,4.7,3.6,3.8,3.8) y <- c(7.,43.0,146.6,73.4,57.6,37.1,8.0,74.0,104.1,70.8,79.3,105.9,7.5, 1.3,4.6,45.3,18.5,1.,135.0,70.4,138.9,36.,6.6,51.3,76.4,14.5, 71.4,130.7,89.3,3.9,111.,61.6,101.4,77.6,36.8,16.4,144.0,7.1,83.0, 57.5) cor(x,y) plot(x,y,pch=19) # gráfico de pontos com relação quadrática entre X e Y ## Ajustando o modelo linear entre X e Y ## ------------------------------------- ajuste <- lm(y~x) # modelo RLS com variável quadrática coef(ajuste) # coeficientes beta0 e beta1 estimados summary(ajuste) # testes de hipóteses aov(ajuste) # somas de quadrados # Análise gráfica dos resíduos # ---------------------------- res <- ajuste$res sdres <- rstandard(ajuste) ych <- ajuste$fit # resíduos # resíduos padronizados # valores ajustados par(mfrow = c(,)) # esse comando divide a janela gráfica numa matriz x # histograma dos resíduos hist(sdres, col = "bisque", xlab="resíduos padronizados", ylab=" ", main="histograma dos Resíduos", cex.main=1) # gráfico normal qq-plot dos resíduos qqnorm(sdres, pch=19, col="red", xlab="quantis teóricos", ylab="quantis amostrais", main="normal Q-Q plot dos Resíduos", cex.main=1) qqline(sdres, col="blue3") # gráfico resíduos x valores ajustados plot(ych,sdres,pch=19,col="red", xlab="valores ajustados", ylab="resíduos padronizados", main="resíduos x Ajustados", cex.main=1) lines(c(min(ych),max(ych)),c(0,0),lty=) # resíduos x ordem (timeplot) plot(sdres, main="resíduos x ordem", ylab="resíduos padronizados", pch=19, col="red3", cex.main=1) lines(sdres, col="blue3") lines(c(0,mlength(sdres)),c(0,0),lty=) par(mfrow = c(1,1))
# gráfico do modelo ajustado #--------------------------- plot(x,y,pch=19, xlab="x", ylab="y", main="gráfico XY", cex.main=1) lines(x[order(x)],ych[order(x)], col="red", lwd=) ## Ajustando o modelo quadrático entre X e Y ## ----------------------------------------- x.q <- x^ ajuste.q <- lm(y~x.q) # modelo RLS com variável quadrática coef(ajuste.q) # coeficientes beta0 e beta1 estimados summary(ajuste.q) # testes de hipóteses aov(ajuste.q) # somas de quadrados # Análise gráfica dos resíduos # ---------------------------- res.q <- ajuste.q$res sdres.q <- rstandard(ajuste.q) ych.q <- ajuste.q$fit # resíduos # resíduos padronizados # valores ajustados par(mfrow = c(,)) # esse comando divide a janela gráfica numa matriz x # histograma dos resíduos hist(sdres.q, col = "bisque", xlab="resíduos padronizados", ylab=" ", main="histograma dos Resíduos", cex.main=1) # gráfico normal qq-plot dos resíduos qqnorm(sdres.q, pch=19, col="red", xlab="quantis teóricos", ylab="quantis amostrais", main="normal Q-Q plot dos Resíduos", cex.main=1) qqline(sdres.q, col="blue3") # gráfico resíduos x valores ajustados plot(ych.q,sdres.q,pch=19,col="red", xlab="valores ajustados", ylab="resíduos padronizados", main="resíduos x Ajustados", cex.main=1) lines(c(min(ych.q),max(ych.q)),c(0,0),lty=) # resíduos x ordem (timeplot) plot(sdres.q, main="resíduos x ordem", ylab="resíduos padronizados", pch=19, col="red3", cex.main=1) lines(sdres.q, col="blue3") lines(c(0,length(sdres.q)),c(0,0),lty=) par(mfrow = c(1,1)) # gráfico do modelo ajustado #--------------------------- plot(x,y,pch=19, xlab="x", ylab="y", main="gráfico XY - modelo quadrático em X", cex.main=1) lines(x[order(x)],ych.q[order(x)], col="red", lwd=)
# Exemplo 3 - Dados gerados ########################### x1 <- c(18,18,0,3,3,19,,,17,0,1,0,17,,18,,1,18) x <- c(11,1,13,1,13,10,1,1,13,14,11,13,14,13,13,11,13,14) x3 <- c( 6,3,34,66,33,30,41,46,5,33,37,15,34,11,,49,41,7) y <- c( 3, 6, 9,13, 9, 3,10,1, 8, 8, 8, 7, 8, 1, 6,10,11, 9) cor(cbind(y,x1,x,x3)) # corelações ## Realize os três ajustes e verifique os testes F para Ho: beta1 = 0 em cada um deles ## ---------------------------------------------------- plot(x,y,pch=19) ajuste <- lm(y~x) # modelo RLS entre x e y summary(ajuste) # Estatística-F: 0.565 com 1 e 16 GL, p-valor: 0.4641 plot(x,y,pch=19, xlab="x", ylab="y", main="gráfico Y vs. X", cex.main=1) lines(x[order(x)],ajuste$fit[order(x)], col="red", lwd=) plot(x1,y,pch=19) ajuste1 <- lm(y~x1) # modelo RLS entre x1 e y summary(ajuste1) # Estatística-F: 3.1 com 1 e 16 GL, p-valor: 0.0964 plot(x1,y,pch=19, xlab="x1", ylab="y", main="gráfico Y vs. X1", cex.main=1) lines(x1[order(x1)],ajuste1$fit[order(x1)], col="red", lwd=) plot(x3,y,pch=19) ajuste1 <- lm(y~x3) # modelo RLS entre x3 e y summary(ajuste3) # Estatística-F: 34.69 com 1 e 16 GL, p-valor: 0.00008 plot(x3,y,pch=19, xlab="x3", ylab="y", main="gráfico Y vs. X3", cex.main=1) lines(x3[order(x3)],ajuste3$fit[order(x3)], col="red", lwd=) # Exemplo - 4 ############# y <- c(77.86,735.84,46.53,596.63,1035.7,1141.44,658.88,79.8,783.4,644.13, 504.54,774.79,93.65,70.38,95.6) x1 <- c(5,6,0,3,30,31,5,8,7,4,,6,8,5,9) x <- c(4,,4,3,7,6,1,3,,3,1,4,5,6,3) cor(cbind(y,x1,x)) plot(x,y,pch=19) ajuste <- lm(y~x) summary(ajuste) # corelações # modelo RLS entre x1 e y # Verifique a estatística F e o p-valor plot(x,y,pch=19, xlab="x", ylab="y", main="gráfico Y vs. X", cex.main=1) lines(x[order(x)],ajuste$fit[order(x)], col="red", lwd=) plot(x1,y,pch=19) ajuste1 <- lm(y~x1) summary(ajuste1) # modelo RLS entre x1 e y # Verifique a estatística F e o p-valor plot(x1,y,pch=19, xlab="x1", ylab="y", main="gráfico Y vs. X1", cex.main=1) lines(x1[order(x1)],ajuste1$fit[order(x1)], col="red", lwd=)