# "limpar" ambiente
rm(list = ls())
# Carregar bibliotecas
library(readxl)
library(readr)
library(ggplot2)
library(MSwM)
# Carregar dados m1 contém os contratos ativos
m1 <- read_excel("C:/Users/kassy/OneDrive - caen.ufc.br/1. CAEN/3. Doutorado/Thesis/Test banco mundial/Base 2023/Markov Swtiching.xlsx")
#Fazer y a matriz das colunas de status, e x as colunas da matriz de investimentos?
#Definição de variáveis
active=m1$Active
cancel=m1$Cancelled
distressed=m1$Distressed
concluded=m1$Concluded
#Define dependent variables (1 variable for each equation)
Yactive=cbind(active)
Ydistressed=cbind(distressed)
#Define independent variables (3 variables for each equation)
x=cbind(cancel,concluded,distressed)
x2=cbind(cancel, concluded) #modelo não se ajusta considerando "active"
Next, we run OLS regression and get results, below:
#OLS regression for active contracts
olsActive=lm(Yactive~x)
olsDistressed=lm(Ydistressed~x2)
#Obtain the results of both
summary(olsActive)
##
## Call:
## lm(formula = Yactive ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.8352 -1.1190 0.2432 1.0413 1.8084
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 24.51712 3.86786 6.339 3.73e-05 ***
## xcancel -0.13408 0.09961 -1.346 0.2032
## xconcluded -0.09832 0.09654 -1.018 0.3286
## xdistressed 0.16419 0.06871 2.390 0.0342 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.469 on 12 degrees of freedom
## (17 observations deleted due to missingness)
## Multiple R-squared: 0.3746, Adjusted R-squared: 0.2182
## F-statistic: 2.396 on 3 and 12 DF, p-value: 0.1191
summary(olsDistressed)
##
## Call:
## lm(formula = Ydistressed ~ x2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.9352 -3.5840 -0.6279 3.3901 13.7176
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 40.44032 10.86048 3.724 0.00255 **
## x2cancel 0.08057 0.40146 0.201 0.84404
## x2concluded 0.50313 0.36382 1.383 0.18998
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.93 on 13 degrees of freedom
## (17 observations deleted due to missingness)
## Multiple R-squared: 0.1283, Adjusted R-squared: -0.005776
## F-statistic: 0.9569 on 2 and 13 DF, p-value: 0.4095
Next step is to run Markov-switching models and get results:
O modelo msActive captura a transição de um contrato ativo transitar para outros status. O modelo msDisstressed captura a transição de contratos que enfrentam problemas se tornarem outros status.
# MS for Active contracts (k is number of regimes, 5 é são os
#n coeficientes do modelo OLS (incluindo o intercepto), assim o comprimento de sw deve ser n+1 incluindo o intercepto do modelo OLS)
msActive = msmFit(olsActive, k = 2, sw = rep(TRUE, 5))
# MS for Distressed contracts
msDistressed = msmFit(olsDistressed, k = 2, sw = rep(TRUE, 4))
# Obtain the results of both
summary(msActive)
## Markov Switching Model
##
## Call: msmFit(object = olsActive, k = 2, sw = rep(TRUE, 5))
##
## AIC BIC logLik
## 32.88294 61.24436 -8.441472
##
## Coefficients:
##
## Regime 1
## ---------
## Estimate Std. Error t value Pr(>|t|)
## (Intercept)(S) 21.3915 2.2287 9.5982 < 2e-16 ***
## xcancel(S) -0.0509 0.0422 -1.2062 0.22774
## xconcluded(S) -0.1175 0.0635 -1.8504 0.06426 .
## xdistressed(S) 0.2099 0.0197 10.6548 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2343457
## Multiple R-squared: 0.9594
##
## Standardized Residuals:
## Min Q1 Med Q3 Max
## -3.267823e-01 -1.216599e-02 -8.343075e-10 1.988269e-02 3.879312e-01
##
## Regime 2
## ---------
## Estimate Std. Error t value Pr(>|t|)
## (Intercept)(S) 34.1032 1.4502 23.5162 < 2.2e-16 ***
## xcancel(S) -0.0326 0.0449 -0.7261 0.46778
## xconcluded(S) -0.0777 0.0307 -2.5309 0.01138 *
## xdistressed(S) -0.1276 0.0294 -4.3401 1.424e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2955498
## Multiple R-squared: 0.8706
##
## Standardized Residuals:
## Min Q1 Med Q3 Max
## -3.332266e-01 -1.753323e-01 7.742291e-20 8.139725e-02 4.525492e-01
##
## Transition probabilities:
## Regime 1 Regime 2
## Regime 1 0.8126637 0.2426732
## Regime 2 0.1873363 0.7573268
summary(msDistressed)
## Markov Switching Model
##
## Call: msmFit(object = olsDistressed, k = 2, sw = rep(TRUE, 4))
##
## AIC BIC logLik
## 95.08344 116.3545 -41.54172
##
## Coefficients:
##
## Regime 1
## ---------
## Estimate Std. Error t value Pr(>|t|)
## (Intercept)(S) -2.5118 15.6020 -0.1610 0.8720934
## x2cancel(S) 2.2010 0.6406 3.4358 0.0005908 ***
## x2concluded(S) -0.9914 0.3848 -2.5764 0.0099835 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.615696
## Multiple R-squared: 0.7414
##
## Standardized Residuals:
## Min Q1 Med Q3 Max
## -4.646231e+00 -2.831876e-05 1.310906e-03 5.755491e-01 5.865072e+00
##
## Regime 2
## ---------
## Estimate Std. Error t value Pr(>|t|)
## (Intercept)(S) 33.9886 4.6671 7.2826 3.275e-13 ***
## x2cancel(S) 0.0195 0.1558 0.1252 0.9004
## x2concluded(S) 1.2805 0.1763 7.2632 3.781e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.835309
## Multiple R-squared: 0.86
##
## Standardized Residuals:
## Min Q1 Med Q3 Max
## -2.453906850 -0.880027953 -0.001096784 0.964948422 3.345740389
##
## Transition probabilities:
## Regime 1 Regime 2
## Regime 1 4.233485e-07 0.5183902
## Regime 2 9.999996e-01 0.4816098
O modelo Markov Switching foi ajustado para estimar transições de regime entre diferentes tipos de contratos:
Ajuste dos dois modelos com 2 regimes cada (\(k = 2\)): - Um para contratos
ativos (msActive
). - Outro para contratos
distressed (msDistressed
).
O foco é no modelo para contratos ativos
(msActive
), que apresenta as seguintes características: -
Regime 1 e Regime 2 representam
diferentes estados ou condições dos contratos ativos. Por exemplo: -
Regime 1 pode representar uma situação “estável”. -
Regime 2 pode representar uma transição ou condição
“menos estável” (mais propensa a mudanças para outro status como
“concluído” ou “cancelado”).
Os coeficientes de cada regime refletem a relação entre os tipos de
contrato (xcancel
, xconcluded
,
xdistressed
) e o número de contratos
ativos em cada regime.
As probabilidades de transição descrevem a persistência e a alternância entre os regimes:
De/Para | Regime 1 | Regime 2 |
---|---|---|
Regime 1 | 0.8127 | 0.1873 |
Regime 2 | 0.2427 | 0.7573 |
Essas probabilidades indicam que os regimes são persistentes, mas existe uma chance razoável de transição entre eles, principalmente de Regime 1 para Regime 2.
Foi estimado com sucesso a transição entre regimes de contratos ativos, destacando como diferentes variáveis (cancelados, concluídos, distressed) afetam os contratos ativos em diferentes estados.
Se o objetivo é explorar como os contratos ativos transitam para outros estados, os resultados são promissores. No entanto, para compreender melhor a interação com contratos concluídos, cancelados e distressed, você pode expandir a análise para incluir mais regimes ou ajustar modelos adicionais para explorar diretamente essas transições.