library(AER) # pacote com dados do livro
library(tidyverse) # manipulação e visualização de dados
library(fixest) # estimação por MQO, MQ2E (TSLS) e outros
library(modelsummary) # tabelas de comparação de modelos
library(gt) # tabelas com qualidade de publicação
library(gtExtras) # temas adicionais para gt
library(sandwich) # erros-padrão robustos
library(lmtest) # testes com erros-padrão robustos
library(car) # testes de hipóteses (linearHypothesis)Aula Prática - Variáveis Instrumentais
1 Introdução
Nesta aula prática, replicaremos os principais resultados do Capítulo 12 de Stock e Watson (2020), que trata de Regressão por Variáveis Instrumentais (VI). A aplicação empírica central explora a seguinte pergunta: qual é a elasticidade-preço da demanda por cigarros nos Estados Unidos?
Estimar essa elasticidade é uma questão de política pública relevante: se a elasticidade for alta, um aumento de impostos reduz substancialmente o consumo; se for baixa, o mesmo aumento arrecada mais receita, mas pouco altera o comportamento dos fumantes.
O desafio econométrico é que preço e quantidade são determinados simultaneamente pelo mercado — preço e quantidade são endógenos. Isso significa que uma simples regressão de MQO de \(\ln(Q)\) sobre \(\ln(P)\) não estima consistentemente a elasticidade da demanda. A solução é encontrar uma variável instrumental (VI): uma variável que afeta o preço sem afetar diretamente a demanda — ou seja, que desloca a curva de oferta sem afetar a curva de demanda.
2 Pacotes e Dados
Os pacotes utilizados nesta aula são:
A base de dados CigarettesSW está disponível no pacote AER. Ela contém dados anuais de 48 estados contíguos dos EUA para os anos de 1985 e 1995.1
1 Os dados são descritos no Apêndice 12.1 do livro. A base originalmente possui 96 observações (48 estados × 2 anos).
data("CigarettesSW", package = "AER")
glimpse(CigarettesSW)Rows: 96
Columns: 9
$ state <fct> AL, AR, AZ, CA, CO, CT, DE, FL, GA, IA, ID, IL, IN, KS, KY,…
$ year <fct> 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985,…
$ cpi <dbl> 1.076, 1.076, 1.076, 1.076, 1.076, 1.076, 1.076, 1.076, 1.0…
$ population <dbl> 3973000, 2327000, 3184000, 26444000, 3209000, 3201000, 6180…
$ packs <dbl> 116.4863, 128.5346, 104.5226, 100.3630, 112.9635, 109.2784,…
$ income <dbl> 46014968, 26210736, 43956936, 447102816, 49466672, 60063368…
$ tax <dbl> 32.50000, 37.00000, 31.00000, 26.00000, 31.00000, 42.00000,…
$ price <dbl> 102.18167, 101.47500, 108.57875, 107.83734, 94.26666, 128.0…
$ taxs <dbl> 33.34834, 37.00000, 36.17042, 32.10400, 31.00000, 51.48333,…
2.1 Dicionário de variáveis originais
| Variável | Descrição |
|---|---|
state |
Estado (sigla) |
year |
Ano (1985 ou 1995) |
cpi |
Índice de preços ao consumidor (CPI) |
population |
População do estado |
packs |
Pacotes de cigarros vendidos per capita |
income |
Renda pessoal total do estado (nominal) |
tax |
Impostos estaduais + federais por pacote (em centavos) |
price |
Preço médio por pacote, incluindo todos os impostos (em centavos) |
taxs |
Impostos totais + imposto geral sobre vendas (sales tax) por pacote |
3 Preparação dos Dados
Construímos as variáveis de interesse seguindo o Apêndice 12.1 do livro. O preço real é deflacionado pelo CPI; a renda é calculada em termos per capita e também deflacionada. Os instrumentos são construídos como a componente de imposto geral sobre vendas (SalesTax) e o imposto de excise total (CigTax), ambos em termos reais.
cigs <- CigarettesSW |>
mutate(
rprice = price / cpi, # preço real por pacote
rincome = income / (population * cpi), # renda real per capita
salestax = (taxs - tax) / cpi, # imposto geral s/ vendas (real)
cigtax = tax / cpi # imposto de excise total (real)
)Como o objetivo é estimar a elasticidade de longo prazo da demanda, o livro utiliza diferenças de 10 anos (1995 − 1985) para cada estado. Essa abordagem elimina fatores fixos no tempo que variam entre estados (como tradições culturais de fumo), controlando para potenciais variáveis omitidas.2
2 Essa estratégia é análoga à regressão em diferenças com \(T=2\) períodos discutida no Capítulo 10. A diferença de 10 anos captura o efeito de longo prazo porque cigarros são aditivos: no curto prazo, consumidores respondem pouco a variações de preço, mas no longo prazo a resposta é maior.
# Reformatar para wide e calcular diferenças
cigs_diff <- cigs |>
select(state, year, packs, rprice, rincome, salestax, cigtax) |>
group_by(state) |>
#
# pivot_wider(
# names_from = year,
# values_from = c(packs, rprice, rincome, salestax, cigtax)
# ) |>
mutate(
# Variáveis em log-diferença (variações percentuais aprox.)
d_ln_packs = log(packs) - lag(log(packs)),
d_ln_rprice = log(rprice) - lag(log(rprice)),
d_ln_rincome = log(rincome) - lag(log(rincome)),
# Instrumentos: diferença nos impostos (em nível real)
d_salestax = salestax - lag(salestax),
d_cigtax = cigtax - lag(cigtax)
)
glimpse(cigs_diff)Rows: 96
Columns: 12
Groups: state [48]
$ state <fct> AL, AR, AZ, CA, CO, CT, DE, FL, GA, IA, ID, IL, IN, KS, K…
$ year <fct> 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 198…
$ packs <dbl> 116.4863, 128.5346, 104.5226, 100.3630, 112.9635, 109.278…
$ rprice <dbl> 94.96438, 94.30762, 100.90962, 100.22058, 87.60842, 118.9…
$ rincome <dbl> 10.763866, 10.468165, 12.830456, 15.713321, 14.326190, 17…
$ salestax <dbl> 0.7884121, 0.0000000, 4.8052211, 5.6728627, 0.0000000, 8.…
$ cigtax <dbl> 30.20447, 34.38662, 28.81041, 24.16357, 28.81041, 39.0334…
$ d_ln_packs <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ d_ln_rprice <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ d_ln_rincome <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ d_salestax <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ d_cigtax <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
4 Análise Exploratória
4.1 O problema da causalidade simultânea
A Figura 1 mostra o diagrama de dispersão entre \(\Delta \ln(P^{cigarros})\) e \(\Delta \ln(Q^{cigarros})\) para os 48 estados. Intuitivamente, esperaríamos uma relação negativa: estados com maiores aumentos de preço deveriam ter maiores quedas no consumo. A linha de MQO mostra justamente isso — mas o estimador de MQO não é consistente aqui.
cigs_diff |>
ggplot(aes(x = d_ln_rprice, y = d_ln_packs)) +
geom_point(color = "#1565C0", alpha = 0.7, size = 2) +
geom_smooth(method = "lm", se = TRUE, color = "#C62828", linewidth = 0.9) +
labs(
x = "Δ ln(preço real)",
y = "Δ ln(consumo per capita)",
title = "Variação no Preço Real e no Consumo de Cigarros",
subtitle = "Diferenças de 10 anos (1995 − 1985) — 48 estados dos EUA"
) +
theme_minimal(base_size = 13)
Por que MQO não funciona aqui? Quando a demanda por cigarros aumenta (por exemplo, em estados onde fumar é mais aceito culturalmente), os produtores respondem com preços mais altos. Isso significa que o preço \(P_i\) é correlacionado com o erro \(u_i\) da equação de demanda — viola a hipótese de exogeneidade do MQO. O estimador de MQO captura uma mistura das elasticidades de demanda e oferta, não apenas a elasticidade da demanda.
4.2 Relação dos instrumentos com o preço
A Figura 2 mostra a correlação entre os dois instrumentos e a variação no preço real. Um instrumento válido precisa ser relevante (correlacionado com o preço) e exógeno (não correlacionado com o erro da demanda).
p1 <- cigs_diff |>
ggplot(aes(x = d_salestax, y = d_ln_rprice)) +
geom_point(color = "#1B5E20", alpha = 0.7, size = 2) +
geom_smooth(method = "lm", se = FALSE, color = "#C62828", linewidth = 0.9) +
labs(
x = "Δ imposto s/ vendas (SalesTax, real)",
y = "Δ ln(preço real)",
title = "Instrumento 1: SalesTax"
) +
theme_minimal(base_size = 12)
p2 <- cigs_diff |>
ggplot(aes(x = d_cigtax, y = d_ln_rprice)) +
geom_point(color = "#1B5E20", alpha = 0.7, size = 2) +
geom_smooth(method = "lm", se = FALSE, color = "#C62828", linewidth = 0.9) +
labs(
x = "Δ imposto de excise (CigTax, real)",
y = "Δ ln(preço real)",
title = "Instrumento 2: CigTax"
) +
theme_minimal(base_size = 12)
library(patchwork)
p1 + p2
Ambos os instrumentos mostram correlação positiva com o preço — estados com maiores aumentos de impostos tiveram maiores aumentos de preço. Isso é consistente com a condição de relevância do instrumento.
5 Variáveis Instrumentais e MQ2E
5.1 Conceito
Quando o regressor \(X_i\) é correlacionado com o erro \(u_i\), uma variável instrumental \(Z_i\) permite isolar a parte de \(X_i\) que é exógena. Um instrumento válido deve satisfazer duas condições:
- Relevância: \(\text{corr}(Z_i, X_i) \neq 0\) — o instrumento deve ser correlacionado com o regressor endógeno.
- Exogeneidade: \(\text{corr}(Z_i, u_i) = 0\) — o instrumento não deve ser correlacionado com o erro da equação de interesse.
No nosso caso, os impostos sobre cigarros afetam o preço (relevância), e variam principalmente por razões políticas e fiscais alheias à demanda por cigarros (exogeneidade — ao menos como hipótese de trabalho).
5.2 Estimador de Mínimos Quadrados em Dois Estágios (MQ2E / TSLS)
O MQ2E (ou TSLS, do inglês Two-Stage Least Squares) é o estimador mais comum de VI e funciona em dois passos:
Primeiro estágio: Regride o regressor endógeno \(X_i\) sobre o(s) instrumento(s) e as variáveis exógenas incluídas: \[X_i = \pi_0 + \pi_1 Z_i + \pi_2 W_i + v_i\]
Segundo estágio: Substitui \(X_i\) pelo seu valor ajustado \(\hat{X}_i\) do primeiro estágio e regride \(Y_i\) sobre \(\hat{X}_i\) e \(W_i\): \[Y_i = \beta_0 + \beta_1 \hat{X}_i + \beta_2 W_i + u_i\]
O valor ajustado \(\hat{X}_i\) contém apenas a parte de \(X_i\) explicada pelo instrumento — que, se o instrumento for exógeno, é a parte não correlacionada com \(u_i\). O estimador resultante é consistente.
Em termos formais, com um único regressor e instrumento, o estimador TSLS tem a forma: \[\hat{\beta}_1^{TSLS} = \frac{s_{ZY}}{s_{ZX}} \xrightarrow{p} \frac{\text{cov}(Z_i, Y_i)}{\text{cov}(Z_i, X_i)} = \beta_1\]
Na prática, utilizamos o pacote fixest com a função feols(). A sintaxe para VI é:
feols(Y ~ W | X ~ Z, data = dados, vcov = "hetero")onde W são os controles exógenos, X é o regressor endógeno e Z é o instrumento.
6 Estimação em Corte Transversal (1995)
Antes de usar o painel de diferenças, examinamos o corte transversal de 1995. Isso reproduz os resultados da Seção 12.1 e permite comparar MQO com MQ2E.
cigs95 <- cigs |>
filter(year == "1995") |>
mutate(
ln_packs = log(packs),
ln_rprice = log(rprice),
ln_rincome = log(rincome)
)6.1 Primeiro estágio (1995)
O primeiro estágio regride o log do preço real sobre o imposto de vendas (salestax). Isso verifica se o instrumento é de fato correlacionado com o preço.
primeiro_estagio_95 <- lm(ln_rprice ~ salestax, data = cigs95)
coeftest(primeiro_estagio_95, vcov = vcovHC(primeiro_estagio_95, "HC1"))
t test of coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.6165463 0.0289177 159.6444 < 2.2e-16 ***
salestax 0.0307289 0.0048354 6.3549 8.489e-08 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
O coeficiente de salestax é positivo e altamente significativo (0,031, EP = 0,005), e o \(R^2\) do primeiro estágio é de 47.1%. Isso reproduz a Equação (12.9) do livro: estados com alíquota de imposto sobre vendas maior cobram preços mais altos por maços de cigarros.
6.2 MQO vs. MQ2E (1995)
Comparamos o estimador de MQO (inconsistente) com o MQ2E (consistente):
ols_95 <- feols(ln_packs ~ ln_rprice, data = cigs95, vcov = "hetero")
iv_95_sem_renda <- feols(ln_packs ~ 1 | ln_rprice ~ salestax,
data = cigs95, vcov = "hetero")
iv_95_com_renda <- feols(ln_packs ~ ln_rincome | ln_rprice ~ salestax,
data = cigs95, vcov = "hetero")modelsummary(
list(
"MQO" = ols_95,
"MQ2E (s/ renda)" = iv_95_sem_renda,
"MQ2E (c/ renda)" = iv_95_com_renda
),
fmt = 3,
stars = c("*" = 0.05, "**" = 0.01),
coef_map = c(
"ln_rprice" = "ln(preço real)",
"fit_ln_rprice" = "ln(preço real)",
"ln_rincome" = "ln(renda real p.c.)",
"(Intercept)" = "Constante"
),
gof_map = list(list(raw = "nobs", clean = "Observações", fmt = 0)),
notes = "Erros-padrão robustos (HC). * p < 0,05; ** p < 0,01. Instrumento: SalesTax.",
output = "gt"
) |>
tab_header(
title = md("**Elasticidade da Demanda por Cigarros — Corte Transversal 1995**"),
subtitle = md("Variável dependente: ln(pacotes vendidos *per capita*)")
) |>
tab_style(
style = cell_text(weight = "bold"),
locations = cells_column_labels()
) |>
opt_stylize(style = 6, color = "gray") |>
tab_options(table.font.size = px(13))| Elasticidade da Demanda por Cigarros — Corte Transversal 1995 | |||
|---|---|---|---|
| Variável dependente: ln(pacotes vendidos per capita) | |||
| MQO | MQ2E (s/ renda) | MQ2E (c/ renda) | |
| ln(preço real) | -1.213** | -1.084** | -1.143** |
| (0.195) | (0.319) | (0.372) | |
| ln(renda real p.c.) | 0.215 | ||
| (0.312) | |||
| Constante | 10.339** | 9.720** | 9.431** |
| (0.935) | (1.528) | (1.259) | |
| Observações | 48 | 48 | 48 |
| * p < 0.05, ** p < 0.01 | |||
| Erros-padrão robustos (HC). * p < 0,05; ** p < 0,01. Instrumento: SalesTax. | |||
Leitura dos resultados: O estimador de MQO produz elasticidade de −1,21, enquanto o MQ2E com instrumento SalesTax (sem controle de renda) fornece −1,08. Com a inclusão da renda, o MQ2E retorna −1,14 (Equação 12.15 do livro). Embora as estimativas sejam próximas aqui, o MQO é inconsistente: o Teste de Wu-Hausman não rejeita endogeneidade neste corte transversal, mas a teoria econômica sustenta que causalidade simultânea está presente.
7 Estimação com Dados em Painel — Diferenças de 10 Anos
7.1 Estratégia de identificação
O painel de diferenças elimina fatores fixos entre estados. Os instrumentos são as variações de 10 anos nos impostos:
- \(\Delta SalesTax_i = SalesTax_{i,1995} - SalesTax_{i,1985}\): variação no imposto geral sobre vendas
- \(\Delta CigTax_i = CigTax_{i,1995} - CigTax_{i,1985}\): variação no imposto de excise total sobre cigarros
Esses impostos variam entre estados principalmente por decisões de política fiscal não relacionadas à demanda por cigarros, tornando-os candidatos plausíveis a instrumentos exógenos.
7.2 Primeiro estágio e diagnóstico de instrumento fraco
Antes do MQ2E, estimamos o primeiro estágio manualmente para obter o F-estatístico do primeiro estágio, que é o teste padrão para instrumentos fracos (Key Concept 12.5 do livro).
Regra prática: Um F-estatístico do primeiro estágio abaixo de 10 indica instrumento fraco. Com instrumentos fracos, o MQ2E é viesado em amostras finitas e os intervalos de confiança são não confiáveis.
fs_sales <- lm(d_ln_rprice ~ d_salestax + d_ln_rincome, data = cigs_diff)
fs_cig <- lm(d_ln_rprice ~ d_cigtax + d_ln_rincome, data = cigs_diff)
fs_ambos <- lm(d_ln_rprice ~ d_salestax + d_cigtax + d_ln_rincome, data = cigs_diff)
# F-estatístico robusto (HC1) — procedimento do livro
f_sales <- linearHypothesis(fs_sales, "d_salestax = 0",
vcov = vcovHC(fs_sales, "HC1"))[2, "F"]
f_cig <- linearHypothesis(fs_cig, "d_cigtax = 0",
vcov = vcovHC(fs_cig, "HC1"))[2, "F"]
f_ambos <- linearHypothesis(fs_ambos, c("d_salestax = 0", "d_cigtax = 0"),
vcov = vcovHC(fs_ambos, "HC1"))[2, "F"]
modelsummary(
list(
"Instrumento: SalesTax" = fs_sales,
"Instrumento: CigTax" = fs_cig,
"Ambos os instrumentos" = fs_ambos
),
fmt = 3,
vcov = ~ state,
stars = c("*" = 0.05, "**" = 0.01),
coef_map = c(
"d_salestax" = "Δ SalesTax",
"d_cigtax" = "Δ CigTax",
"d_ln_rincome" = "Δ ln(renda real p.c.)",
"(Intercept)" = "Constante"
),
add_rows = tribble(
~term, ~`Instrumento: SalesTax`, ~`Instrumento: CigTax`, ~`Ambos os instrumentos`,
"F-estat. 1º estágio (HC1)", as.character(round(f_sales, 1)),
as.character(round(f_cig, 1)),
as.character(round(f_ambos, 1))
),
gof_map = list(list(raw = "nobs", clean = "Observações", fmt = 0)),
notes = "Variável dependente: Δ ln(preço real). Erros-padrão robustos (HC1). * p < 0,05; ** p < 0,01.",
output = "gt"
) |>
tab_header(
title = md("**Primeiro Estágio — MQ2E**"),
subtitle = md("Diferenças de 10 anos (1995 − 1985) — 48 estados")
) |>
# tab_style(
# style = cell_text(weight = "bold"),
# locations = cells_column_labels()
# ) |>
# tab_style(
# style = cell_fill(color = "#EBF5FB"),
# locations = cells_body(rows = term == "F-estat. 1º estágio (HC1)")
# ) |>
opt_stylize(style = 6, color = "gray") |>
tab_options(table.font.size = px(13))| Primeiro Estágio — MQ2E | |||
|---|---|---|---|
| Diferenças de 10 anos (1995 − 1985) — 48 estados | |||
| Instrumento: SalesTax | Instrumento: CigTax | Ambos os instrumentos | |
| Δ SalesTax | 0.025** | 0.013** | |
| (0.004) | (0.003) | ||
| Δ CigTax | 0.010** | 0.008** | |
| (0.001) | (0.001) | ||
| Δ ln(renda real p.c.) | -0.224 | 0.029 | -0.029 |
| (0.219) | (0.131) | (0.124) | |
| Constante | 0.184** | 0.155** | 0.144** |
| (0.030) | (0.020) | (0.018) | |
| Observações | 48 | 48 | 48 |
| F-estat. 1º estágio (HC1) | 33.7 | 107.2 | 88.6 |
| * p < 0.05, ** p < 0.01 | |||
| Variável dependente: Δ ln(preço real). Erros-padrão robustos (HC1). * p < 0,05; ** p < 0,01. | |||
Os três F-estatísticos (33,7; 107,2; 88,6) estão bem acima de 10, confirmando que os instrumentos não são fracos. O imposto de excise (CigTax) é o instrumento individualmente mais forte — faz sentido, pois é um imposto diretamente sobre cigarros e varia mais entre estados.
8 Replicando a Tabela 12.1
Estimamos três especificações por MQ2E, correspondendo às três colunas da Tabela 12.1 do livro. O modelo de interesse é:
\[\Delta \ln(Q_i^{cig}) = \beta_0 + \beta_1 \Delta \ln(P_i^{cig}) + \beta_2 \Delta \ln(Inc_i) + u_i\]
onde \(\Delta \ln(P_i^{cig})\) é endógeno e instrumentado pelos impostos.
# Coluna (1): SalesTax como instrumento
MQ2E_1 <- feols(d_ln_packs ~ d_ln_rincome | d_ln_rprice ~ d_salestax,
data = cigs_diff, vcov = "hetero")
# Coluna (2): CigTax como instrumento
MQ2E_2 <- feols(d_ln_packs ~ d_ln_rincome | d_ln_rprice ~ d_cigtax,
data = cigs_diff, vcov = "hetero")
# Coluna (3): Ambos os instrumentos (sobreidentificado)
MQ2E_3 <- feols(d_ln_packs ~ d_ln_rincome | d_ln_rprice ~ d_salestax + d_cigtax,
data = cigs_diff, vcov = "hetero")# Estatísticas adicionais para a tabela
j_stat <- round(fitstat(MQ2E_3, "sargan")[[1]][[1]], 2)
j_pval <- round(fitstat(MQ2E_3, "sargan")[[1]][[3]], 3)
modelsummary(
list(
"(1) SalesTax" = MQ2E_1,
"(2) CigTax" = MQ2E_2,
"(3) Ambos" = MQ2E_3
),
fmt = 2,
stars = c("*" = 0.05, "**" = 0.01),
coef_map = c(
"fit_d_ln_rprice" = "Δ ln(preço real)",
"d_ln_rincome" = "Δ ln(renda real p.c.)",
"(Intercept)" = "Constante"
),
add_rows = tribble(
~term, ~`(1) SalesTax`, ~`(2) CigTax`, ~`(3) Ambos`,
"Instrumento(s)", "SalesTax", "CigTax", "SalesTax + CigTax",
"F-estat. 1º estágio (HC1)", "33,7", "107,2", "88,6",
"Teste J (p-valor)", "—", "—", paste0(j_stat, " (", j_pval, ")")
),
gof_map = list(list(raw = "nobs", clean = "Observações", fmt = 0)),
notes = "Erros-padrão robustos (HC) entre parênteses. * p < 0,05; ** p < 0,01. Variável dependente: Δ ln(pacotes vendidos per capita). Diferenças de 10 anos (1995 − 1985), 48 estados.",
output = "gt"
) |>
tab_header(
title = md("**Tabela 12.1 — Estimativas MQ2E da Demanda por Cigarros**"),
subtitle = md("Variável dependente: Δ ln(*Q*) = Δ ln(pacotes vendidos *per capita*)")
) |>
# tab_style(
# style = cell_text(weight = "bold"),
# locations = cells_column_labels()
# ) |>
# tab_style(
# style = cell_fill(color = "#EBF5FB"),
# locations = cells_body(rows = term == "Δ ln(preço real)")
# ) |>
opt_stylize(style = 6, color = "gray") |>
tab_options(table.font.size = px(13))| Tabela 12.1 — Estimativas MQ2E da Demanda por Cigarros | |||
|---|---|---|---|
| Variável dependente: Δ ln(Q) = Δ ln(pacotes vendidos per capita) | |||
| (1) SalesTax | (2) CigTax | (3) Ambos | |
| Δ ln(preço real) | -0.94** | -1.34** | -1.20** |
| (0.21) | (0.23) | (0.20) | |
| Δ ln(renda real p.c.) | 0.53 | 0.43 | 0.46 |
| (0.34) | (0.30) | (0.31) | |
| Constante | -0.12 | -0.02 | -0.05 |
| (0.07) | (0.07) | (0.06) | |
| Observações | 48 | 48 | 48 |
| Instrumento(s) | SalesTax | CigTax | SalesTax + CigTax |
| F-estat. 1º estágio (HC1) | 33,7 | 107,2 | 88,6 |
| Teste J (p-valor) | — | — | 4.84 (1) |
| * p < 0.05, ** p < 0.01 | |||
| Erros-padrão robustos (HC) entre parênteses. * p < 0,05; ** p < 0,01. Variável dependente: Δ ln(pacotes vendidos per capita). Diferenças de 10 anos (1995 − 1985), 48 estados. | |||
8.1 Interpretação dos coeficientes
Elasticidade-preço da demanda: O coeficiente de \(\Delta \ln(P)\) é a elasticidade de longo prazo da demanda por cigarros.
- Coluna (1), instrumento SalesTax: elasticidade = −0,94
- Coluna (2), instrumento CigTax: elasticidade = −1,34
- Coluna (3), ambos os instrumentos: elasticidade = −1,20
Em todos os casos, a demanda por cigarros é elástica no longo prazo (\(|\beta_1| > 1\)): um aumento de preço de 1% reduz o consumo em mais de 1%. Isso pode surpreender dado o caráter aditivo do produto, mas lembre-se que estamos medindo a resposta de longo prazo — dez anos são tempo suficiente para mudanças de comportamento.
Elasticidade-renda: O coeficiente da renda é positivo em todas as especificações (cigarros são um bem normal), mas não é estatisticamente significativo ao nível de 5%.
9 Verificação da Validade dos Instrumentos
9.1 Condição 1 — Relevância
A relevância é verificada pelo F-estatístico do primeiro estágio (Key Concept 12.5):
| Instrumento | F-estat. 1º estágio | Conclusão |
|---|---|---|
| SalesTax | 33,7 | Não fraco (F > 10) ✓ |
| CigTax | 107,2 | Não fraco (F > 10) ✓ |
| Ambos | 88,6 | Não fraco (F > 10) ✓ |
9.2 Condição 2 — Exogeneidade e Teste J
A exogeneidade não pode ser testada diretamente quando o modelo é exatamente identificado (colunas 1 e 2). Quando há mais instrumentos do que variáveis endógenas (sobreidentificação), como na coluna (3), podemos aplicar o Teste J de restrições sobreidentificadoras (Key Concept 12.6).
Ideia do teste: Se ambos os instrumentos são exógenos, as estimativas de MQ2E usando cada instrumento individualmente devem ser próximas. Se forem muito diferentes, pelo menos um instrumento viola a exogeneidade.
# Estatistica J automaticamente via fitstat()
fitstat(MQ2E_3, "sargan")Sargan: stat = 4.8380, p = 0.027838, on 1 DoF.
O Teste J retorna estatística de 4.84 com p-valor de 1, rejeitando a hipótese nula de que ambos os instrumentos são exógenos ao nível de 5% (valor crítico \(\chi^2_1 = 3,84\)).
Isso levanta uma bandeira: as estimativas usando SalesTax (−0,94) e CigTax (−1,34) divergem bastante. O livro argumenta que o caso para a exogeneidade do SalesTax é mais forte — o imposto geral sobre vendas é determinado por considerações fiscais gerais do estado, não pela dinâmica específica do mercado de cigarros. Já o CigTax pode ser influenciado por lobbies da indústria tabagista. Portanto, a estimativa preferida do livro é a da coluna (1): elasticidade de longo prazo ≈ −0,94.
9.3 Visualização: MQO vs. MQ2E
A Figura 3 compara visualmente as estimativas de MQO e das três especificações de MQ2E.
ols_diff <- feols(d_ln_packs ~ d_ln_rprice + d_ln_rincome,
data = cigs_diff, vcov = "hetero")
modelos_lista <- list(
"MQO" = ols_diff,
"MQ2E: SalesTax" = MQ2E_1,
"MQ2E: CigTax" = MQ2E_2,
"MQ2E: Ambos" = MQ2E_3
)
modelplot(
modelos_lista,
coef_map = c(
"d_ln_rprice" = "Δ ln(preço real) — MQO",
"fit_d_ln_rprice" = "Δ ln(preço real) — MQ2E"
),
color = c("#C62828", "#1565C0", "#2E7D32", "#6A1B9A")
) +
geom_vline(xintercept = 0, linetype = "dashed", color = "gray50") +
labs(
x = "Elasticidade estimada (IC 95%)",
y = NULL,
title = "Estimativas da Elasticidade-Preço da Demanda por Cigarros"
) +
theme_minimal(base_size = 12) +
theme(legend.position = "bottom")
O gráfico ilustra dois padrões importantes: (i) as estimativas de MQ2E são mais negativas do que a de MQO, sugerindo que o MQO subestima (em valor absoluto) a elasticidade; e (ii) os intervalos de confiança do MQ2E são mais largos, refletindo a perda de precisão ao usar apenas a variação exógena nos preços — um custo inevitável da identificação por VI.
10 Atividade
Leia as Seções 12.1 a 12.5 do livro e responda às perguntas abaixo:
Causalidade simultânea: Explique com suas palavras por que o estimador de MQO da elasticidade da demanda por cigarros é inconsistente. Qual é o sentido esperado do viés? (Dica: pense no que acontece com o preço quando a demanda por cigarros sobe inesperadamente em um estado.)
Condições do instrumento: O imposto geral sobre vendas (SalesTax) é um instrumento plausível para o preço dos cigarros?
- Argumente em favor da relevância: por que o imposto sobre vendas deveria afetar o preço dos cigarros?
- Argumente em favor da exogeneidade: por que o imposto sobre vendas seria não correlacionado com outros fatores que determinam a demanda por cigarros?
- Você consegue pensar em algum cenário em que a exogeneidade seria violada?
Interpretação econômica: Com base na coluna (1) da Tabela 12.1, a elasticidade estimada é −0,94. Para reduzir o consumo de cigarros em 20%, quanto o preço precisaria subir? E se a elasticidade fosse −0,5 (mais inelástica)?
Teste J e o dilema dos instrumentos: O Teste J da coluna (3) rejeita a hipótese de que ambos os instrumentos são exógenos (p-valor ≈ 0,026). O livro conclui que SalesTax é o instrumento mais credível e descarta CigTax. Você concorda com esse argumento? Que evidência adicional ajudaria a discriminar qual instrumento é problemático?
Extensão — elasticidade de curto prazo: O livro menciona (p. 454) que a elasticidade estimada com variações de 5 anos (1985–1990) usando SalesTax é −0,79, e com variações de 5 anos (1990–1995) é −0,68. Sem fazer o exercício no R, o que esses resultados sugerem sobre a diferença entre elasticidade de curto e longo prazo da demanda por cigarros?