setwd("E:/trabalho")
dados <- read.csv2("vendas.csv")
dados
## Venda Tprop Tam tempo Com Quartos Suítes Gar
## 1 392.4 0.3982 3227 109 13 5 2 0
## 2 311.8 0.3535 2618 52 9 4 3 1
## 3 289.2 0.2066 1928 94 8 4 2 0
## 4 284.1 0.0225 2145 55 8 4 3 1
## 5 278.3 0.1607 1559 45 6 3 3 1
## 6 277.4 0.1221 1550 12 5 3 2 1
## 7 240.2 0.1722 1668 82 6 3 2 0
## 8 243.9 0.1309 1423 89 7 3 2 0
## 9 196.2 0.1148 1175 52 4 3 2 0
## 10 185.5 0.1263 1214 82 6 3 2 0
## 11 262.7 0.1148 1856 36 6 4 2 1
## 12 226.0 0.1148 1223 46 6 3 2 0
## 13 156.3 0.0803 961 81 5 2 1 0
## 14 254.7 0.3065 1679 98 8 3 1 0
## 15 287.7 0.1880 2316 52 10 4 3 1
## 16 184.8 0.1033 1422 86 6 3 1 0
## 17 286.4 0.1722 2399 89 8 4 2 0
## 18 220.2 0.1377 1091 47 7 2 1 1
## 19 223.3 0.1033 1225 44 6 2 1 0
## 20 189.2 0.1148 1353 50 5 3 1 0
## 21 251.8 0.1446 1680 91 6 3 1 0
## 22 274.0 0.2250 1960 82 8 3 1 0
## 23 254.1 0.1111 1916 92 9 4 2 0
## 24 219.2 0.1395 1340 64 5 2 1 0
## 25 231.2 0.1263 1394 62 6 3 1 0
## 26 274.7 0.0716 1681 79 8 3 2 0
## 27 197.0 0.1435 1468 78 6 3 1 0
## 28 406.2 0.3444 3692 73 9 5 3 1
## 29 223.5 0.1492 1456 51 5 3 1 0
## 30 259.7 0.1313 1430 64 6 3 2 1
# aplicação do modelo com todas as variáveis
modelo <- lm(Venda ~ ., data = dados)
summary(modelo)
##
## Call:
## lm(formula = Venda ~ ., data = dados)
##
## Residuals:
## Min 1Q Median 3Q Max
## -34.668 -7.045 1.648 15.472 28.158
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 115.92912 23.02535 5.035 4.84e-05 ***
## Tprop 56.22009 75.68819 0.743 0.46547
## Tam 0.06780 0.01983 3.419 0.00246 **
## tempo -0.24070 0.30513 -0.789 0.43862
## Com 5.56970 4.06538 1.370 0.18450
## Quartos -8.49432 13.08531 -0.649 0.52296
## Suítes 7.65267 9.35702 0.818 0.42221
## Gar 6.57905 15.19140 0.433 0.66918
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 21.67 on 22 degrees of freedom
## Multiple R-squared: 0.8822, Adjusted R-squared: 0.8447
## F-statistic: 23.54 on 7 and 22 DF, p-value: 7.934e-09
# analise de multicolinearidade
cor(dados)
## Venda Tprop Tam tempo Com Quartos
## Venda 1.0000000 0.6968946 0.9186538 0.1402765 0.7741103 0.7984336
## Tprop 0.6968946 1.0000000 0.7299183 0.3346873 0.6528731 0.5529016
## Tam 0.9186538 0.7299183 1.0000000 0.2642389 0.7975906 0.8876981
## tempo 0.1402765 0.3346873 0.2642389 1.0000000 0.4581168 0.2455424
## Com 0.7741103 0.6528731 0.7975906 0.4581168 1.0000000 0.7269339
## Quartos 0.7984336 0.5529016 0.8876981 0.2455424 0.7269339 1.0000000
## Suítes 0.6134347 0.2327200 0.5733990 -0.1738091 0.4354828 0.6509106
## Gar 0.4219806 0.1084947 0.3177966 -0.5817763 0.1533236 0.2772487
## Suítes Gar
## Venda 0.6134347 0.4219806
## Tprop 0.2327200 0.1084947
## Tam 0.5733990 0.3177966
## tempo -0.1738091 -0.5817763
## Com 0.4354828 0.1533236
## Quartos 0.6509106 0.2772487
## Suítes 1.0000000 0.6199686
## Gar 0.6199686 1.0000000
# aplicar o step backward para encontrar o melhor modelo
modelo_reduzido <- step(modelo, direction = "backward")
## Start: AIC=191.24
## Venda ~ Tprop + Tam + tempo + Com + Quartos + Suítes + Gar
##
## Df Sum of Sq RSS AIC
## - Gar 1 88.0 10415 189.49
## - Quartos 1 197.8 10524 189.81
## - Tprop 1 259.0 10586 189.98
## - tempo 1 292.1 10619 190.07
## - Suítes 1 314.0 10641 190.14
## <none> 10327 191.24
## - Com 1 881.0 11208 191.69
## - Tam 1 5485.4 15812 202.02
##
## Step: AIC=189.49
## Venda ~ Tprop + Tam + tempo + Com + Quartos + Suítes
##
## Df Sum of Sq RSS AIC
## - Tprop 1 260.3 10675 188.23
## - Quartos 1 265.5 10680 188.25
## - Suítes 1 591.6 11006 189.15
## <none> 10415 189.49
## - tempo 1 900.8 11316 189.98
## - Com 1 1005.3 11420 190.26
## - Tam 1 6010.8 16426 201.16
##
## Step: AIC=188.23
## Venda ~ Tam + tempo + Com + Quartos + Suítes
##
## Df Sum of Sq RSS AIC
## - Quartos 1 422.6 11098 187.40
## - Suítes 1 472.6 11148 187.53
## <none> 10675 188.23
## - tempo 1 842.7 11518 188.51
## - Com 1 1182.2 11857 189.38
## - Tam 1 10507.4 21182 206.79
##
## Step: AIC=187.4
## Venda ~ Tam + tempo + Com + Suítes
##
## Df Sum of Sq RSS AIC
## - Suítes 1 208.5 11306 185.96
## <none> 11098 187.40
## - tempo 1 1130.6 12228 188.31
## - Com 1 1188.0 12286 188.45
## - Tam 1 14697.9 25795 210.70
##
## Step: AIC=185.96
## Venda ~ Tam + tempo + Com
##
## Df Sum of Sq RSS AIC
## <none> 11306 185.96
## - Com 1 1386.0 12692 187.43
## - tempo 1 1962.5 13268 188.76
## - Tam 1 18726.1 30032 213.26
# avaliar o modelo considerando as correlações entre as variáveis independentes
# retirar do modelo aquelas variáveis mais correlacionadas
summary(modelo_reduzido)
##
## Call:
## lm(formula = Venda ~ Tam + tempo + Com, data = dados)
##
## Residuals:
## Min 1Q Median 3Q Max
## -33.132 -14.160 3.508 11.785 34.212
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 114.03816 15.87135 7.185 1.25e-07 ***
## Tam 0.06974 0.01063 6.562 5.87e-07 ***
## tempo -0.42322 0.19922 -2.124 0.0433 *
## Com 6.72881 3.76899 1.785 0.0859 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 20.85 on 26 degrees of freedom
## Multiple R-squared: 0.871, Adjusted R-squared: 0.8561
## F-statistic: 58.53 on 3 and 26 DF, p-value: 1.073e-11
# avaliar o melhor modelo - tempo não significativo - retirar do modelo
modelo_ajustado <- lm(Venda ~ Tam + tempo, data = dados)
summary(modelo_ajustado)
##
## Call:
## lm(formula = Venda ~ Tam + tempo, data = dados)
##
## Residuals:
## Min 1Q Median 3Q Max
## -36.489 -15.979 -2.071 15.983 34.254
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 124.222235 15.399051 8.067 1.15e-08 ***
## Tam 0.084710 0.006786 12.482 1.00e-12 ***
## tempo -0.271995 0.187474 -1.451 0.158
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 21.68 on 27 degrees of freedom
## Multiple R-squared: 0.8552, Adjusted R-squared: 0.8445
## F-statistic: 79.74 on 2 and 27 DF, p-value: 4.676e-12
# melhor modelo considerando a relação linear
modelo_ajustado <- lm(Venda ~ Tam, data = dados)
summary(modelo_ajustado)
##
## Call:
## lm(formula = Venda ~ Tam, data = dados)
##
## Residuals:
## Min 1Q Median 3Q Max
## -42.226 -13.254 -0.527 16.422 40.025
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.103e+02 1.226e+01 8.994 9.48e-10 ***
## Tam 8.211e-02 6.673e-03 12.305 8.23e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 22.1 on 28 degrees of freedom
## Multiple R-squared: 0.8439, Adjusted R-squared: 0.8384
## F-statistic: 151.4 on 1 and 28 DF, p-value: 8.229e-13
# analise de normalidade
# grafico - usa os residuos padronizados
x <- rstandard(modelo_ajustado)
qqnorm(x)
qqline(x)

hist(x)

# teste formal - usa os residuos padronizados
library(nortest)
ad.test(x) # Anderson Darling Normality Test
##
## Anderson-Darling normality test
##
## data: x
## A = 0.15278, p-value = 0.9537
shapiro.test(x) # Shapiro-Wilk Normality Test
##
## Shapiro-Wilk normality test
##
## data: x
## W = 0.97985, p-value = 0.8217
# CASO O TESTE DE NORMALIDADE NÃO SEJA ADEQUADO UTILIZAR TRANSFORMAÇÃO DA VARIÁVEL RESPOSTA DO MODELO AJUSTADA
# Z = Y^lambda --> Z ~ N(0,1) --> Y = raiz(Z, lambda)
# para isso utilizar o teste de Box-Cox (bc(modelo_ajustado$y))
# analise de homocedasticidade - usa o modelo
# gráfico formal - plota os residuos com as variaveis explicativas ou com os valores ajustados
fit <- fitted.values(modelo_ajustado)
plot(fit, x); abline(0,0)

plot(dados$Tam, x); abline(0,0)
# análise formal - uso do teste breusch-pagan (usa o modelo para realizar o teste)
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric

bptest(modelo_ajustado) # studentized Breusch-Pagan test
##
## studentized Breusch-Pagan test
##
## data: modelo_ajustado
## BP = 2.5203, df = 1, p-value = 0.1124
# analise de autocorrelacao - usa o modelo
# análise gráfica - plotar os resíduos padronizados
plot(x); abline(0,0)

# análise formal - Durbin-Watson Test (usa o modelo para realizar o teste)
dwtest(modelo_ajustado)
##
## Durbin-Watson test
##
## data: modelo_ajustado
## DW = 1.9174, p-value = 0.3919
## alternative hypothesis: true autocorrelation is greater than 0