——————-Etapas————————————————-
library(readxl)
dados <- read_excel("~/RegressaoLinear_e_Previsao/dados.xlsx",
col_types = c("numeric", "numeric", "numeric"))
head(dados)
## # A tibble: 6 x 3
## preco area tempo
## <dbl> <dbl> <dbl>
## 1 1068539 79 437
## 2 949609 60 596
## 3 1190573 86 316
## 4 1465552 119 286
## 5 1422688 116 141
## 6 1266837 105 213
R. A primeira impressão é: quanto maior a área, maior o preço.
plot(dados$area, dados$preco,
ylab = "Preço (R$)",
xlab = "Área",
main = "Gráfico de Dispersão",
pch = 19)
R. Quando o coeficiente de relação é próximo de 1, entende-se que há uma relação linear forte positiva, que é quando uma váriavel aumenta, a outra também aumenta.
## [1] 0.9711363
R. Como p-valor < 0.05 rejeito a hipotese de que a correlação é zero, então a relação entre área e preço existe, é positiva e estatísticamente significativa.
##
## Pearson's product-moment correlation
##
## data: dados$area and dados$preco
## t = 40.305, df = 98, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.9573272 0.9805212
## sample estimates:
## cor
## 0.9711363
R. A primeira impressão é: quanto maior o tempo, menor o preço.
plot(dados$tempo, dados$preco,
ylab = "Preço (R$)",
xlab = "Tempo",
main = "Gráfico de Dispersão",
pch = 19)
R. Quando coeficiente de relação é próximo de -1, entende-se há uma relação linear forte negativa, que é quando uma váriavel aumenta, a outra diminui. Pelo p-valor < 0.05 rejeitamos a hipótese de que a correlação é zero, então podemos concluir que a relação existe, é negativa e estatísticamente significativa.
##
## Pearson's product-moment correlation
##
## data: dados$tempo and dados$preco
## t = -18.16, df = 98, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.9163913 -0.8236355
## sample estimates:
## cor
## -0.8780116
R.Utilizamos o boxplot para visualizar a distribuição dos dados.
Observando o gráfico parece que o preço tem uma distribuição simétrica em torno da mediana.E existe outliers. Analisando melhor as medidas pela função summary, diz que 50% das observações tem um preço variando 979 mil á 1.225 mi.
Usamos a função car para identificar os outliers dentro do boxplot.
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 733343 979788 1111292 1109659 1225775 1607974
## Loading required package: carData
R. Neste caso, vamos descobrir quais os indices das casas com os preços maiores que o terceiro quantil
## [1] 4 5 6 10 13 20 21 25 26 27 38 40 50 58 63 66 71 72 74 75 79 84 85 86 89
R. Modelo de regressão linear simples da váriavel Preço em função da area. Isto é preço = bo + b1*area
##
## Call:
## lm(formula = dados$preco ~ dados$area)
##
## Coefficients:
## (Intercept) dados$area
## 502347 7851
R. Usando os coeficientes gerados pelo função Lm(), temos que o preço estimado para uma casa com 70m² seja de R$1.051.951 Milhões
## (Intercept)
## 1051951
plot(dados$area, dados$preco, pch = 19,
ylab = "Preço (R$)",
xlab = "Área",
main = "Gráfico de Dispersão x Modelo de Regressão")
abline(mod, col = "red")
R. Já sabemos que a área realmente influi no preço das casas, mas será que é melhor eu considerar mesmo o estimador do preço x area ao invés de simplesmente trabalhar com a média?
Para testar, usamos a função summary no modelo criado, e pelo teste F apresentado na última linha, vemos que o modelo é bom comparado com a média e para nos dizer se os coeficientes estimados é diferente de zero, observamos as informações de ‘Coefficients’,e no caso, rejeitamos a hipótese de que são iguais a zeros, vistos que os p-valor < 0.05.
##
## Call:
## lm(formula = dados$preco ~ dados$area)
##
## Residuals:
## Min 1Q Median 3Q Max
## -126070 -31605 9852 28943 129419
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 502346.8 15715.4 31.96 <2e-16 ***
## dados$area 7851.5 194.8 40.30 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 44650 on 98 degrees of freedom
## Multiple R-squared: 0.9431, Adjusted R-squared: 0.9425
## F-statistic: 1624 on 1 and 98 DF, p-value: < 2.2e-16
R. Ainda usando a função summary em cima do modelo, analisamos o R² e o R² ajustado a amostra. Então com esse modelo eu consigo explicar 94% de variabilidade dos meus dados
## [1] 0.9431058
R. A gente faz o teste T, para avaliar a importância da variável tempo no modelo e a hipótese que a gente tem é que ela não é importante, que o efeito dela no preço é zero, é nulo. Como a gente faz o teste T e obtém um p-valor menor do que 0,05. Nós concluímos que a variável do tempo, ela é estatisticamente significativa para estimar o preço das casas.
Além disso, da estatística F, temos um p-valor que é menor do que 0,05, concluímos que o modelo que tem o tempo das casas, é melhor do que considerar simplesmente a média do preço das casas e nesse caso, temos um coeficiente de determinação de 0,79.
Nesse caso, ele foi um pouquinho menor do que a gente tinha comparado anteriormente, com o modelo que tinha a área das casas, ou seja, com esse modelo do preço em função do tempo, eu só consigo explicar 77%, aproximadamente de variabilidade dos meus dados.
Então, esse modelo, ele não é muito bom como que a gente quer, e se eu for comparar ele, por exemplo, com o modelo que só tem a área das casas, ele é pior do que aquele outro modelo, por quê? Porque o coeficiente de determinação dele é menor do que o outro.
##
## Call:
## lm(formula = dados$preco ~ dados$tempo)
##
## Residuals:
## Min 1Q Median 3Q Max
## -194948 -59657 -6641 53192 201034
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1482853.91 22418.73 66.14 <2e-16 ***
## dados$tempo -737.03 40.59 -18.16 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 89590 on 98 degrees of freedom
## Multiple R-squared: 0.7709, Adjusted R-squared: 0.7686
## F-statistic: 329.8 on 1 and 98 DF, p-value: < 2.2e-16
R. Toda a análise realizada até agora, pelo modelo linear simples foi baseado em algumas suposições sobre o modelo, algumas delas são independencia, homocedasticidade e tem que ter normalidade. Podemos visualizar as suposições por meio de gráficos e fazendo testes para comprovar.
Primeiro vamos plotar os residuos de todas as minhas 100 observações do meu modelo. E gráficamente percebemos que eles não seguem um padrão, ou seja, não tem nenhuma tendência, e é isso que a gente espera. Podemos também identificar, pela função identify, os Index das casas com os piores residuos, isto que, que tiveram uma diferença maior do valor estimado.
plot(mod$residuals,
ylab = "Residuos",
xlab = "Index dos Imovéis",
main = "Suposição de independência",
pch = 19)
identify(mod$residuals, n=2)
## integer(0)
R. Agora nós vamos fazer o teste do Durbin Watson para o modelo do preço, em função da casa. Ele faz uma estatística que teste precisamente, se eles são independentes. Aí, o p-valor que a gente compara é com 0.05, nesse caso, o p-valor não foi menor do que 0.05. Logo, a gente não tem evidência suficiente para rejeitar a hipótese nula.
Se eu não consigo rejeitar é porque eu não tenho evidências para dizer que elas não são independentes. Então, eu aceito que são independentes.
##
## Durbin-Watson test
##
## data: mod
## DW = 1.7309, p-value = 0.08659
## alternative hypothesis: true autocorrelation is greater than 0
Minha Hipótese nula é que eles tem a mesma variância.Nesse caso o p-valor não foi menor do que 0.05, então eu não tenho evidências para rejeitar a hipótese de que os erros são homocedásticos , portanto tudo ok com essa suposição do modelo, eles são homocedásticos , pelo menos não tenho evidências para dizer o contrário.
plot(mod$fitted.values, mod$residuals,
xlab = "Valores Ajustados",
ylab = "Residuos",
pch = 19,
main = "Suposição de homocedasticidade"
)
##
## studentized Breusch-Pagan test
##
## data: mod
## BP = 0.12005, df = 1, p-value = 0.729
R. O teste que nós podemos utilizar para verificar a normalidade dos dados é o teste de Shapiro Wilks. A hipótese nula é que os dados tem distribuição normal. Então eu quero testar que os erros, em particular o resíduo, que é a estimativa do erro, tem distribuição normal com média zero.
como o p-valor do que 0.05, eu não tenho evidência para rejeitar que os erros provêm de uma distribuição normal.Então, eu aceito que eles têm distribuição normal por enquanto, porque eu não tenho evidência para dizer o contrário.
##
## Shapiro-Wilk normality test
##
## data: mod$residuals
## W = 0.98356, p-value = 0.2492
A gente testou todas as suposições básicas do modelo de regressão linear simples e até aqui, nós já temos um modelo corretamente estimado e já permite obter estimativas, previsões futuras para novas casas, e determinar qual seria o preço delas.