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