Usei o IMPORT DATASET para importar o arquivo “cerveja1” utilizado durante as questões.

y = cerveja1$Consumo_cerveja
x1= cerveja1$Temperatura_Media
x2 = cerveja1$Temperatura_Minima
x3 = cerveja1$Temperatura_Maxima
x4 = cerveja1$Precipitacao
x5 = cerveja1$Final_de_Semana
tabela = cbind(y,x1,x2,x3,x4,x5)

Histograma do consumo de cerveja

hist(y, main = "Histograma do Consumo de Cerveja",xlab = "litros",freq = F, col = "lightblue", breaks = 10)
curve(dnorm(x,mean = mean(y), sd = sd(y)), add= T, col = "red")

Boxplot

boxplot(y,main = "Boxplot do Consumo de Cerveja")

Gráfico de dispersão entre as variáveie

plot(y,x1, pch=20, cex = 1.5, main = "Gráfico de dispersão",xlab = "Temperatura média em °C",ylab = "Consumo de cerveja em Litros")

plot(y,x2, pch=20, cex = 1.5, main = "Gráfico de dispersão",xlab = "Temperatura mínima em °C",ylab = "Consumo de cerveja em Litros")

plot(y,x3, pch=20, cex = 1.5, main = "Gráfico de dispersão",xlab = "Temperatura máxima em °C",ylab = "Consumo de cerveja em Litros")

plot(y,x4, pch=20, cex = 1.5, main = "Gráfico de dispersão",xlab = "Precipitação em mm",ylab = "Consumo de cerveja em Litros")

plot(y,x5, pch=20, cex = 1.5, main = "Gráfico de dispersão",xlab = "Final de semana",ylab = "Consumo de cerveja em Litros")

Análise Descritiva

pie(table(x5),labels = c("Dia útil - 71%","Final de Semana-29%"), col = rainbow(2), main= "Dias úteis x Final de Semana")

summary(y)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   14.34   21.09   23.30   24.14   26.53   34.70
summary(x1)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   12.90   16.73   18.87   18.97   20.83   28.06
summary(x2)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   10.60   13.30   14.40   14.65   15.75   21.30
summary(x3)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   14.50   20.60   25.05   24.61   27.55   35.50
summary(x4)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   0.000   0.000   2.613   0.000  58.000
summary(x5)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.0000  0.0000  0.0000  0.2872  1.0000  1.0000

Correlação entre as variáveis

pairs(tabela)

cor(tabela)
##             y          x1          x2          x3           x4           x5
## y   1.0000000  0.58425755  0.32310820  0.67647780 -0.300085587  0.516269362
## x1  0.5842576  1.00000000  0.80666157  0.92288223 -0.224055021 -0.085180850
## x2  0.3231082  0.80666157  1.00000000  0.59031215 -0.049549258 -0.096205965
## x3  0.6764778  0.92288223  0.59031215  1.00000000 -0.290338567 -0.043966355
## x4 -0.3000856 -0.22405502 -0.04954926 -0.29033857  1.000000000  0.001839994
## x5  0.5162694 -0.08518085 -0.09620597 -0.04396635  0.001839994  1.000000000

É possivel notar que há forte correlacao entre x1 e x2 e x1 e x3. Isso nos leva a um problema de multicolinearidade

Modelo Ajustado

arq = data.frame(y,x1,x2,x3,x4,x5)
lm0 = lm(y~1, data=arq) #menor modelo que a gente aceita so com beta0
lmcompleto = lm(y ~ x1+x2+x3+x4+x5)
step(lm0,scope = list(lower = lm0, upper = lmcompleto), trace=TRUE, test = "F")
## Start:  AIC=285.32
## y ~ 1
## 
##        Df Sum of Sq    RSS    AIC F value    Pr(>F)    
## + x3    1    876.20 1038.5 229.81 77.6235 7.264e-14 ***
## + x1    1    653.59 1261.1 248.06 47.6811 6.334e-10 ***
## + x5    1    510.33 1404.3 258.18 33.4319 1.004e-07 ***
## + x2    1    199.89 1714.8 276.95 10.7243  0.001491 ** 
## + x4    1    172.42 1742.3 278.45  9.1046  0.003297 ** 
## <none>              1914.7 285.32                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Step:  AIC=229.81
## y ~ x3
## 
##        Df Sum of Sq     RSS    AIC  F value    Pr(>F)    
## + x5    1    571.93  466.55 156.59 111.5528 < 2.2e-16 ***
## + x4    1     22.48 1016.00 229.75   2.0131    0.1594    
## <none>              1038.48 229.81                       
## + x1    1     20.71 1017.77 229.91   1.8519    0.1769    
## + x2    1     17.07 1021.41 230.25   1.5212    0.2206    
## - x3    1    876.20 1914.68 285.32  77.6235 7.264e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Step:  AIC=156.6
## y ~ x3 + x5
## 
##        Df Sum of Sq     RSS    AIC  F value  Pr(>F)    
## + x4    1     19.96  446.59 154.49   4.0228 0.04789 *  
## <none>               466.55 156.59                     
## + x2    1      4.23  462.32 157.74   0.8233 0.36663    
## + x1    1      3.21  463.35 157.95   0.6226 0.43215    
## - x5    1    571.93 1038.48 229.81 111.5528 < 2e-16 ***
## - x3    1    937.80 1404.35 258.18 182.9153 < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Step:  AIC=154.48
## y ~ x3 + x5 + x4
## 
##        Df Sum of Sq     RSS    AIC  F value  Pr(>F)    
## <none>               446.59 154.49                     
## + x2    1      1.88  444.71 156.09   0.3759 0.54135    
## + x1    1      1.61  444.98 156.15   0.3223 0.57165    
## - x4    1     19.96  466.55 156.59   4.0228 0.04789 *  
## - x5    1    569.41 1016.00 229.75 114.7517 < 2e-16 ***
## - x3    1    784.25 1230.84 247.78 158.0466 < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Call:
## lm(formula = y ~ x3 + x5 + x4, data = arq)
## 
## Coefficients:
## (Intercept)           x3           x5           x4  
##     6.58715      0.65580      5.44511     -0.05751

Gerado o stepwise, temos o modelo ideal com beta0, beta3, beta4 e beta5

lmx = lm(y ~ x3+x4+x5)
summary(lmx)
## 
## Call:
## lm(formula = y ~ x3 + x4 + x5)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.3311 -1.7814  0.2065  1.3471  5.7016 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  6.58715    1.34208   4.908 4.07e-06 ***
## x3           0.65580    0.05216  12.572  < 2e-16 ***
## x4          -0.05751    0.02868  -2.006   0.0479 *  
## x5           5.44511    0.50831  10.712  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.228 on 90 degrees of freedom
## Multiple R-squared:  0.7668, Adjusted R-squared:  0.759 
## F-statistic: 98.62 on 3 and 90 DF,  p-value: < 2.2e-16

Boxplot dos residuos estudentizados x y ajustado

plot(fitted(lmx),rstudent(lmx), pch = 19, cex = 1.5,main = "Modelo: Grafico de Y ajustado contra os Residuos Estudentizados") 

O gráfico indica homocedasticidade dos residuos

Normalidade dos erros

shapiro.test(residuals(lmx))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(lmx)
## W = 0.98035, p-value = 0.1697

qqplot dos residuos: para verificar a hipotese de normalidade dos erros H0: os residuos sao normais x H1: os residuos sao nao normais

qqnorm(residuals(lmx),pch=19,main = "Modelo: Normal Q-Q Plot")
qqline(residuals(lmx))

Teste para variância dos erros por breuch-pagan

bptest(formula(lmx),studentize = F)
## 
##  Breusch-Pagan test
## 
## data:  formula(lmx)
## BP = 8.5478, df = 3, p-value = 0.03595