O modelo de regressão linear multipla explica a estrutura do fenômeno em observação a partir de conjunto de variáveis explicativas (\(x_1, x_2,...,x_n\)) em relação a outra considerada uma variável dependente (Y).
Rows: 150 Columns: 4
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
dbl (4): preco, area, idade, piscina
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
summary(dados)
preco area idade piscina
Min. : 94006 Min. : 50.72 Min. : 0.3286 Min. :0.0
1st Qu.:194946 1st Qu.:100.87 1st Qu.: 9.8933 1st Qu.:0.0
Median :228040 Median :118.24 Median :18.8624 Median :0.0
Mean :231578 Mean :119.27 Mean :19.6673 Mean :0.4
3rd Qu.:265663 3rd Qu.:137.31 3rd Qu.:29.2451 3rd Qu.:1.0
Max. :368679 Max. :185.62 Max. :39.9762 Max. :1.0
Correlação
cor(dados[,1:3])
preco area idade
preco 1.0000000 0.8924110 -0.1111149
area 0.8924110 1.0000000 0.1144439
idade -0.1111149 0.1144439 1.0000000
Histograma da variável preço do imóvel
hist(dados$preco,main ="Histograma da v.a preco",xlab="preco")
Ajustando o modelo de regressão linear simples
ajuste1<-lm(preco~area+factor(piscina), data = dados)summary(ajuste1)
Call:
lm(formula = preco ~ area + factor(piscina), data = dados)
Residuals:
Min 1Q Median 3Q Max
-41231 -12476 549 11251 36159
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 39273.21 5749.60 6.831 2.08e-10 ***
area 1501.09 47.37 31.688 < 2e-16 ***
factor(piscina)1 33177.27 2745.91 12.082 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 16290 on 147 degrees of freedom
Multiple R-squared: 0.8978, Adjusted R-squared: 0.8965
F-statistic: 646 on 2 and 147 DF, p-value: < 2.2e-16
Gráfico de dispersão com diferença salarial entre homem e mulher
# Criando o gráficoggplot(dados, aes(x = area, y = preco, color =factor(piscina))) +geom_point(alpha =0.6) +# Pontos reais (dispersão)geom_smooth(method ="lm", se =FALSE,fullrange =TRUE) +# Retas de regressãolabs(title ="Diferença preço de imóvel com piscina e area",x ="Area",y ="Preco",color ="Piscina") +theme_minimal()
`geom_smooth()` using formula = 'y ~ x'
Ajustando o modelo de regressão linear com todas as variáveis
ajuste2<-lm(preco~area+idade+factor(piscina), data = dados)summary(ajuste2)
Call:
lm(formula = preco ~ area + idade + factor(piscina), data = dados)
Residuals:
Min 1Q Median 3Q Max
-29680 -7815 1070 7204 31340
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 52440.37 4526.75 11.59 <2e-16 ***
area 1544.91 36.08 42.81 <2e-16 ***
idade -928.57 88.23 -10.52 <2e-16 ***
factor(piscina)1 32850.57 2077.91 15.81 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 12330 on 146 degrees of freedom
Multiple R-squared: 0.9419, Adjusted R-squared: 0.9407
F-statistic: 789.2 on 3 and 146 DF, p-value: < 2.2e-16
Verificando colinearidade das variáveis
library(car)
Carregando pacotes exigidos: carData
Anexando pacote: 'car'
O seguinte objeto é mascarado por 'package:dplyr':
recode
O seguinte objeto é mascarado por 'package:purrr':
some
vif(ajuste2)
area idade factor(piscina)
1.036262 1.013497 1.022695
Análise de Resíduos
Resíduos vs valores ajustados
plot(ajuste2,1)
Gráfico QQPlot
plot(ajuste2,2)
Gráfico de distância de COOk’s
plot(ajuste2,4)
Histograma do resíduos
hist(ajuste2$residuals)
Teste de normalidade
As hipóteses do teste são:
\(H_0\)(hipótese nula): Os dados seguem uma distribuição normal.
\(H_1\) (Hipótese Alternativa): Os dados não seguem uma distribuição normal.
P-valor > 0.05 para não rejeitar a normalidade
Para amostra grande (n>50) utilizar o teste de Kolmogorov-Smirnov com correção de Correção de Lilliefors
library(nortest)lillie.test(ajuste2$residuals)
Lilliefors (Kolmogorov-Smirnov) normality test
data: ajuste2$residuals
D = 0.051685, p-value = 0.4218