base <-read_excel("~/Library/CloudStorage/OneDrive-Pessoal/Documentos/7. Especialização/1. Disciplinas/REGRESSÃO NÃO-LINEAR/Aula1/2022_Aula01/2022_Lista01/baseDEC_Compensacoes_CEMIG2018.xlsx")
#View(base)
Variável resposta de interesse: Compensacoes.Pagas
packHV::hist_boxplot(base$Compensacoes.Pagas, main="", col="light blue", xlab="Compensacoes.Pagas")
Análise do gráfico entre a variável resposta e as demais presentes no banco de dados
| Variáveis |
|---|
| Volume.chuva |
| Descargas.atm |
| Vento |
| umidade |
| temperatura |
| AG1 |
| AE1 |
| AE2 |
| VC1 |
| DS1 |
| DS2 |
| AR1 |
| grupos2 |
| Unidades.Consumidoras |
par(mfrow=c(5,3))
plot(Compensacoes.Pagas ~ Volume.chuva, data=base, pch=19, col="dark blue")
plot(Compensacoes.Pagas ~ Descargas.atm, data=base, pch=19, col="dark blue")
plot(Compensacoes.Pagas ~ Vento, data=base, pch=19, col="dark blue")
plot(Compensacoes.Pagas ~ umidade, data=base, pch=19, col="dark blue")
plot(Compensacoes.Pagas ~ temperatura, data=base, pch=19, col="dark blue")
plot(Compensacoes.Pagas ~ AG1, data=base, pch=19, col="dark blue")
plot(Compensacoes.Pagas ~ AE1, data=base, pch=19, col="dark blue")
plot(Compensacoes.Pagas ~ AE2, data=base, pch=19, col="dark blue")
plot(Compensacoes.Pagas ~ VC1, data=base, pch=19, col="dark blue")
plot(Compensacoes.Pagas ~ DS1, data=base, pch=19, col="dark blue")
plot(Compensacoes.Pagas ~ DS2, data=base, pch=19, col="dark blue")
plot(Compensacoes.Pagas ~ AR1, data=base, pch=19, col="dark blue")
plot(Compensacoes.Pagas ~ as.factor(grupos2), data=base, pch=19, col="dark blue", xlab="Grupos")
plot(Compensacoes.Pagas ~ Unidades.Consumidoras, data=base, pch=19, col="dark blue")
Será plotada a matriz de correlação somente com as variáveis desejadas
variaveis = c("Compensacoes.Pagas","Volume.chuva", "Descargas.atm","Vento","umidade","temperatura","AG1","AE1","AE2","VC1","DS1","DS2","AR1","grupos2","Unidades.Consumidoras")
base1 = base[variaveis]
mx <- cor(base1, method = "spearman")
corrplot::corrplot(mx, method = 'square', type="upper",
order="AOE", col= RColorBrewer::brewer.pal(n=8, name="RdYlBu"),diag=FALSE)
É possível observar que Compensacoe.Pagas tem correlações mais forte com:
DS1
DS2
AE2
Unidades.Consumidoras
# Ajuste com as variaveis de interesse
saida <- exploreR::masslm(base1, dv.var = "Compensacoes.Pagas")
# Ordena modelo pelo decrescente do R quadrado
saida <- saida[order(saida$R.squared, decreasing = TRUE),]
# Nomeia cabecalho da tabela
names(saida) <- c("Variavel", "Coeficiente", "p-valor", "R2")
# Tabela
knitr::kable(saida, digits = 2, row.names = FALSE,
format.args = list(scientific = FALSE))
| Variavel | Coeficiente | p-valor | R2 |
|---|---|---|---|
| DS2 | 130500.00 | 0.00 | 0.37 |
| AE1 | 105400.00 | 0.00 | 0.24 |
| AE2 | 105100.00 | 0.00 | 0.24 |
| DS1 | 90050.00 | 0.00 | 0.18 |
| AR1 | 89050.00 | 0.00 | 0.17 |
| AG1 | 78680.00 | 0.00 | 0.14 |
| Unidades.Consumidoras | 2.33 | 0.00 | 0.07 |
| Descargas.atm | 17.33 | 0.00 | 0.06 |
| grupos2 | 67810.00 | 0.01 | 0.03 |
| temperatura | 18630.00 | 0.12 | 0.01 |
| VC1 | -12930.00 | 0.32 | 0.00 |
| umidade | -2611.00 | 0.39 | 0.00 |
| Vento | 3067.00 | 0.93 | 0.00 |
| Volume.chuva | -4.26 | 0.98 | 0.00 |
# nova base
base_log = as.data.frame(log(base1))
#substituir NaN por zero
base_log[is.na(base_log)] = 0
#View(base_log)
saida_log = exploreR::masslm(base_log, dv.var = "Compensacoes.Pagas")
saida_log <- saida_log[order(saida_log$R.squared, decreasing = TRUE),]
# Tabela
names(saida_log) <- c("Variavel", "Coeficiente", "p-valor", "R2")
knitr::kable(saida_log, digits = 2, row.names = FALSE,
format.args = list(scientific = FALSE))
| Variavel | Coeficiente | p-valor | R2 |
|---|---|---|---|
| Unidades.Consumidoras | 0.63 | 0.00 | 0.30 |
| Descargas.atm | 0.14 | 0.00 | 0.07 |
| grupos2 | 0.38 | 0.02 | 0.02 |
| Volume.chuva | 0.47 | 0.07 | 0.01 |
| umidade | -0.83 | 0.36 | 0.00 |
| AG1 | 0.06 | 0.43 | 0.00 |
| AR1 | 0.05 | 0.50 | 0.00 |
| Vento | -0.13 | 0.56 | 0.00 |
| AE2 | 0.04 | 0.63 | 0.00 |
| VC1 | 0.03 | 0.69 | 0.00 |
| AE1 | 0.01 | 0.92 | 0.00 |
| DS1 | 0.00 | 0.97 | 0.00 |
| temperatura | -0.04 | 0.97 | 0.00 |
| DS2 | 0.00 | 1.00 | 0.00 |
modelo1 = lm(Compensacoes.Pagas ~ ., data=base1)
summary(modelo1)
##
## Call:
## lm(formula = Compensacoes.Pagas ~ ., data = base1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -328615 -53674 -10267 26291 1863863
##
## Coefficients: (1 not defined because of singularities)
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.594e+05 5.597e+05 -0.642 0.5214
## Volume.chuva -1.453e+01 1.665e+02 -0.087 0.9305
## Descargas.atm 6.485e+00 4.329e+00 1.498 0.1354
## Vento 6.209e+03 2.757e+04 0.225 0.8220
## umidade -1.262e+02 3.346e+03 -0.038 0.9699
## temperatura 2.345e+04 1.488e+04 1.576 0.1163
## AG1 -1.048e+05 2.259e+04 -4.640 5.60e-06 ***
## AE1 2.291e+04 2.945e+04 0.778 0.4374
## AE2 6.625e+03 2.824e+04 0.235 0.8147
## VC1 NA NA NA NA
## DS1 8.798e+04 3.832e+04 2.296 0.0225 *
## DS2 1.581e+05 2.220e+04 7.123 1.11e-11 ***
## AR1 -2.554e+03 1.730e+04 -0.148 0.8828
## grupos2 2.674e+04 3.031e+04 0.882 0.3785
## Unidades.Consumidoras -2.983e+00 1.385e+00 -2.153 0.0322 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 160500 on 252 degrees of freedom
## Multiple R-squared: 0.4632, Adjusted R-squared: 0.4356
## F-statistic: 16.73 on 13 and 252 DF, p-value: < 2.2e-16
hist_boxplot(residuals(modelo1))
par(mfrow=c(2,2))
plot(modelo1, pch=17, col=" dark blue", lty=0)
# Teste de Normalidade dos erros
shapiro.test(residuals(modelo1))
##
## Shapiro-Wilk normality test
##
## data: residuals(modelo1)
## W = 0.55304, p-value < 2.2e-16
Há evidências de que os resíduos do modelo não é normal.
modelo_final = step(lm(Compensacoes.Pagas ~ ., data = base1), trace = FALSE)
summary(modelo_final)
##
## Call:
## lm(formula = Compensacoes.Pagas ~ Descargas.atm + temperatura +
## AG1 + DS1 + DS2 + Unidades.Consumidoras, data = base1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -342819 -56821 -10286 27575 1874411
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -5.550e+05 2.318e+05 -2.394 0.017359 *
## Descargas.atm 5.336e+00 3.784e+00 1.410 0.159734
## temperatura 3.241e+04 9.415e+03 3.442 0.000673 ***
## AG1 -9.162e+04 1.765e+04 -5.189 4.26e-07 ***
## DS1 8.951e+04 3.296e+04 2.715 0.007064 **
## DS2 1.688e+05 1.981e+04 8.521 1.32e-15 ***
## Unidades.Consumidoras -2.557e+00 1.204e+00 -2.124 0.034610 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 158800 on 259 degrees of freedom
## Multiple R-squared: 0.4597, Adjusted R-squared: 0.4472
## F-statistic: 36.73 on 6 and 259 DF, p-value: < 2.2e-16
par(mfrow = c(2,2))
plot(modelo_final, col ="red", pch = 18 )
base1$fit = predict(modelo_final,newdata = base1)
plot(fit ~ Compensacoes.Pagas , data=base1, pch=19, col="blue",
xlab = "Variavel resposta", ylab ="Predito")
O modelo final de regressão linear múltipla para estimar o comportamento médio da variável Compensacoes.Pagas identificou 6 variáveis preditoras que não apresentam comportamento linear. O coeficiente de determinação doo modelo é de 45,97%, indicando um modelo com baixa explicação do comportamento médio das compensações pagas para os clientes da CEMIG.
Harrison, David, and Rubinfeld, Daniel L., Hedonic Housing Prices and the Demand for Clean Air, Journal of Environmental Economics and Management, Volume 5, (1978), 81-102.