Modelo SIM - Godley e Lavoie (2007) - Notação Matricial

Introdução

Em post anterior, verificamos como seria possível simular o modelo SFC do capítulo 1 do livro do Godley e Lavoie (2007). O intuito do post de hoje é mostrar que o mesmo modelo pode ser trabalhado em uma versão matricial. Dessa forma, reescreveremos o sistema de equações de modo que seja possível ter a seguinte estrutura: \[\mathbf{A.X_{t}=B.X_{t-1}+C}\] onde \(\mathbf{A}\) é a matriz \(n\times n\) de coefientes que relacionam as variáveis contemporâneas; \(\mathbf{X_{t}}\) é o vetor \(n\times 1\) das variáveis contemporâneas; \(\mathbf{B}\) é a matriz \(n\times n\) de coeficientes que relacionam as variáveis defasadas de 1ª ordem; \(\mathbf{X_{t-1}}\) é o vetor \(n\times 1\) das variáveis defasadas de 1ª ordem; \(\mathbf{C}\) é o vetor \(n\times 1\) de variáveis exógenas do modelo.

Em suma, estamos transformando o sistema de equações em um problema matricial de equações à diferenças de 1ª ordem não homogêneo.

Resolução Matricial

O sistema acima pode ser reescrito da seguinte forma:

\[\mathbf{\underset{I}{\underbrace{A^{-1}.A}}.X_{t}=A^{-1}.B.X_{t-1}+A^{-1}.C}\] O que simplificando, temos: \[\mathbf{X_t=\phi_1.X_{t-1}+\phi_2}\]

onde \(\mathbf{\phi_1=A^{-1}.B}\), \(\mathbf{\phi_2=A^{-1}.C}\) e por definição \(\mathbf{I=A^{-1}.A}\).

Podemos encontrar os pontos fixos (ou valores de estado estacionário) assumindo que \(\mathbf{X_t=X_{t-1}=X^*}\). Dessa maneira, temos que: \[\mathbf{X^*=(I-\phi_1)^{-1}.\phi_2}\] Com relação a estabilidade do sistema de equações em diferenças, necessitaremos ao fim que todos os autovalores (parte real ou imaginária) da matriz de transição \(\mathbf{A}\) possuam valor absoluto menor do que 1.

Isso posto, reorganizaremos as equações do modelo SIM para depois inputá-las na forma matricial.

Equações do Modelo SIM reescritas

As 11 equações do modelo reescritas organizando os termos ficam da seguinte forma:

\[C_s-C_d=0    (1)\] \[G_s=\overline{G}_{d}     (2)\] \[T_s-T_d=0    (3)\] \[N_s-N_d=0    (4)\] \[Y_d-W.N_s+T_s=0 (5)\] \[T_d-\theta.W.N_s=0   (6)\] \[C_d-\alpha_1.Y_d=\alpha_2.Hh_{-1} (7)\] \[Hs+T_d=Hs_{-1}+\overline{G}_{d} (8)\] \[Hh-Y_d+C_d=Hh_{-1} (9)\] \[Y-C_s-G_s=0   (10)\] \[N_d-(1/W).Y=0  (11)\]

A correspondência das variáveis se encontra no post anterior e aqui apenas lembro que a única variável exógena é \(\overline{G}_{d}\). Além disso, há uma equação escondida que será fundamental para a resoluçao do modelo, sendo ela \(Hh=Hs\). É simples e trivial porém necessária. Resgataremos isso lá na frente.

O Modelo na forma Matricial

Com a finalidade didática, abriremos abaixo as matrizes e vetores que representam nosso sistema de equações à diferença.

Em notação matricial, temos: \(\mathbf{A.X_{t}=B.X_{t-1}+C}\)

Inputando os elementos das equações, temos:

\[\begin{bmatrix}1 & 0 & 0 & 0 & 0 & 0 & -1 & 0 & 0 & 0 & 0\\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 1 & 0 & 0 & -1 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & -1\\ 0 & 0 & 1 & -W & 1 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & -\theta.W & 0 & 1 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & -\alpha_{1} & 0 & 1 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0\\ -1 & -1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & -1/W & 1 \end{bmatrix}.\begin{bmatrix}C_{s}\\ G_{s}\\ T_{s}\\ N_{s}\\ Y_{d}\\ T_{d}\\ C_{d}\\ Hs\\ Hh\\ Y\\ N_{d} \end{bmatrix}=\] \[\begin{bmatrix}0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \alpha_{2} & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \end{bmatrix}.\begin{bmatrix}C_{s-1}\\ G_{s-1}\\ T_{s-1}\\ N_{s-1}\\ Y_{d-1}\\ T_{d-1}\\ C_{d-1}\\ Hs_{-1}\\ Hh_{-1}\\ Y_{-1}\\ N_{d-1} \end{bmatrix}+\begin{bmatrix}0\\ \overline{G}_{d}\\ 0\\ 0\\ 0\\ 0\\ 0\\ \overline{G}_{d}\\ 0\\ 0\\ 0 \end{bmatrix}\]

E aqui cabe uma informação muito importante. Como a matriz \(\mathbf{A}\) será invertida durante o processo de resolução, necessitamos que ela não seja singular em um primeiro momento e nem resulte em uma matriz singular ao ser invertida. Isso porque também necessitaremos calcular \(\mathbf{(I-\phi_1)^{-1}}\).

Aqui surge então o porém mencionado anteriormente, que envolveria fazer uso da equação escondida \(Hh=Hs\).

Se inputássemos na matriz \(\mathbf{B}\), o elemento \(\mathbf{B}[8,8]=1\) ao invés de \(\mathbf{B}[8,9]=1\), obteríamos no cálculo da inversa uma matriz singular. Em termos da notação das equações, se escrevermos que \(Hs+T_d=Hs_{-1}+\overline{G}_{d}\), o sistema não pode ser solucionado. Para ser, precisamos escrever que \(Hs+T_d=Hh_{-1}+\overline{G}_{d}\), fazendo uso da equação omitida.

Resolução em Linguagem R

Apresentado o problema e a conversão de notação, vamos agora para o script que nos fornecerá os valores de estado estacionário, bem como se o sistema é estável ou não para um dado conjunto de parâmetros.

Os pacotes utilizados são o matlib e o kableExtra. O primeiro pacote é para trabalhar com cálculo matricial e o segundo para gerar tabelas em HTML. Começamos limpando o Global Environment com o comando rm(list=ls()). Na sequência, definimos os valores dos parâmetros e variáveis exógenas.

rm(list=ls())

library(matlib)
library(kableExtra)

alpha_1 <- 0.6
alpha_2 <- 0.4
W       <- 1.0
theta   <- 0.2
G_d     <- 20

Precisamos agora definir a matriz \(\mathbf{A}\). Para isso, sabemos que cada elemento da diagonal principal terá valor igual a 1. Isso porque cada equação terá sua variável endógena ordenada em igual sequência no vetor \(\mathbf{X_{t}}\) (pode-se verificar isso na última seção!). Dessa forma, a estrutura geral da matriz pode ser definida por uma matriz \(\mathbf{I}\) de tamanho \(11\times 11\). Uma forma de definí-la no R é através da função diag. Os demais elementos podem ser inputados verificando as equações e alterando individualmente onde ele se encontra na matriz.

No caso da matriz \(\mathbf{B}\), a diagonal principal não possui, a princípio, valores unitários. Portanto, dessa forma o que podemos fazer é definí-la como uma matriz de elementos \(0\) de tamanho \(11\times 11\) e depois inputarmos os elementos distintos nas respectivas linhas e colunas. O que é feito também vale para a matriz \(\mathbf{C}\), sendo essa uma matriz \(11 \times 1\). Por fim, criamos também uma matriz identidade que nos ajudará no final.

# Matriz A
A <- diag(11)

A[1,7]  <- -1
A[3,6]  <- -1
A[4,11] <- -1
A[5,4]  <- -W
A[5,3]  <- 1
A[6,4]  <- -theta*W
A[7,5]  <- -alpha_1
A[8,6]  <- 1
A[9,5]  <- -1
A[9,7]  <- 1
A[10,1] <- -1
A[10,2] <- -1
A[11,10] <- -1/W


## Matriz B
B <- matrix(0, 11, 11)

### Inputando os Elementos de B
B[7,9] <- alpha_2
B[8,9] <- 1
B[9,9] <- 1

# Observação importante. Tive que colocar B[8,9] como igual a 1.
# Não havia nenhuma equação que apontasse para Hh = Hs. Isso tornava
# a matriz singular e por consequência, não conseguíamos calcular a
# matriz inversa.

## Matriz C
C <- matrix(0,11)

C[2,1] <- G_d
C[8,1] <- G_d

I <- diag(11)

Na parte seguinte, criamos as matrizes \(\mathbf{\phi_1}\) através da multiplicação de \(\mathbf{A^{-1}.B}\) e \(\mathbf{\phi_2}\) através da multiplicação de \(\mathbf{A^{-1}.C}\). Sobre esse último termo há uma nota importante a ser feita. O resultado dela representa o vetor que fornece o equilíbrio de curto prazo das variáveis endógenas do modelo.

Por fim, temos a resolução do sistema \(\mathbf{X^*=(I-\phi_1)^{-1}.\phi_2}\) que nos fornece os vetor das variáveis no estado estacionário. Ele é apresentado em uma tabela através da função kable. Além disso, pedimos o cálculo dos autovalores da matriz de transição \(\mathbf{A}\). Como pode-se notar, entre os 11 valores possíveis, temos apenas 1 (porque o modelo é de equilíbrio único) e com valor absoluto \(<1\). Isso garante que o sistema é estável. Para que não estável fosse, o sistema teria que ter valor absoluto maior ou igual 1.

phi_1 <- inv(A) %*% B  
phi_2 <- inv(A) %*% C  

# Equilíbrio de Estado Estacionário
X_ast <- inv(I-phi_1) %*% phi_2
X_ast <- data.frame(X_ast)
rownames(X_ast) <- c("Cs*","Gs*","Ts*","Ns*","Yd*","Td*","Cd*","Hs*","Hh*","Y*","Nd*")
colnames(X_ast) <- "Valor de Estado Estacionário"

kable(X_ast) %>%
  kable_styling(bootstrap_options = "striped", full_width = F)
Valor de Estado Estacionário
Cs* 80
Gs* 20
Ts* 20
Ns* 100
Yd* 80
Td* 20
Cd* 80
Hs* 80
Hh* 80
Y* 100
Nd* 100
DF_AV <- data.frame(eigen(phi_1)$values)
rownames(DF_AV) <- c("Autovalor 1", "Autovalor 2", "Autovalor 3", "Autovalor 4", 
                     "Autovalor 5", "Autovalor 6", "Autovalor 7", "Autovalor 8",
                     "Autovalor 9", "Autovalor 10", "Autovalor 11")
colnames(DF_AV) <- "Valor Obtido"

kable(DF_AV) %>%
  kable_styling(bootstrap_options = "striped", full_width = F)
Valor Obtido
Autovalor 1 0.8461538
Autovalor 2 0.0000000
Autovalor 3 0.0000000
Autovalor 4 0.0000000
Autovalor 5 0.0000000
Autovalor 6 0.0000000
Autovalor 7 0.0000000
Autovalor 8 0.0000000
Autovalor 9 0.0000000
Autovalor 10 0.0000000
Autovalor 11 0.0000000

A título de exercício, o leitor pode verificar o que ocorre com a estabilidade do modelo quando \(\alpha_2=0\)

Referências

DE LA FUENTE, A. Mathematical Methods and Models for Economists. Cambridge University Press. 2000.

GANDOLFO, G. Economic Dynamics. Fourth Edition. Springer. Berlin. 2009.

GODLEY, W.; LAVOIE, M. Monetary Economics. An Integrated Approach to Credit, Money, Income, Production and Wealth. Palgrave Macmillan. Nova Iorque, EUA. 2007.

Júlio Fernando Costa Santos
Júlio Fernando Costa Santos
Professor of Economics

My research interests include Finance, Macroeconomics and Econometric techniques.

Related