Modelos de Equações simultâneas

Resumo

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

  1. 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.

  2. 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.

  3. 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.

  4. 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:

  1. \(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)

  2. \(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:

library(systemfit)
library(ggplot2)
library(broom)

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:

  1. 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.

  2. 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ço

  • income: Renda

  • farmPrice: 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 + trend

2.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_eq
consump ~ price + income
oferta_eq
consump ~ 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.