Você está na página 1de 11

Instituto Federal do Espírito Santo – Ifes

campus Cariacica
Bacharelado em Engenharia de Produção – 4º período
Modelos Econômicos e Quantitativos
Prof. Guilherme Guilhermino Neto

Prática de laboratório 1 – Análise de Regressão

Sua dupla ou trio recebeu, além deste arquivo, um conjunto de dados (formato .csv). Leia com atenção
o dicionário de dados, que vem logo a seguir neste texto, para entender o contexto de que vem os
dados. Importe os dados para o RStudio e siga o roteiro abaixo para as análises. Vocês deverão
responder ao que se pede neste arquivo. Ao final, exporte em formato .pdf, com o nome no seguinte
padrão: Prática de laboratório 1 - Nome dos alunos.pdf e envie pelo AVA.

Dicionário de dados

Conjunto de dados: Consumo de cerveja em São Paulo


Arquivo: cerveja.csv
Fonte: Lustosa, Alexandre G. Beer Consumption – São Paulo. Disponível em:
https://www.kaggle.com/datasets/dongeorge/beer-consumption-sao-paulo. Acesso em 03 Set. 2023.

Contexto: Estes dados contém uma amostra de vendas de cerveja em vários dias, em uma área
universitária de São Paulo. Também há dados de variáveis exógenas, que podem estar relacionadas ao
consumo.

Variáveis nas colunas:

1 – temp_media: temperatura ambiente média no dia (ºC)


2 – temp_min: temperatura ambiente mínima no dia (ºC)
3 – temp_max: temperatura ambiente máxima no dia (ºC)
4 – precipitacao: precipitação no dia (mm)
5 – final_de_semana: variável indicadora para final de semana (0 se não, 1 se sim)
6 – consumo: consumo de cerveja na região (litros)
Instruções para Análise

1 – Importe os dados para o RStudio. Quantas observações existem na amostra?

365

2 – Comece investigando quais variáveis parecem ter maior correlação com o consumo de cerveja. Para
isso, carregue o pacote corrplot (instale antes, se necessário).

a) Faça a matriz de correlações e utilize o corrplot para mostrá-la graficamente. Cole o gráfico aqui:

b) Quais as variáveis que têm a correlação mais forte e mais fraca com a variável consumo? Quais os
valores seus coeficientes de correlação linear de Pearson? Baseado no coeficiente, estas correlações são
positivas ou negativas? O que isto quer dizer sobre a relação entre as variáveis independente e
dependente?

A mais fortes são entre o consumo e a temp_max, com 0,64. Já a mais fraca é entre o consumo e a
precipitação, com -0,19. Podemos perceber que temos a presença de coeficientes positivos e negativos,
sendo que o positivo indica que quando a temperatura máxima aumenta, o consumo aumenta também,
porém quando a precipitação aumenta, o consumo tende a diminuir.

c) Carregue o esquisse ou o ggplot2 e faça um diagrama de dispersão para a variável que tem a
correlação mais forte (no eixo x), junto com a variável consumo (no eixo y).
3 – Utilize a função lm para ajustar um modelo de regressão linear múltipla para os dados. Trate a
variável consumo como dependente, e todas as outras como independentes. Utilize a função summary no
modelo e cole os resultados abaixo:

Call:
lm(formula = consumo ~ ., data = cerveja)

Residuals:
Min 1Q Median 3Q Max
-4882.4 -1906.5 6.6 1877.8 5425.3

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6444.70 845.04 7.627 2.18e-13 ***
temp_media 30.80 188.00 0.164 0.870
temp_min -19.03 110.36 -0.172 0.863
temp_max 656.00 95.15 6.895 2.44e-11 ***
precipitacao -57.47 10.04 -5.726 2.17e-08 ***
final_de_semana 5183.18 271.01 19.126 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2333 on 359 degrees of freedom


Multiple R-squared: 0.7226, Adjusted R-squared: 0.7188
F-statistic: 187.1 on 5 and 359 DF, p-value: < 2.2e-16
4 – Ajustado o modelo, é hora de analisar os resultados. Faça o que se pede:

a) Qual o valor do intercepto? Quais os valores dos coeficientes β1, β2,..., β𝑘 para cada uma das variáveis

no modelo, estimadas pelo método dos mínimos quadrados?

O intercepto vale 6444.70. Já os β são: temp_media 30.80; temp_min -19,03; temp_max 656;

precipitacao -57.47.

b) Escolha uma das variáveis e diga, ceteris paribus, o que acontece com o consumo de cerveja quando se
varia em uma unidade para cima o valor desta variável.

Em relação à variável de temperatura máxima, quando ela varia em uma unidade para cima, o
consumo de cerveja aumenta.

c) Qual o valor do coeficiente de determinação (R²) ajustado para este modelo? O que significa esta
medida?

O coeficiente de determinação desse modelo vale 0.7188. Esse valor significa que o modelo tem uma
qualidade de 71,88%.

d) Analise os resultados para os testes de hipóteses para a significância dos coeficientes estimados no
modelo. Para um nível de significância de 5%, para quais variáveis não é possível rejeitar a hipótese de
β𝑘 = 0 (ou seja, quais coeficientes não são estatisticamente significativos)? Dê o valor-𝑝 para estas

variáveis e explique também por que é necessário fazer estes testes.

As variáveis que possuem coeficientes que não são estatisticamente significativos são as de
temperatura média e de temperatura mínima. Eles possuem, respectivamente, 0.870 e 0.863. Com o
objetivo da análise é obter valores mais próximos da realidade, estes testes nos proporcionam uma
maior assertividade com relação aos objetos de estudos conciliando com análises de predição
tentando descobrir um comportamento.

5 – Agora que você verificou para quais variáveis não se pode confirmar a significância estatística dos
coeficientes por meio dos dados, vamos refazer o modelo.

a) Ajuste um novo modelo, sem as variáveis que você mencionou em 4 - d). Utilize a função summary e
cole os resultados abaixo:
* obs.: se ainda aparecerem variáveis com coeficientes não-significativos, removê-las até encontrar um
modelo somente com variáveis de coeficientes significativos.
Call:
lm(formula = consumo ~ temp_max + precipitacao + final_de_semana,
data = cerveja)

Residuals:
Min 1Q Median 3Q Max
-4892 -1904 10 1868 5495

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6432.085 773.978 8.310 1.96e-15 ***
temp_max 668.543 28.301 23.622 < 2e-16 ***
precipitacao -57.489 9.832 -5.847 1.12e-08 ***
final_de_semana 5184.083 269.998 19.200 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2326 on 361 degrees of freedom


Multiple R-squared: 0.7226, Adjusted R-squared: 0.7203
F-statistic: 313.5 on 3 and 361 DF, p-value: < 2.2e-16

b) Abaixo, escreva a equação do modelo final:

y = 6432.085 + 668.543 * temp_max +( -57.489 )* precipitacao + 5184.083 * final_de_semana

c) Os resultados condizem com o que você esperava ao analisar a matriz de correlações? Explique.

Sim, pois como esperado, ao retirar variáveis sem significância, a qualidade do modelo aumentou.

d) Agora simule o consumo de cerveja para valores de sua escolha para as variáveis independentes e
utilize a função predict para predizer o consumo de cerveja. Qual foi o resultado?

Tendo: cerveja_nova <- data.frame(temp_max =30, precipitacao = 4, final_de_semana = 1), obtemos


o consumo de 31442.49.

6 – Após encontrar o modelo, proceda à análise dos resíduos. Siga os passos abaixo:

a) Encontre a média, e mediana e o desvio-padrão para os resíduos. Faça também um histograma. Você
diria que os resíduos parecem seguir o pressuposto de média zero?
Sim, podemos dizer que os resíduos parecem seguir o pressuposto de média zero.

b) Faça o qqplot para os resíduos e analise o seu pressuposto de normalidade.

Há somente um pequeno desvio no início e no final, porém em seu corpo de desenvolvimento as


amostras estão seguindo a normalidade.
c) Pelo gráfico de resíduos vs. valores ajustados, você diria que se verifica- a homoscedasticidade dos
resíduos? Explique.

Nossos erros não são aleatórios e não há homogeneidade de variância dos resíduos.

7 – Finalmente, faça uma nova análise exploratória, para aproveitar as informações trazidas do modelo de
regressão. Siga os passos abaixo:

a) Crie uma nova coluna no conjunto de dados com a variável final_de_semana convertida para o
formato factor. Isto será necessário para que o R faça os gráficos que iremos gerar da maneira correta.
Para isso, use o código abaixo (adapte o código para o nome do seu conjunto de dados!):

cerveja$final_de_semana_fator <- factor(cerveja$final_de_semana)

b) Carregue o pacote esquisse. Para as variáveis que ficaram no modelo, gere gráficos, utilizando as
variáveis independente no eixo x do esquisser, e variável consumo no eixo y. Na caixa color, coloque a
variável que foi criada, final_de_semana_fator. O gráfico será um diagrama de dispersão.
c) Carregue o pacote dplyr. Agrupe os dados (função group_by) pela coluna final_de_semana_fator e
utilize a função summarise para calcular as medianas para a variável consumo. Cole os resultados
abaixo:

final_de_semana_fator Média
<fct> <dbl>
1 0 23998.
2 1 28923.

d) Interprete os resultados dos itens b) e c) e avalie se os resultados que você encontrou parecem fazer
sentido do ponto de vista prático.

Os resultados obtidos demonstram o que já esperávamos, a média de consumo de cerveja é de 28923


nos finais de semana, e de 23998 quando não é final de semana, estes resultados demonstram que o
comportamento aos finais de semana são de consumo superior aos dias úteis. Analisando os gráficos,
concluímos que o consumo de cerveja é maior nos fins de semana, independente de chuva ou de
temperatura.

Cole os códigos do R aqui:

###################
#Pacotes
###################
install.packages("corrplot")
install.packages("esquisse")
install.packages("ggplot2")
install.packages("dplyr")
library(corrplot)
library(esquisse)
library(dplyr)

#Gáfico de correlação
M <- cor(cerveja)
corrplot(M, method = "number")

#Coeficiente de Pearson
cor(cerveja$consumo, cerveja$temp_max)

#Gráfico
library(ggplot2)

ggplot(cerveja) +
aes(x = temp_max, y = consumo) +
geom_point(shape = "circle", size = 1.2, colour = "#FF69B4", alpha = 0.5) +
geom_smooth(span = 1L) +
labs(x = "Temperatura Máxima", y = "Consumo") +
theme_minimal()

#Ajuste de modelo
modelo <- lm(formula = consumo ~ ., data = cerveja)
summary(modelo)

modelo_novo <- lm(formula = consumo ~ temp_max + precipitacao + final_de_semana, data =


cerveja)
summary(modelo_novo)

#Novo modelo da cerveja


cerveja_nova <- data.frame(temp_max =30, precipitacao = 4, final_de_semana = 1)
predict(modelo_novo, cerveja_nova)

#Resíduos
modelo_novo$residuals
hist(modelo_novo$residuals)
mean(modelo_novo$residuals)
sd(modelo_novo$residuals)
plot(modelo_novo)

#Quati pra quanli


cerveja$final_de_semana_fator <- factor(cerveja$final_de_semana)

#Temp_max
library(ggplot2)

ggplot(cerveja) +
aes(x = temp_max, y = consumo, colour = final_de_semana_fator) +
geom_point(shape = "circle",
size = 1.5) +
scale_color_hue(direction = 1) +
theme_minimal()

#Precipitação
library(ggplot2)

ggplot(cerveja) +
aes(x = precipitacao, y = consumo, colour = final_de_semana_fator) +
geom_point(shape = "circle",
size = 1.5) +
scale_color_hue(direction = 1) +
theme_minimal()

#Dplyr
cerveja %>% group_by(final_de_semana_fator) %>% summarise(Média = mean(consumo))

Você também pode gostar