Logo CEDEPLAR

UNIVERSIDADE FEDERAL DE MINAS GERAIS

Centro de Desenvolvimento e Planejamento Regional (CEDEPLAR)

MODELOS QUANTÍLICOS E ESPECIFICAÇÃO POLINOMIAL: DIAGNÓSTICO DE HETEROSCEDASTICIDADE E TESTES DE WALD

Uma Abordagem Teórica e Prática Aplicada

Ramon Gregório Silva

Timóteo - MG
Setembro de 2026


1 Parte teórica

Revisão Teórica: Formatos Funcionais

Conceito Fundamental para MQO

O Mínimos Quadrados Ordinários (MQO) exige apenas que o modelo seja linear nos parâmetros (coeficientes β) , permitindo relações não-lineares nas variáveis explicativas (x).

  • Polinômios: Ajustados no R adicionando potências de x isoladas por I().
  • Exponencial: Ajustada aplicando o logaritmo em y antes de rodar o modelo.

Simulador Interativo: Formato Funcional e Linearidade


Transformação de Box-Cox: O Papel de Lambda (λ)

Definição Geral da Transformação de Box-Cox

Para uma variável positiva y, a transformação funcional é definida parametricamente como:

y^(λ) = (y^λ - 1) / λ [para λ ≠ 0] y^(λ) = ln(y) [para λ = 0]

O modelo econométrico estimado assume a forma y^(λ) = β₀ + β₁x + ε .

2 Por que do termo quadrático ?

O gráfico expõe a relação entre o logaritmo do preço dos imóveis e o número de cômodos na base hprice2 do livro do Wooldridge, utilizando uma subamostra limitada a residências de até sete cômodos (rooms <= 7). A visualização foi gerada via ggplot2 mapeando os dados com pontos semitransparentes (geom_point(alpha = 0.5)), o que destaca a maior densidade de observações na faixa de 5 a 7 cômodos. O elemento central é a curva suavizada laranja (geom_smooth), construída de forma não paramétrica via algoritmo LOESS (method = “loess”), com uma faixa cinza representando o intervalo de confiança do ajuste.

A inspeção informal dessa curva LOESS revela claramente um padrão não linear em formato de “U”, que é a marca registrada de um comportamento quadrático. Para imóveis pequenos (entre 3,5 e 5 cômodos), a tendência do preço relativo é decrescente; porém, ao atingir o ponto mínimo próximo de 4,5 a 5 cômodos, a inclinação se inverte e passa a crescer de forma acelerada conforme o número de cômodos aumenta. Uma regressão linear simples tentaria traçar uma linha reta através desses pontos, ignorando a queda inicial e subestimando o impacto dos cômodos adicionais nas casas maiores.

Essa mudança de direção na curva gera empiricamente a hipótese de que o modelo econométrico precisa incluir um termo polinomial de segundo grau. Na prática do MQO, essa evidência visual justifica a especificação \(\ln(\text{price}) = \beta_0 + \beta_1 \cdot \text{rooms} + \beta_2 \cdot \text{rooms}^2 + u\), onde o parâmetro linear \(\beta_1\) assume sinal negativo e o parâmetro quadrático \(\beta_2\) assume sinal positivo. Essa estrutura matemática permite capturar a concavidade voltada para cima da parábola e calcular com precisão o ponto de virada a partir do qual o tamanho do imóvel passa a valorizá-lo significativamente.

library(wooldridge)
library(ggplot2)
## Warning: pacote 'ggplot2' foi compilado no R versão 4.4.3
data("hprice2")

ggplot(subset(hprice2, rooms <= 7), aes(x = rooms, y = log(price))) +  
  geom_point(alpha = 0.5, color = "steelblue") +  
  geom_smooth(method = "loess", color = "darkorange", se = TRUE, span = 0.75) +
  labs(title = "Relação entre Preço e Número de Cômodos",
       x = "Número de Cômodos (rooms)",
       y = "Log(Preço)") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

3 Qual o sentido de usar Log(y) ?

O código realiza a seleção da forma funcional para o preço dos imóveis comparando o modelo em nível (\(price\)) e em logaritmo (\(\ln(price)\)) por meio do Teste de MacKinnon-White-Davidson (MWD) e da Transformação de Box-Cox. Inicialmente, estimam-se as regressões em nível e log com as mesmas variáveis explicativas — que incluem termos logarítmicos e um polinômio quadrático para o número de cômodos — para extrair seus valores ajustados. Em seguida, calculam-se as variáveis auxiliares \(z_1\) (diferença entre a previsão em log e o logaritmo da previsão em nível) e \(z_2\) (diferença entre a previsão em nível e a exponencial da previsão em log), cujos significâncias estatísticas nos modelos reestimados definem se cada forma funcional deve ser rejeitada em favor da outra.

Na sequência, utiliza-se a função boxcox() do pacote MASS para avaliar uma abordagem paramétrica contínua sobre o modelo em nível, calculando a função de log-verossimilhança para uma grade do parâmetro \(\lambda\) variando de \(-2\) a \(2\). A partir dessa curva, o código identifica pontualmente o \(\lambda\) ótimo que maximiza a verossimilhança dos dados e constrói um intervalo de confiança de \(95\%\) baseado na distribuição qui-quadrado. Esse resultado permite verificar formalmente se valores teóricos como \(\lambda = 1\) (modelo puramente linear/nível) ou \(\lambda = 0\) (modelo puramente logarítmico) estão contidos no intervalo, fornecendo o suporte econométrico definitivo para a escolha da melhor transformação da variável dependente.

modelo_nivel <- lm(price ~ log(nox) + log(dist) + rooms+ I(rooms^2)  + stratio, data = hprice2)
modelo_log   <- lm(log(price) ~ log(nox) + log(dist) + rooms + I(rooms^2) + stratio, data = hprice2)


# 2. Obtenção das predições originais de cada modelo
h_hat     <- fitted(modelo_nivel)       # Previsão em nível (preço bruto)
log_h_hat <- fitted(modelo_log)         # Previsão em log (log do preço)

# 3. Criação das variáveis auxiliares corretas do MWD
# z1: Testa o modelo LOG contra o nível (adiciona a predição em nível transformada em log)
hprice2$z1 <- log_h_hat - log(h_hat)

# z2: Testa o modelo NÍVEL contra o log (adiciona a predição em log transformada em nível)
hprice2$z2 <- h_hat - exp(log_h_hat)

# 4. Executando os testes de significância das variáveis auxiliares

# Teste 1: Adicionando z1 no modelo em log (Se z1 for significativo, rejeita-se o modelo log)
teste_log <- lm(log(price) ~ log(nox) + log(dist) + rooms + I(rooms^2) + stratio + z1, data = hprice2)
summary(teste_log)
## 
## Call:
## lm(formula = log(price) ~ log(nox) + log(dist) + rooms + I(rooms^2) + 
##     stratio + z1, data = hprice2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.01876 -0.11545  0.01843  0.12660  1.25609 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.33507    0.56610  23.556  < 2e-16 ***
## log(nox)    -0.82600    0.12252  -6.742 4.34e-11 ***
## log(dist)   -0.02813    0.05490  -0.512 0.608562    
## rooms       -0.58809    0.16698  -3.522 0.000468 ***
## I(rooms^2)   0.06559    0.01292   5.075 5.47e-07 ***
## stratio     -0.04901    0.00590  -8.307 9.32e-16 ***
## z1          -0.50215    0.29009  -1.731 0.084070 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2587 on 499 degrees of freedom
## Multiple R-squared:  0.6052, Adjusted R-squared:  0.6004 
## F-statistic: 127.5 on 6 and 499 DF,  p-value: < 2.2e-16
# Teste 2: Adicionando z2 no modelo em nível (Se z2 for significativo, rejeita-se o modelo em nível)
teste_nivel <- lm(price ~ log(nox) + log(dist) + rooms + I(rooms^2) + stratio + z2, data = hprice2)
summary(teste_nivel)
## 
## Call:
## lm(formula = price ~ log(nox) + log(dist) + rooms + I(rooms^2) + 
##     stratio + z2, data = hprice2)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -23760  -2760   -261   2416  34137 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.318e+05  1.159e+04  11.376  < 2e-16 ***
## log(nox)    -2.080e+04  2.400e+03  -8.668  < 2e-16 ***
## log(dist)   -4.199e+03  1.013e+03  -4.145 4.00e-05 ***
## rooms       -2.279e+04  3.485e+03  -6.539 1.54e-10 ***
## I(rooms^2)   2.318e+03  2.697e+02   8.592  < 2e-16 ***
## stratio     -1.001e+03  1.199e+02  -8.351 6.74e-16 ***
## z2          -1.309e-01  2.081e-01  -0.629     0.53    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5248 on 499 degrees of freedom
## Multiple R-squared:  0.6791, Adjusted R-squared:  0.6752 
## F-statistic:   176 on 6 and 499 DF,  p-value: < 2.2e-16
library(MASS)
## 
## Anexando pacote: 'MASS'
## O seguinte objeto é mascarado por 'package:wooldridge':
## 
##     cement
# 5. Estimação e IC do Lambda via Box-Cox aproveitando o mesmo 'modelo_nivel'
bc_resultado <- boxcox(modelo_nivel, lambda = seq(-2, 2, by = 0.1))

lambda_otimo <- bc_resultado$x[which.max(bc_resultado$y)]
cat("Lambda ótimo estimado:", lambda_otimo, "\n")
## Lambda ótimo estimado: 0.5454545
lambda_ic <- bc_resultado$x[bc_resultado$y > max(bc_resultado$y) - qchisq(0.95, 1)/2]
cat("Intervalo de Confiança (95%) para Lambda:", range(lambda_ic), "\n")
## Intervalo de Confiança (95%) para Lambda: 0.4242424 0.6666667

Com base nos p-valores das variáveis auxiliares do teste MWD, não é possível rejeitar nem o modelo em nível nem o modelo em logaritmo, pois ambas as estatísticas ficam acima do nível padrão de significância de 5%. A variável \(z_2\) apresenta um p-valor de \(0,53\) no teste do modelo em nível, indicando que a inclusão da predição em log não traz ganhos estatisticamente significativos; simultaneamente, \(z_1\) apresenta p-valor de \(0,0841\) no teste do modelo em log, não alcançando a rejeição ao nível de 5% (embora marginalmente significante a 10%). Diante dessa não rejeição mútua pelo teste MWD, a escolha entre as duas especificações deve ser guiada pela análise conjunta do teste de Box-Cox (verificando se o intervalo de confiança inclui \(\lambda = 0\) ou \(\lambda = 1\)) e pela facilidade de interpretação econômica, na qual o modelo em logaritmo costuma levar vantagem por suavizar a assimetria do preço e permitir a leitura direta das elasticidades e semi-elasticidades.

4 Estimando o primeiro modelo

O modelo estimado investiga a relação entre o logaritmo do preço dos imóveis (\(\ln(price)\)) e um conjunto de características ambientais, locacionais e estruturais, gerando a equação ajustada: \(\widehat{\ln(price)} = 13{,}39 - 0{,}90\ln(nox) - 0{,}09\ln(dist) - 0{,}55\cdot rooms + 0{,}062\cdot rooms^2 - 0{,}048\cdot stratio\). O parâmetro estimado referente ao termo quadrático (\(\hat{\beta}_{\text{rooms}^2} = 0{,}0622\)) apresentou estatística \(t = 4{,}862\) e p-valor de \(1{,}56 \times 10^{-6}\), mostrando-se estatisticamente significante ao nível de 1%. O resultado do modelo formal confirma com rigor econométrico a análise visual não paramétrica realizada anteriormente: os coeficientes negativo do termo linear (\(\hat{\beta}_{\text{rooms}} = -0{,}545\)) e positivo do termo quadrático (\(\hat{\beta}_{\text{rooms}^2} = 0{,}0622\)) comprovam a concavidade voltada para cima (formato em “U”) e o efeito acelerado do número de cômodos sobre o valor do imóvel a partir do ponto de virada.

É fundamental compreender que o teste de hipótese refere-se à significância do parâmetro populacional (\(\beta\)), e não da variável em si. A confusão clássica que alunos cometem em provas é afirmar que “a variável \(rooms^2\) é significante”, quando a variável é apenas o dado coletado no mundo real (o número de cômodos elevado ao quadrado). O que o teste estatístico avalia é se o parâmetro inferido (\(\hat{\beta}\)) é estatisticamente diferente de zero, indicando se existe um efeito populacional detectável daquela variável sobre o log do preço. A variável existe independentemente da regressão; o parâmetro é a medida estimada da relação estrutural que estamos testando.

Diferenciar a variável do seu parâmetro é crucial porque essa distinção evita erros conceituais graves de interpretação econômica e econométrica. Por exemplo, em modelos com termos polinomiais, a variável \(rooms\) aparece duas vezes no modelo (\(rooms\) e \(rooms^2\)), mas cada uma possui seu próprio parâmetro. Testar a significância do parâmetro de \(rooms^2\) serve para avaliar se a não linearidade da relação é estatisticamente válida, mantendo os demais fatores constantes, e não para julgar a relevância física do cômodo no imóvel. Na linguagem formal da ciência econômica, não dizemos que a variável é significante, mas sim que o coeficiente/parâmetro estimado para aquela variável é estatisticamente significante ao nível considerado.

# 2. Estima o modelo da Equação 6.14 com o termo quadrático em rooms (comods)
modelo_6.2 <- lm(log(price) ~ log(nox) + log(dist) + rooms + I(rooms^2)  + stratio, data = hprice2)

# 3. Exibe os resultados detalhados da regressão
summary(modelo_6.2)
## 
## Call:
## lm(formula = log(price) ~ log(nox) + log(dist) + rooms + I(rooms^2) + 
##     stratio, data = hprice2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.04285 -0.12774  0.02038  0.12650  1.25272 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.385477   0.566473  23.630  < 2e-16 ***
## log(nox)    -0.901682   0.114687  -7.862 2.34e-14 ***
## log(dist)   -0.086781   0.043281  -2.005  0.04549 *  
## rooms       -0.545113   0.165454  -3.295  0.00106 ** 
## I(rooms^2)   0.062261   0.012805   4.862 1.56e-06 ***
## stratio     -0.047590   0.005854  -8.129 3.42e-15 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2592 on 500 degrees of freedom
## Multiple R-squared:  0.6028, Adjusted R-squared:  0.5988 
## F-statistic: 151.8 on 5 and 500 DF,  p-value: < 2.2e-16

5 Gráfico inteiro : O que você percebe ?

Ao expandir a amostra para até 9 cômodos, a análise informal do gráfico revela uma segunda mudança de direção na trajetória da curva, gerando um clássico formato em “S” com dois pontos de inflexão: a tendência inicialmente cai até cerca de 5 cômodos, sobe expressivamente entre 5 e 8 cômodos e volta a desacelerar/estagnar para imóveis muito grandes (acima de 8 cômodos). Essa dinâmica indica que uma especificação apenas quadrática é insuficiente e sugere a ausência do parâmetro associado ao termo cúbico, referente à elevação da variável explicativa à terceira potência (\(\text{rooms}^3\)). No R, a captura formal dessa nova curvatura exige adicionar o parâmetro estimado do termo I(rooms^3) ao modelo, permitindo acomodar a desacelerarão do ganho marginal nos preços para mansões ou casas com número extremo de cômodos.

ggplot(hprice2, aes(x = rooms, y = log(price))) +
  geom_point(alpha = 0.5, color = "darkseagreen4") +  
  geom_smooth(method = "lm", formula = y ~ x + I(x^2) + I(x^3), color = "purple", se = TRUE) + 
  xlim(NA, 9) + # Ampliado até 9 cômodos conforme a sua observação
  labs(
    title = "Modelo com Termo Cúbico (Até 9 Cômodos)",
    subtitle = "Ajuste polinomial de 3º grau para o Log do Preço",
    x = "Número de Cômodos (rooms)",
    y = "Log do Preço (log(price))"
  ) +
  theme_minimal()

A equação ajustada passa a ser \(\widehat{\ln(price)} = 20{,}03 - 0{,}86\ln(nox) - 0{,}08\ln(dist) - 3{,}89\cdot rooms + 0{,}60\cdot rooms^2 - 0{,}029\cdot rooms^3 - 0{,}047\cdot stratio\). O parâmetro estimado para o termo cúbico (\(\hat{\beta}_{\text{rooms}^3} = -0{,}0286\)) apresentou estatística \(t = -3{,}488\) e p-valor de \(0{,}00053\), mostrando-se estatisticamente significante ao nível de 0,1%. A transição dos sinais dos coeficientes do número de cômodos (\(\hat{\beta}_1 < 0\), \(\hat{\beta}_2 > 0\) e \(\hat{\beta}_3 < 0\)) valida a existência dos dois pontos de inflexão observados na curva não paramétrica (curvatura em “S”).

Com essa especificação, o efeito marginal do número de cômodos deixa de ser uma parábola simétrica e assume um formato com rendimentos variáveis. Para casas pequenas, o efeito inicial de adicionar cômodos é negativo ou modesto; para casas de porte médio a grande (faixa de 5 a 8 cômodos), o parâmetro quadrático positivo domina, gerando valorização acelerada; por fim, para imóveis muito grandes (acima de 8 cômodos), o parâmetro cúbico negativo começa a desacelerar esse ganho marginal. O \(R^2\) ajustado subiu ligeiramente de \(0{,}5988\) para \(0{,}6076\), indicando que a inclusão do termo cúbico melhorou a capacidade explicativa do modelo sem gerar penalização por supereficiência.

# 2. Estima o modelo da Equação 6.14 com o termo quadrático em rooms (comods)
modelo_6.2.b <- lm(log(price) ~ log(nox) + log(dist) + rooms + I(rooms^2)+I(rooms^3) + stratio, data = hprice2)

# 3. Exibe os resultados detalhados da regressão
summary(modelo_6.2.b)
## 
## Call:
## lm(formula = log(price) ~ log(nox) + log(dist) + rooms + I(rooms^2) + 
##     I(rooms^3) + stratio, data = hprice2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.01448 -0.11286  0.02095  0.13279  1.27445 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 20.031857   1.985932  10.087  < 2e-16 ***
## log(nox)    -0.856126   0.114176  -7.498 2.98e-13 ***
## log(dist)   -0.077278   0.042892  -1.802 0.072197 .  
## rooms       -3.891424   0.973119  -3.999 7.33e-05 ***
## I(rooms^2)   0.603691   0.155723   3.877 0.000120 ***
## I(rooms^3)  -0.028597   0.008198  -3.488 0.000529 ***
## stratio     -0.046934   0.005793  -8.102 4.19e-15 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2564 on 499 degrees of freedom
## Multiple R-squared:  0.6123, Adjusted R-squared:  0.6076 
## F-statistic: 131.3 on 6 and 499 DF,  p-value: < 2.2e-16

6 É importante incluir I(rooms^3)?

O teste de Wald avalia se a remoção do termo cúbico gera uma perda significante de capacidade explicativa ao comparar o modelo restrito (apenas com o termo quadrático) ao modelo completo (não restrito), testando a hipótese nula de que \(\beta_{\text{rooms}^3} = 0\). Como a estatística \(F = 10{,}573\) resultou em um p-valor de \(0{,}001225\), rejeita-se a hipótese nula ao nível de significância de 1%, concluindo-se que o termo cúbico é estatisticamente indispensável e que o Modelo 2 (cúbico) é o mais adequado para capturar a estrutura de dados da base.

library(lmtest)
## Warning: pacote 'lmtest' foi compilado no R versão 4.4.3
## Carregando pacotes exigidos: zoo
## Warning: pacote 'zoo' foi compilado no R versão 4.4.2
## 
## Anexando pacote: 'zoo'
## Os seguintes objetos são mascarados por 'package:base':
## 
##     as.Date, as.Date.numeric
library(sandwich)
## Warning: pacote 'sandwich' foi compilado no R versão 4.4.3
# 1. Teste de Wald Robusto comparando o Modelo 6.2 (Quadrático) e 6.2.b (Cúbico)
waldtest(modelo_6.2, modelo_6.2.b, vcov = vcovHC(modelo_6.2.b, type = "HC1"))
## Wald test
## 
## Model 1: log(price) ~ log(nox) + log(dist) + rooms + I(rooms^2) + stratio
## Model 2: log(price) ~ log(nox) + log(dist) + rooms + I(rooms^2) + I(rooms^3) + 
##     stratio
##   Res.Df Df      F   Pr(>F)   
## 1    500                      
## 2    499  1 10.573 0.001225 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Homocedasticidade, Heterocedasticidade e Regressão Quantílica

1. Conceitos Fundamentais

Homocedasticidade Ocorre quando a variância do termo de erro condicional às variáveis explicativas é constante: Var(u | X) = σ² . A dispersão dos dados ao redor da reta de regressão é uniforme em toda a amostra.

Heterocedasticidade Ocorre quando a variância do erro muda conforme o valor de X se altera: Var(u | X) = σ²(X) . No gráfico acima, nota-se o efeito 'funil', onde a incerteza aumenta para valores maiores de X.

2. Impacto na Previsibilidade e Assintótica do MQO
  • Consistência e Não-Tendenciosidade mantidas: Mesmo em presença de heterocedasticidade e com amostras grandes (N → ∞), o estimador de MQO continua sendo não-tendencioso e consistente para a média condicional. O parâmetro estimado converge para o valor verdadeiro.
  • Perda de Eficiência (Fim do BLUE): O MQO deixa de ser o estimador de variância mínima. Os erros-padrão convencionais ficam incorretos, o que invalida os testes t e F tradicionais (exigindo erros-padrão robustos de White).
  • Prejuízo à Previsibilidade Geral: Como o MQO projeta apenas a média condicional , ele fornece uma previsão ruim para as caudas da distribuição quando há heterocedasticidade. A margem de erro da previsão varia ao longo de X, mas a regressão linear atribui a mesma precisão média a todos os pontos.
3. Como a Regressão Quantílica Soluciona o Problema

Regressão Quantílica Em vez de estimar apenas E(Y|X), a regressão quantílica estima quantis condicionais específicos (ex: 10%, 50% [mediana], 90%).

  • Mapeamento do Efeito 'Funil': Sob heterocedasticidade, as inclinações dos diferentes quantis diferem. A regressão quantílica permite ver como a dispersão afeta desigualmente os indivíduos na cauda superior e inferior.
  • Previsão Completa da Distribuição: Permite construir intervalos de predição realistas que se expandem ou contraem de acordo com a variação local de X, capturando a verdadeira estrutura de incerteza dos dados.

7 Podemos assegurar a hipótese de homocedasticidade?

O teste de Breusch-Pagan studentizado avalia a hipótese nula de homocedasticidade (\(H_0: \text{Var}(u\vert{}X) = \sigma^2\)) contra a alternativa de heterocedasticidade, e a obtenção de p-valores extremamente baixos (\(p < 0,001\)) em ambos os modelos leva à rejeição peremptória de \(H_0\), confirmando que a variância dos erros não é constante. Embora a heterocedasticidade não comprometa a não-tendenciosidade e a consistência dos estimadores de MQO em grandes amostras, ela invalida a propriedade de eficiência (BLUE) e distorce os erros-padrão convencionais, o que compromete os testes \(t\) e \(F\) tradicionais e reduz o alcance preditivo do modelo para indivíduos localizados nas caudas da distribuição — exigindo o uso de erros-padrão robustos (de White) ou a migração para a regressão quantílica.

library(sandwich)
bp_6.2 <- bptest(modelo_6.2)
bp_6.2.b <- bptest(modelo_6.2.b)

# Exibir os resultados
print(bp_6.2)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_6.2
## BP = 72.938, df = 5, p-value = 2.505e-14
print(bp_6.2.b)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_6.2.b
## BP = 69.936, df = 6, p-value = 4.214e-13

O código realiza a estimação da Regressão Quantílica para três quantis da distribuição do preço dos imóveis (\(\tau = 0{,}25\), \(\tau = 0{,}50\) e \(\tau = 0{,}75\)), utilizando a técnica de bootstrap para o cálculo dos erros-padrão e p-valores. Essa abordagem revela com clareza a presença de heterocedasticidade, pois os coeficientes das variáveis explicativas mudam substancialmente ao longo da distribuição condicional. A poluição (\(\ln(nox)\)), por exemplo, apresenta um impacto negativo significativamente mais severo nos imóveis mais baratos (quantil 0,25, com coef. \(-1{,}0092\)) do que nos imóveis de alto padrão (quantil 0,75, com coef. \(-0{,}4178\)). Essa variação na inclinação da reta entre os percentis comprova o “efeito funil” da variância não constante, mostrando que os fatores ambientais e locacionais afetam os preços de forma heterogênea.

A leitura das elasticidades e semi-elasticidades no modelo varia conforme a transformação aplicada a cada covariável. Nas especificações log-log (\(\ln(nox)\) e \(\ln(dist)\)), a interpretação é direta em termos de elasticidade-preço: no quantil mediano (\(\tau = 0{,}50\)), um aumento de \(1\%\) no nível de poluição reduz o preço do imóvel em aproximadamente \(0{,}73\%\), enquanto um aumento de \(1\%\) na distância dos centros urbanos reduz o valor em \(0{,}086\%\). Por sua vez, na relação log-lin do número de cômodos com o polinômio cúbico (\(rooms\), \(rooms^2\) e \(rooms^3\)), a variação percentual no preço dada a inclusão de um cômodo adicional não é constante; ela depende da quantidade atual de cômodos do imóvel e do quantil analisado, sendo calculada pela derivada parcial \(\frac{\partial \ln(price)}{\partial rooms} = \hat{\beta}_1 + 2\hat{\beta}_2 rooms + 3\hat{\beta}_3 rooms^2\).

A análise comparativa entre os quantis revela insights econômicos cruciais que seriam ocultados pela média do MQO. O efeito desvalorizador da poluição e da taxa aluno-professor (\(stratio\)) perde força à medida que avançamos para o quantil superior (0,75), sugerindo que compradores de imóveis de luxo absorvem melhor a penalização da poluição local em troca de outros atributos do imóvel. Em contrapartida, a estrutura polinomial para o número de cômodos ganha forte significância estatística apenas no quantil superior (\(p < 0{,}001\) para \(rooms\), \(rooms^2\) e \(rooms^3\) em \(\tau = 0{,}75\)), indicando que a não linearidade em “S” e os rendimentos marginais do tamanho do imóvel são determinantes críticos para precificar residências de alto padrão, mas secundários na faixa de menor valor.

# 1. Carregamento dos pacotes e da base de dados
library(quantreg)
## Carregando pacotes exigidos: SparseM
library(knitr)


# 2. Estimação da Regressão Quantílica Múltipla (Quantis 0.25, 0.50 e 0.75)
rq_multiplos <- rq(
  log(price) ~ log(nox) + log(dist) + rooms + I(rooms^2) + I(rooms^3) + stratio,
  tau = c(0.25, 0.50, 0.75),
  data = hprice2
)

# 3. Extração dos resumos estatísticos com erros-padrão via Bootstrap
set.seed(123) # Garante a reproducibilidade do bootstrap
s <- summary(rq_multiplos, se = "boot")

# 4. Construção do Data Frame consolidado com Coeficientes e P-valores
tabela_quantris <- data.frame(
  Variavel   = rownames(s[[1]]$coefficients),
  Coef_0.25  = s[[1]]$coefficients[, 1],
  Pval_0.25  = s[[1]]$coefficients[, 4],
  Coef_0.50  = s[[2]]$coefficients[, 1],
  Pval_0.50  = s[[2]]$coefficients[, 4],
  Coef_0.75  = s[[3]]$coefficients[, 1],
  Pval_0.75  = s[[3]]$coefficients[, 4]
)

# 5. Arredondamento dos valores numéricos para 4 casas decimais
tabela_quantris[, -1] <- round(tabela_quantris[, -1], 4)

# 6. Exibição da Tabela Final Formatada no R Markdown
kable(
  tabela_quantris,
  col.names = c("Variável", "Coef (0,25)", "p-valor (0,25)", "Coef (0,50)", "p-valor (0,50)", "Coef (0,75)", "p-valor (0,75)"),
  align = c("l", "r", "r", "r", "r", "r", "r"),
  caption = "Tabela Comparativa da Regressão Quantílica (Quantis 0.25, 0.50 e 0.75)"
)
Tabela Comparativa da Regressão Quantílica (Quantis 0.25, 0.50 e 0.75)
Variável Coef (0,25) p-valor (0,25) Coef (0,50) p-valor (0,50) Coef (0,75) p-valor (0,75)
(Intercept) (Intercept) 17.8526 0.0000 17.3736 0.0000 21.0646 0.0000
log(nox) log(nox) -1.0092 0.0000 -0.7258 0.0000 -0.4178 0.0000
log(dist) log(dist) -0.1084 0.0203 -0.0865 0.0485 -0.0603 0.0656
rooms rooms -2.8743 0.1107 -2.8787 0.0891 -4.8794 0.0000
I(rooms^2) I(rooms^2) 0.4537 0.1037 0.4575 0.0697 0.7671 0.0000
I(rooms^3) I(rooms^3) -0.0211 0.1395 -0.0215 0.0822 -0.0373 0.0000
stratio stratio -0.0460 0.0000 -0.0392 0.0000 -0.0327 0.0000


8 Como a poluição influencia no preço do imóvel na regressão quantílica?


SIMULADO DE ECONOMETRIA INTEGRAL: ESPECIFICAÇÃO E QUANTIS

Mapeamento do Conteúdo: Termos Polinomiais (^2 e ^3), Distinção Variável/Parâmetro, Teste de Wald (Formal), Gráficos Quantílicos (Informal) e Heteroscedasticidade.

1. Ao estimar o modelo log(price) = b0 + b1*rooms + b2*(rooms^2) + b3*(rooms^3) + u por MQO, dizemos que a regressão é não-linear em relação a quê?

2. Como se realiza a 'análise informal' e a 'análise formal' sobre a necessidade de incluir potências elevadas (como rooms^2 e rooms^3) em um modelo econométrico?

3. Ao rodar um modelo quantílico e testar conjuntamente H0: b_rooms^2 = 0 e b_rooms^3 = 0, qual é o teste estatístico formal adequado e por quê?

4. Se o efeito marginal do número de cômodos (rooms) sobre o preço for DIFERENTE ao longo dos quantis (tau = 0.25, 0.50 e 0.75), o que isso revela sobre a distribuição dos erros do modelo?

5. No modelo com termo cúbico price = b0 + b1*rooms + b2*(rooms^2) + b3*(rooms^3), qual é a expressão do efeito marginal de 'rooms' sobre o preço?

6. Qual a diferença conceitual fundamental entre 'Variável Explicativa' e 'Parâmetro' na econometria?

7. Em um gráfico da Regressão Quantílica com 'rooms' no eixo X e 'price' no eixo Y, o que significa informalmente se as linhas dos quantis (0.25, 0.50, 0.75) forem retas e totalmente paralelas?

8. Um analista rodou um teste de Wald para testar se b_rooms^2 = 0 e b_rooms^3 = 0 em um modelo quantílico (tau = 0.50). O valor p retornado foi de 0.002. A conclusão formal é:

9. Por que a análise informal (gráfica) é considerada complementar, mas NÃO suficiente para tomadas de decisão econométricas sem a análise formal?

10. Quando adicionamos os termos rooms^2 e rooms^3 ao modelo, o que acontece com a multicolinearidade entre os regressores e como resolver o problema na prática?