library(systemfit)
library(ggplot2)
library(broom)Modelos de Equações simultâneas
Modelos de equações simultâneas são ferramentas estatísticas usadas para entender e analisar sistemas onde várias variáveis dependentes são inter-relacionadas, ou seja, onde uma variável pode ser simultaneamente causa e efeito de outras variáveis dentro do mesmo sistema. Esse documento aborda esses modelos.
1 Modelos de Equações Simultâneas
Modelos de equações simultâneas são usados para modelar sistemas onde as variáveis dependentes são inter-relacionadas e influenciam umas às outras simultaneamente. Estes modelos são comuns em econometria, onde variáveis econômicas, como demanda e oferta, são determinadas conjuntamente.
1.1 Características Principais dos Modelos de Equações Simultâneas
Endogeneidade: Uma característica fundamental desses modelos é a presença de endogeneidade, onde uma ou mais variáveis explicativas são correlacionadas com o termo de erro do modelo, o que viola uma das principais suposições dos modelos de regressão linear simples. Isso ocorre porque algumas variáveis podem ser determinadas simultaneamente dentro do sistema.
Equações Interdependentes: Em vez de ter uma única equação que descreve uma relação de causa e efeito (como em uma regressão simples), um modelo de equações simultâneas tem várias equações que descrevem várias relações ao mesmo tempo. Por exemplo, em um modelo econômico, o preço e a quantidade de um bem podem ser determinados simultaneamente por equações que representam oferta e demanda.
Identificação do Modelo: Para que um modelo de equações simultâneas seja estimável, é crucial que as equações sejam identificadas. Isso significa que as equações devem conter um número suficiente de variáveis pré-determinadas (variáveis determinadas fora do sistema) para permitir a separação das diferentes relações. Há dois tipos de identificação:
Exatamente Identificado: Quando o número de variáveis pré-determinadas é exatamente o necessário para identificar a equação.
Superidentificado: Quando há mais variáveis pré-determinadas do que o necessário, o que fornece mais informação para a estimativa.
Métodos de Estimação: Como os métodos tradicionais de regressão linear (como Mínimos Quadrados Ordinários - MQO) não são adequados para modelos com endogeneidade, técnicas especializadas são usadas para estimar modelos de equações simultâneas, como:
Mínimos Quadrados em Dois Estágios (MQ2E): É o método mais comum para lidar com a endogeneidade. Ele funciona da seguinte forma:
Primeiro Estágio: As variáveis endógenas são regredidas sobre todas as variáveis exógenas do sistema (tanto da equação em questão quanto das outras equações), gerando previsões dessas variáveis endógenas.
Segundo Estágio: As previsões obtidas no primeiro estágio são usadas como variáveis explicativas no lugar das variáveis endógenas originais para estimar os parâmetros da equação de interesse.
Mínimos Quadrados de Três Estágios (MQ3E): Uma extensão do MQ2E que leva em conta as correlações entre as equações do sistema, oferecendo estimativas mais eficientes.
Método da Máxima Verossimilhança: Este método estima todos os parâmetros do sistema simultaneamente, maximizando a verossimilhança conjunta das equações.
Métodos de Variáveis Instrumentais (IV): Onde uma variável instrumental (que é correlacionada com a variável endógena mas não com o erro) é usada para substituir a variável endógena na regressão, eliminando a endogeneidade.
1.2 Exemplo Prático
Considere um modelo econômico simples com duas equações:
\(Q_d=α_1P+α_2Y+u_1\) (Demanda: onde Q_d é a quantidade demandada, P é o preço, Y é a renda, e u_1 é o termo de erro)
\(Q_s=β_1P+β_2W+u_2\) (Oferta: onde Q_s é a quantidade ofertada, W é o salário, e u_2 é o termo de erro)
Aqui, P (preço) e Q (quantidade) são endógenos, pois o preço influencia a quantidade e vice-versa. As variáveis Y (renda) e W (salário) são pré-determinadas.
Para estimar corretamente os parâmetros α1, α2, β1, e β2, métodos como o MQ2E seriam utilizados para lidar com a endogeneidade entre P e Q.
1.3 Aplicações
Modelos de equações simultâneas são usados em várias áreas:
Economia: Para modelar sistemas como oferta e demanda, investimento e consumo, ou crescimento econômico.
Finanças: Para analisar a relação entre preços de ativos e suas variáveis subjacentes.
Ciências Sociais: Para estudar fenômenos onde as causas e efeitos são mutuamente dependentes.
1.4 Preparação do Ambiente no R
Vamos começar instalando e carregando os pacotes necessários:
2 Exemplo do Kmenta
O exemplo de Kmenta é um exemplo clássico usado para ilustrar esses modelos. Ele modela a demanda e a oferta de um bem em um mercado, onde a quantidade demandada e a quantidade ofertada dependem do preço, e o preço é determinado pela interação entre oferta e demanda.
O exemplo pode ser representado pelas seguintes equações simultâneas:
Equação de demanda:
\(Q_d = α_1 + β_1P + γ_1Y + u_d\)
onde:
\(Q_d\) é a quantidade demandada.
\(P\) é o preço.
\(Y\) é a renda.
\(u_d\) é o termo de erro.
Equação de oferta:
\(Q_s = α_2 + β_2P + γ_2W + u_s\)
onde:
\(Q_s\) é a quantidade ofertada.
\(W\) é o custo de produção.
\(u_s\) é o termo de erro.
2.1 Estimação no R
Para estimar um modelo de equações simultâneas no R, você pode usar o pacote systemfit. Este pacote permite estimar equações simultâneas usando diferentes métodos, como Mínimos Quadrados em Dois Estágios (2SLS) ou Mínimos Quadrados em Três Estágios (3SLS).
2.1.1 Carregar os dados do exemplo de Kmenta
O conjunto de dados Kmenta já está disponível no pacote systemfit. Vamos carregar esses dados.
# Dados simulados do exemplo de Kmenta
data("Kmenta")
# Ver os primeiros dados
head(Kmenta) consump price income farmPrice trend
1 98.485 100.323 87.4 98.0 1
2 99.187 104.264 97.6 99.1 2
3 102.163 103.435 96.7 99.1 3
4 101.504 104.506 98.2 98.1 4
5 104.240 98.001 99.8 110.8 5
6 103.243 99.456 100.5 108.2 6
Os dados de Kmenta contêm as seguintes variáveis:
consump: Consumo (quantidade demandada/ofertada)price: Preçoincome: RendafarmPrice: Preço agrícola (proxy para o custo de produção)
2.1.2 Definir as equações do modelo
Vamos definir as equações de demanda e oferta.
# Definição das equações
demanda_eq <- consump ~ price + income
oferta_eq <- consump ~ price + farmPrice + trend2.1.3 Mínimos Quadrados Ordinários (MQO)
O uso de Mínimos Quadrados Ordinários (MQO) em modelos de equações simultâneas é problemático e geralmente inadequado devido à presença de endogeneidade. A endogeneidade ocorre quando uma ou mais variáveis explicativas estão correlacionadas com o termo de erro da equação, o que viola uma das suposições fundamentais do MQO e leva a estimativas enviesadas e inconsistentes.
# Estimação por MQO
q_demanda_MQO <- lm(demanda_eq, data = Kmenta)
q_demanda_MQO
Call:
lm(formula = demanda_eq, data = Kmenta)
Coefficients:
(Intercept) price income
99.8954 -0.3163 0.3346
q_oferta_MQO <- lm(oferta_eq, data = Kmenta)
q_oferta_MQO
Call:
lm(formula = oferta_eq, data = Kmenta)
Coefficients:
(Intercept) price farmPrice trend
58.2754 0.1604 0.2481 0.2483
2.1.4 Mínimos Quadrados em Dois Estágios (MQ2E)
Fazendo MQ2E manualmente, tem-se:
2.1.4.1 Primeiro estágio: Estimação da Forma Reduzida
Podemos estimar os parâmetros da forma reduzida da seguinte forma:
q_hat <- lm(consump ~ income + farmPrice + trend, data = Kmenta)
p_hat <- lm(price ~ income + farmPrice + trend, data = Kmenta)
summary(q_hat)
Call:
lm(formula = consump ~ income + farmPrice + trend, data = Kmenta)
Residuals:
Min 1Q Median 3Q Max
-4.2653 -1.4200 0.3986 1.2724 2.8857
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 71.20355 4.62636 15.391 5.19e-11 ***
income 0.15922 0.05808 2.741 0.0145 *
farmPrice 0.13834 0.05331 2.595 0.0195 *
trend 0.07598 0.10554 0.720 0.4820
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.154 on 16 degrees of freedom
Multiple R-squared: 0.7232, Adjusted R-squared: 0.6713
F-statistic: 13.93 on 3 and 16 DF, p-value: 9.993e-05
summary(p_hat)
Call:
lm(formula = price ~ income + farmPrice + trend, data = Kmenta)
Residuals:
Min 1Q Median 3Q Max
-2.5022 -0.9058 -0.2433 0.7077 2.9569
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 90.26776 3.29931 27.360 7.29e-15 ***
income 0.66321 0.04142 16.011 2.86e-11 ***
farmPrice -0.48845 0.03802 -12.847 7.61e-10 ***
trend -0.73704 0.07527 -9.792 3.67e-08 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.536 on 16 degrees of freedom
Multiple R-squared: 0.9434, Adjusted R-squared: 0.9328
F-statistic: 88.94 on 3 and 16 DF, p-value: 3.412e-10
2.1.4.2 Segundo Estágio: Estimação da oferta e demanda
Incluímos o \(\hat{P}\) em nossas equações estruturais, então vamos ver quais são as nossas funções estimadas de oferta e demanda
Kmenta$p_hat <- p_hat$fitted.values
q_demanda_mq2e_m <- lm(consump ~ p_hat + income, data = Kmenta)
q_oferta_mq2e_m <- lm(consump ~ p_hat + farmPrice + trend, data = Kmenta)
summary(q_demanda_mq2e_m)
Call:
lm(formula = consump ~ p_hat + income, data = Kmenta)
Residuals:
Min 1Q Median 3Q Max
-3.8102 -1.6245 0.0392 1.6953 2.8552
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 94.63330 8.95550 10.567 6.86e-09 ***
p_hat -0.24356 0.10909 -2.233 0.0393 *
income 0.31399 0.05308 5.916 1.69e-05 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.223 on 17 degrees of freedom
Multiple R-squared: 0.6866, Adjusted R-squared: 0.6497
F-statistic: 18.62 on 2 and 17 DF, p-value: 5.208e-05
summary(q_oferta_mq2e_m)
Call:
lm(formula = consump ~ p_hat + farmPrice + trend, data = Kmenta)
Residuals:
Min 1Q Median 3Q Max
-4.2653 -1.4200 0.3986 1.2724 2.8857
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 49.53244 10.52580 4.706 0.000238 ***
p_hat 0.24008 0.08758 2.741 0.014493 *
farmPrice 0.25561 0.04141 6.173 1.34e-05 ***
trend 0.25292 0.08734 2.896 0.010528 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.154 on 16 degrees of freedom
Multiple R-squared: 0.7232, Adjusted R-squared: 0.6713
F-statistic: 13.93 on 3 and 16 DF, p-value: 9.993e-05
2.1.5 Usando pacote systemfit
Agora fazendo MQ2E e MQ3E usando o pacote systemfit:
# equações de oferta e demanda já definidas anteriormente
demanda_eqconsump ~ price + income
oferta_eqconsump ~ price + farmPrice + trend
# define os instrumentos
inst <- ~income + farmPrice + trend
# monta o sistema em formato de lista
system <- list(demanda = demanda_eq, oferta = oferta_eq)
# estima o modelo por MQO novamente
modelo_mqo <- systemfit(system, data = Kmenta)
# estima o modelo por MQ2E
modelo_mq2e <- systemfit(system, method = "2SLS", inst = inst, data = Kmenta)
# visualiza os parâmetros estimados
round(coef(summary(modelo_mqo)), digits = 4) Estimate Std. Error t value Pr(>|t|)
demanda_(Intercept) 99.8954 7.5194 13.2851 0.0000
demanda_price -0.3163 0.0907 -3.4882 0.0028
demanda_income 0.3346 0.0454 7.3673 0.0000
oferta_(Intercept) 58.2754 11.4629 5.0838 0.0001
oferta_price 0.1604 0.0949 1.6901 0.1104
oferta_farmPrice 0.2481 0.0462 5.3723 0.0001
oferta_trend 0.2483 0.0975 2.5462 0.0216
round(coef(summary(modelo_mq2e)), digits = 4) Estimate Std. Error t value Pr(>|t|)
demanda_(Intercept) 94.6333 7.9208 11.9474 0.0000
demanda_price -0.2436 0.0965 -2.5243 0.0218
demanda_income 0.3140 0.0469 6.6887 0.0000
oferta_(Intercept) 49.5324 12.0105 4.1241 0.0008
oferta_price 0.2401 0.0999 2.4023 0.0288
oferta_farmPrice 0.2556 0.0473 5.4096 0.0001
oferta_trend 0.2529 0.0997 2.5380 0.0219
Fazendo MQ3E:
# estima o modelo por MQ3E
modelo_mq3e <- systemfit(system, method = "3SLS", inst = inst, data = Kmenta)
# visualiza os parâmetros estimados
round(coef(summary(modelo_mq3e)), digits = 4) Estimate Std. Error t value Pr(>|t|)
demanda_(Intercept) 94.6333 7.9208 11.9474 0.0000
demanda_price -0.2436 0.0965 -2.5243 0.0218
demanda_income 0.3140 0.0469 6.6887 0.0000
oferta_(Intercept) 52.1972 11.8934 4.3888 0.0005
oferta_price 0.2286 0.0997 2.2934 0.0357
oferta_farmPrice 0.2282 0.0440 5.1861 0.0001
oferta_trend 0.3611 0.0729 4.9546 0.0001
3 Conclusão
No R, você pode implementar diferentes métodos para estimar modelos de equações simultâneas, dependendo da complexidade do modelo e da presença de endogeneidade. O MQO é inadequado para esses modelos devido ao viés de simultaneidade, enquanto MQ2E, MQ3E e a Máxima Verossimilhança são alternativas robustas.