Abstract
We analyse heteroskedasticity using example 11.10 from Gujarati’s Basic Econometrics.This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
License: CC BY-SA 4.0
Sugestão de citação: FIGUEIREDO, Adriano Marcos Rodrigues. Econometria: exemplo 11.10, heterocedasticidade, Gujarati (2004, p.424 english edition) (p388 Brazilian edition). Campo Grande-MS,Brasil: RStudio/Rpubs, 2019. Disponível em http://rpubs.com/amrofi/Gujarati_salesp424.
Os primeiros passos são criar ou abrir um diretório de trabalho. Se optar por criar um novo projeto, haverá a possibilidade de criar em uma pasta vazia. Em seguida, sugere-se que coloque os dados nesta pasta, se possível em um arquivo MS Excel e chame a planilha de ‘dados’.Neste caso, a planilha de dados será colocada dentro do código gerado pela função dput()
.
Enunciado Exemplo 11.10. Fonte: Gujarati, 2004, p.424.
Aqui chamaremos os dados pela estrutura do dput()
extraído previamente. Em seguida faremos a regressão dos gastos de P&D (R&D Expenses, ou \(PD\)) como função das vendas (Sales, \(VENDAS\)). O sumário da regressão é apresentado ao final.
dados <- structure(list(obs = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18), VENDAS = c(6375.3, 11626.4, 14655.1, 21869.2, 26408.3,
32405.6, 35107.7, 40295.4, 70761.6, 80552.8, 95294, 101314.1, 116141.3,
122315.7, 141649.9, 175025.8, 230614.5, 293543), PD = c(62.5, 92.9, 178.3,
258.4, 494.7, 1083, 1620.6, 421.7, 509.2, 6620.1, 3918.6, 1595.3, 6107.5,
4454.1, 3163.8, 13210.7, 1703.8, 9528.2), LUCROS = c(185.1, 1569.5, 276.8,
2828.1, 225.9, 3751.9, 2884.1, 4645.7, 5036.4, 13869.9, 4487.8, 10278.9,
8787.29999999999, 16438.8, 9761.4, 19774.5, 22626.6, 18415.4)), row.names = c(NA,
-18L), class = c("tbl_df", "tbl", "data.frame"))
library(stargazer)
library(car)
library(lmtest)
library(AER)
# VENDAS = vendas setoriais PD = pesquisa e desenvolvimento LUCRO = lucro
# setorial
knitr::kable(dados)
obs | VENDAS | PD | LUCROS |
---|---|---|---|
1 | 6375.3 | 62.5 | 185.1 |
2 | 11626.4 | 92.9 | 1569.5 |
3 | 14655.1 | 178.3 | 276.8 |
4 | 21869.2 | 258.4 | 2828.1 |
5 | 26408.3 | 494.7 | 225.9 |
6 | 32405.6 | 1083.0 | 3751.9 |
7 | 35107.7 | 1620.6 | 2884.1 |
8 | 40295.4 | 421.7 | 4645.7 |
9 | 70761.6 | 509.2 | 5036.4 |
10 | 80552.8 | 6620.1 | 13869.9 |
11 | 95294.0 | 3918.6 | 4487.8 |
12 | 101314.1 | 1595.3 | 10278.9 |
13 | 116141.3 | 6107.5 | 8787.3 |
14 | 122315.7 | 4454.1 | 16438.8 |
15 | 141649.9 | 3163.8 | 9761.4 |
16 | 175025.8 | 13210.7 | 19774.5 |
17 | 230614.5 | 1703.8 | 22626.6 |
18 | 293543.0 | 9528.2 | 18415.4 |
attach(dados)
regressao1 <- lm(PD ~ VENDAS)
summary(regressao1)
Call:
lm(formula = PD ~ VENDAS)
Residuals:
Min 1Q Median 3Q Max
-5845.9 -950.6 -402.4 346.3 7434.3
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.930e+02 9.910e+02 0.195 0.84804
VENDAS 3.190e-02 8.329e-03 3.830 0.00148 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2759 on 16 degrees of freedom
Multiple R-squared: 0.4783, Adjusted R-squared: 0.4457
F-statistic: 14.67 on 1 and 16 DF, p-value: 0.001476
Primeiro geramos os resíduos uhat (\(\hat u\)) da regressão 1 do bloco anterior. Em seguida geramos uhat2 = resíduos ao quadrado (\(\hat u^2\)) e os valores absolutos dos resíduos, uhat.abs = (\(|\hat u|\)).
# gerar residuos
uhat <- regressao1$residuals
uhat
1 2 3 4 5 6
-333.86730 -470.97913 -482.19567 -632.22786 -540.72666 -143.74252
7 8 9 10 11 12
307.65959 -1056.72977 -1941.11167 3857.44579 685.69661 -1829.64658
13 14 15 16 17 18
2209.56081 359.19540 -1547.87201 7434.32569 -5845.87232 -28.91239
uhat2 <- uhat^2
# residuos em valores absolutos
uhat.abs <- abs(uhat)
uhat.abs
1 2 3 4 5 6
333.86730 470.97913 482.19567 632.22786 540.72666 143.74252
7 8 9 10 11 12
307.65959 1056.72977 1941.11167 3857.44579 685.69661 1829.64658
13 14 15 16 17 18
2209.56081 359.19540 1547.87201 7434.32569 5845.87232 28.91239
Esse teste prevê a regressão auxiliar de \(|\hat u|\) em função de \(VENDAS\). O sumário está abaixo.
# Estimar “uhat.abs” em função de Vendas: ou seja, módulo dos resíduos em
# função de vendas:
reg.glejser <- lm(uhat.abs ~ VENDAS)
summary(reg.glejser)
Call:
lm(formula = uhat.abs ~ VENDAS)
Residuals:
Min 1Q Median 3Q Max
-4054.4 -714.0 -258.9 193.6 4766.1
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.786e+02 6.787e+02 0.852 0.4065
VENDAS 1.194e-02 5.704e-03 2.093 0.0526 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1890 on 16 degrees of freedom
Multiple R-squared: 0.215, Adjusted R-squared: 0.1659
F-statistic: 4.381 on 1 and 16 DF, p-value: 0.05263
O coeficiente significativo (Pr(>|t|) inferior a 10% de significância) para \(VENDAS\) indica que \(VENDAS\) causa heterocedasticidade no modelo.
bptest
simplesEsse teste prevê a regressão auxiliar de \(\hat u^2\) em função de \(VENDAS\). O sumário do teste está abaixo. Atente que nesse caso não aparece a regressão auxiliar, mas apenas a saída do teste.
bp.het <- bptest(regressao1, studentize = TRUE)
bp.het
studentized Breusch-Pagan test
data: regressao1
BP = 3.9952, df = 1, p-value = 0.04563
O valor de p-value = 0.04563
revela que rejeita H0: os resíduos são homocedásticos. Portanto, conclui-se pela presença de heterocedasticidade dos resíduos.
Esse teste prevê a regressão auxiliar de \(\hat u^2\) como função das variáveis e variáveis ao quadrado, assim como os eventuais produtos cruzados. A rotina abaixo faz a regressão auxiliar, extrai a estatística de teste (\(LM\)) e seu respectivo p-valor (p.value
).
m <- regressao1
data <- dados
# rotina do teste com base em m e data
u2 <- m$residuals^2
reg.auxiliar <- lm(u2 ~ VENDAS + I(VENDAS^2)) #Com termos cruzados, cross-terms
summary(reg.auxiliar)
Call:
lm(formula = u2 ~ VENDAS + I(VENDAS^2))
Residuals:
Min 1Q Median 3Q Max
-14823352 -8256873 -830623 3687265 37800060
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -6.220e+06 6.460e+06 -0.963 0.3509
VENDAS 2.294e+02 1.262e+02 1.817 0.0892 .
I(VENDAS^2) -5.371e-04 4.495e-04 -1.195 0.2507
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 13200000 on 15 degrees of freedom
Multiple R-squared: 0.2896, Adjusted R-squared: 0.1949
F-statistic: 3.057 on 2 and 15 DF, p-value: 0.07698
Ru2 <- summary(reg.auxiliar)$r.squared
LM <- nrow(data) * Ru2
# obtendo o numero de regressores menos o intercepto
k <- length(coefficients(reg.auxiliar)) - 1
k
[1] 2
p.value <- 1 - pchisq(LM, k) # O TESTE TEM k TERMOS REGRESSORES EM reg.auxiliar
# c('LM','p.value')
c(LM, p.value)
[1] 5.21249182 0.07381112
Da mesma forma que anteriormente, conclui-se pela presença de resíduos heterocedásticos, para um p.value = 0.07381112
, portanto, menor que 10% de significância.
bptest
Aqui o mesmo teste é realizado pela função bptest
, especificando adequadamente os regressores. Observe que neste caso não aparece a regressão auxiliar (de teste). A conclusão é idêntica ao bloco anterior.
library(lmtest)
bptest(regressao1, ~VENDAS + I(VENDAS^2))
studentized Breusch-Pagan test
data: regressao1
BP = 5.2125, df = 2, p-value = 0.07381
A correção é aqui feita pelos erros robustos de White conforme a matriz de correção tipo HC1, como o padrão adotado pelo software Stata.
# regressao1<- lm(PD~VENDAS) library(car) possibilidades:
# hccm(regressao1,type=c('hc0','hc1','hc2','hc3','hc4'))
vcov.white0 <- hccm(regressao1, type = c("hc1"))
#
coeftest(regressao1, vcov.white0)
t test of coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 192.993110 533.931735 0.3615 0.722487
VENDAS 0.031900 0.010147 3.1438 0.006276 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(regressao1)
Call:
lm(formula = PD ~ VENDAS)
Residuals:
Min 1Q Median 3Q Max
-5845.9 -950.6 -402.4 346.3 7434.3
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.930e+02 9.910e+02 0.195 0.84804
VENDAS 3.190e-02 8.329e-03 3.830 0.00148 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2759 on 16 degrees of freedom
Multiple R-squared: 0.4783, Adjusted R-squared: 0.4457
F-statistic: 14.67 on 1 and 16 DF, p-value: 0.001476
GUJARATI, Damodar N.; PORTER, Dawn C. Econometria básica. 5.ed. Porto Alegre: AMGH/Bookman/McGraw-Hill do Brasil, 2011.
GUJARATI, Damodar N. Basic Econometrics. 4th edition. The McGraw−Hill Companies, 2004.