Diamonds é um dataset nativo do pacote ggplot2 e possui como variável principal o preço(price) de 53940 diamantes distinguidos de acordo com as seguintes variáveis:
carat = Peso do diamante;
cut = Qualidade do corte;
color = Cor do diamante;
clarity = Mede o quão claro é o diamante;
x = Comprimento em mm;
y = Largura em mm;
z = Profundidade em mm;
depth = Porcentagem de profundidade total;
table = Largura do topo do diamante em relação ao ponto mais largo;
Para começar devemos carregar os seguintes pacotes:
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
Agora vamos obeservar um sumário dos dados para ter uma melhor noção do nosso problema:
summary(ggplot2::diamonds)
## carat cut color clarity
## Min. :0.2000 Fair : 1610 D: 6775 SI1 :13065
## 1st Qu.:0.4000 Good : 4906 E: 9797 VS2 :12258
## Median :0.7000 Very Good:12082 F: 9542 SI2 : 9194
## Mean :0.7979 Premium :13791 G:11292 VS1 : 8171
## 3rd Qu.:1.0400 Ideal :21551 H: 8304 VVS2 : 5066
## Max. :5.0100 I: 5422 VVS1 : 3655
## J: 2808 (Other): 2531
## depth table price x
## Min. :43.00 Min. :43.00 Min. : 326 Min. : 0.000
## 1st Qu.:61.00 1st Qu.:56.00 1st Qu.: 950 1st Qu.: 4.710
## Median :61.80 Median :57.00 Median : 2401 Median : 5.700
## Mean :61.75 Mean :57.46 Mean : 3933 Mean : 5.731
## 3rd Qu.:62.50 3rd Qu.:59.00 3rd Qu.: 5324 3rd Qu.: 6.540
## Max. :79.00 Max. :95.00 Max. :18823 Max. :10.740
##
## y z
## Min. : 0.000 Min. : 0.000
## 1st Qu.: 4.720 1st Qu.: 2.910
## Median : 5.710 Median : 3.530
## Mean : 5.735 Mean : 3.539
## 3rd Qu.: 6.540 3rd Qu.: 4.040
## Max. :58.900 Max. :31.800
##
Note que cut, color e clarity são variáveis categoricas (factors), e por conta disso nossa variável resposta Y(price) pode apresentar comportamentos distintos de acordo com tais variáveis. Observe também que a amplitude das variáveis price e carat são bastante altas, podendo ocasionar uma alta variabilidade. Para comprovar isso observemos o gráfico de dispersão a seguir:
ggplot2::diamonds %>%
ggplot(aes(x = carat, y = price)) +
geom_point()
Observando o gráfico acima, temos claros indicios de que ao fazer um modelo de regressão linear encontraríamos indicios de heterocedásticidade. Sendo assim, faremos a seguinte transformação em Y: \[Y' = log(Y)\] Voltemos então a análise gráfica, agora utilizando Y’.
ggplot2::diamonds %>%
mutate(price = log(price)) %>%
ggplot(aes(x = carat, y = price)) +
geom_point()
## Warning: package 'bindrcpp' was built under R version 3.4.2
Houve uma explicíta melhora ! E mais, agora é possível enxergar uma relação logaritmica entre X e Y. Logo, faremos a mesma transformação feita em Y mas agora na variável X. \[ X' = log(X)\]
ggplot2::diamonds %>%
mutate(price = log(price), carat = log(carat)) %>%
ggplot(aes(x = carat, y = price)) +
geom_point()
Ótimo, linearizamos nosso problema. Seguiremos então para a estimação do seguinte modelo: \[ log(PRICE) \sim log(CARAT)+CUT+COLOR+CLARITY\]
lm.diamond <- lm(log(price)~log(carat)+cut+color+clarity, data = diamonds)
summary(lm.diamond)
##
## Call:
## lm(formula = log(price) ~ log(carat) + cut + color + clarity,
## data = diamonds)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.01107 -0.08636 -0.00023 0.08341 1.94778
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 8.457030 0.001168 7242.225 < 2e-16 ***
## log(carat) 1.883718 0.001129 1668.750 < 2e-16 ***
## cut.L 0.120714 0.002354 51.284 < 2e-16 ***
## cut.Q -0.035115 0.002072 -16.950 < 2e-16 ***
## cut.C 0.013479 0.001799 7.494 6.77e-14 ***
## cut^4 -0.001562 0.001441 -1.084 0.278
## color.L -0.439576 0.002027 -216.828 < 2e-16 ***
## color.Q -0.095623 0.001863 -51.335 < 2e-16 ***
## color.C -0.014783 0.001743 -8.481 < 2e-16 ***
## color^4 0.011852 0.001601 7.403 1.35e-13 ***
## color^5 -0.002201 0.001513 -1.455 0.146
## color^6 0.002391 0.001375 1.739 0.082 .
## clarity.L 0.916832 0.003578 256.274 < 2e-16 ***
## clarity.Q -0.243038 0.003330 -72.982 < 2e-16 ***
## clarity.C 0.132400 0.002854 46.387 < 2e-16 ***
## clarity^4 -0.066104 0.002283 -28.955 < 2e-16 ***
## clarity^5 0.027418 0.001864 14.711 < 2e-16 ***
## clarity^6 -0.001819 0.001623 -1.120 0.263
## clarity^7 0.033531 0.001432 23.412 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1338 on 53921 degrees of freedom
## Multiple R-squared: 0.9826, Adjusted R-squared: 0.9826
## F-statistic: 1.693e+05 on 18 and 53921 DF, p-value: < 2.2e-16
Nesta parte iremos estudar o modelo estimado com as variáveis sem transformação dados abaixo: \[ PRICE \sim \beta_1CARAT+e^{\beta_0 + \beta_2CUT+\beta_3COLOR+\beta_4CLARITY}\] Observando as estimativas dos parâmetros vemos que independente do fator observado, carat(peso do diamante) influência positivamente o preço final do diamante, ou seja, quanto mais pesado o diamante, maior seu preço. A diferença dos preços é dado de acordo com as caracteristicas do produto. Então teremos as seguintes equações de acordo com os fatores de cada caracteristica (corte, cor e claridade):