Retransformação de Variáveis (3)

Inverso

set.seed(1)
dados <- data.frame(
  Area = runif(300, min = 360, max = 600)
)
dados$INVVU <- .85 + .001*dados$Area + rnorm(300, mean = 0, sd = 0.15)
dados$VU <- 10*dados$INVVU^(-1)

A Figura 1 mostra que os dados transformados pela função recíproca são aproximadamente normais.

m <- mean(dados$VU^(-1))
s <- sd(dados$VU^(-1))
histogram(~VU^(-1), dados)
plotDist("norm", mean = m, sd = s, add = TRUE)
Histograma dos dados transformados.

Figure 1: Histograma dos dados transformados.

histogram(~VU, dados)

Primeiro ajustamos um modelo linear:

linFit <- lm(VU~Area, dados)
summary(linFit)
## 
## Call:
## lm(formula = VU ~ Area, data = dados)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.9492 -0.6689 -0.0610  0.4189  3.4340 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 10.007935   0.403075   24.83  < 2e-16 ***
## Area        -0.004966   0.000836   -5.94 7.93e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9528 on 298 degrees of freedom
## Multiple R-squared:  0.1059, Adjusted R-squared:  0.1029 
## F-statistic: 35.28 on 1 and 298 DF,  p-value: 7.934e-09

Percebem-se os problemas do modelo na Figura 2:

Modelo linear.

Figure 2: Modelo linear.

A Figura ?? mostra que a transformação ideal é mesmo a raiz cúbica (que surpresa!).

boxcox(linFit)

Mais uma vez, fica nítida a não-linearidade pela análise da Figura 3, como no caso da raiz quadrada. Mas é claro que o ajuste está longe do ideal.

powerPlot(linFit, axis = "inverted")
Poder de Predição para o modelo linear.

Figure 3: Poder de Predição para o modelo linear.

Ajusta-se então um modelo com a variável transformada.

transFit <- lm(VU^(-1)~Area, dados)
s <- summary(transFit)
s
## 
## Call:
## lm(formula = VU^(-1) ~ Area, data = dados)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.044648 -0.008939 -0.001051  0.010192  0.038172 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 9.328e-02  6.490e-03  14.374  < 2e-16 ***
## Area        8.328e-05  1.346e-05   6.187 2.02e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01534 on 298 degrees of freedom
## Multiple R-squared:  0.1138, Adjusted R-squared:  0.1109 
## F-statistic: 38.28 on 1 and 298 DF,  p-value: 2.018e-09

Na Figura 4 pode-se ver o Poder de Predição do modelo com a retransformação naive, ou seja, com a adoção da mediana.

powerPlot(transFit, func = "rec", axis = "inverted")
Poder de predição com retransformação \emph{naive}

Figure 4: Poder de predição com retransformação

E na Figura 5 pode-se ver o Poder de Predição obtido com a média da distribuição original.

yhatMedia <- fitted(transFit)/(fitted(transFit)^2 + s$sigma/300)
powerPlot(dados$VU, yhatMedia, axis = "inverted")
Poder de predição com a média.

Figure 5: Poder de predição com a média.

É possível perceber que o ajuste dos dados (\(R^2\)) não aumenta substancialmente. De maneira análoga, aliás, ao que ocorreu com as outras transformações estudadas nos posts anteriores.

Mas percebe-se uma nítida melhora na previsão de valores nos extremos da amostra. Além disto, as hipóteses da inferência clássica não se verificam nos modelos sem a transformação das variáveis, o que significa que os testes de hipótese e os intervalos de confiança obtidos com estes modelos.

Avatar
Luiz F. P. Droubi
Mestrando no Programa de Pós-Graduação em Engenharia de Transportes e Gestão Territorial

comments powered by Disqus