Diamonds

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

Interpretação do modelo

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):