#define model
myModelDefinition<-
"MODEL
COMMENT> Modified Klein Model 1 of the U.S. Economy with PDL,
COMMENT> autocorrelation on errors, restrictions and conditional evaluations
COMMENT> Consumption
BEHAVIORAL> cn
TSRANGE 1925 1 1941 1
EQ> cn = a1 + a2*p + a3*TSLAG(p,1) + a4*(w1+w2)
COEFF> a1 a2 a3 a4
ERROR> AUTO(2)
COMMENT> Investment
BEHAVIORAL> i
TSRANGE 1923 1 1941 1
EQ> i = b1 + b2*p + b3*TSLAG(p,1) + b4*TSLAG(k,1)
COEFF> b1 b2 b3 b4
RESTRICT> b2 + b3 = 1
COMMENT> Demand for Labor
BEHAVIORAL> w1
TSRANGE 1925 1 1941 1
EQ> w1 = c1 + c2*(y+t-w2) + c3*TSLAG(y+t-w2,1) + c4*time
COEFF> c1 c2 c3 c4
PDL> c3 1 3
COMMENT> Gross National Product
IDENTITY> y
EQ> y = cn + i + g - t
COMMENT> Profits
IDENTITY> p
EQ> p = y - (w1+w2)
COMMENT> Capital Stock with switches
IDENTITY> k
EQ> k = TSLAG(k,1) + i
IF> i > 0
IDENTITY> k
EQ> k = TSLAG(k,1)
IF> i <= 0
END"
#load model
myModel<-LOAD_MODEL(modelText=myModelDefinition)
#retrieve model structure...
#get definition
myModel$cleanModel
# [1] "BEHAVIORAL> cn"
# [2] "TSRANGE 1925 1 1941 1"
# [3] "EQ> cn = a1 + a2*p + a3*TSLAG(p,1) + a4*(w1+w2)"
# [4] "COEFF> a1 a2 a3 a4"
# [5] "ERROR> AUTO(2)"
# [6] "BEHAVIORAL> i"
# [7] "TSRANGE 1923 1 1941 1"
# [8] "EQ> i = b1 + b2*p + b3*TSLAG(p,1) + b4*TSLAG(k,1)"
# [9] "COEFF> b1 b2 b3 b4"
#[10] "RESTRICT> b2 + b3 = 1"
#[11] "BEHAVIORAL> w1"
#[12] "TSRANGE 1925 1 1941 1"
#[13] "EQ> w1 = c1 + c2*(y+t-w2) + c3*TSLAG(y+t-w2,1)+c4*time"
#[14] "COEFF> c1 c2 c3 c4"
#[15] "PDL> c3 1 3"
#[16] "IDENTITY> y"
#[17] "EQ> y = cn + i + g - t"
#[18] "IDENTITY> p"
#[19] "EQ> p = y - (w1+w2)"
#[20] "IDENTITY> k"
#[21] "EQ> k = TSLAG(k,1) + i"
#[22] "IF> i > 0"
#[23] "IDENTITY> k"
#[24] "EQ> k = TSLAG(k,1)"
#[25] "IF> i <= 0"
#get endogenous and exogenous
myModel$vendog
#[1] "cn" "i" "w1" "y" "p" "k"
myModel$vexog
#[1] "w2" "t" "time" "g"
#get behaviorals, identities and coefficients count
myModel$totNumEqs
#[1] 3
myModel$totNumIds
#[1] 3
myModel$eqCoeffNum
#[1] 12
#get the incidence matrix
myModel$incidence_matrix
# cn i w1 y p k
#cn 0 0 1 0 1 0
#i 0 0 0 0 1 0
#w1 0 0 0 1 0 0
#y 1 1 0 0 0 0
#p 0 0 1 1 0 0
#k 0 1 0 0 0 0
#get the optimal reordering arrays
myModel$vpre
#NULL
myModel$vblocks[[1]]$vsim
#[1] "w1" "p" "i" "cn" "y"
myModel$vblocks[[1]]$vfeed
#[1] "y"
myModel$vblocks[[1]]$vpost
#[1] "k"
#get the model max lag and the model name
myModel$max_lag
#[1] 3
myModel$modelName
#myModelDefinition
#get infos on behavioral w1
myModel$behaviorals$w1$eq
#[1] "w1=c1+c2*(y+t-w2)+c3*TSLAG(y+t-w2,1)+c4*time"
myModel$behaviorals$w1$eqCoefficientsNames
#[1] "c1" "c2" "c3" "c3_PDL_1" "c3_PDL_2" "c4"
myModel$behaviorals$w1$eqCoefficientsNamesOriginal
#[1] "c1" "c2" "c3" "c4"
myModel$behaviorals$w1$eqComponentsNames
#[1] "t" "time" "w1" "w2" "y"
myModel$behaviorals$w1$tsrange
#[1] 1925 1 1941 1
myModel$behaviorals$w1$eqRegressorsNames
#[1] "1" "(y+t-w2)"
#[3] "TSLAG(y+t-w2,1)" "TSLAG(TSLAG(y+t-w2,1),1)" "TSLAG(TSLAG(y+t-w2,1),2)" "time"
myModel$behaviorals$w1$eqRegressorsNamesOriginal
#[1] "1" "(y+t-w2)"
#[3] "TSLAG(y+t-w2,1)" "time"
myModel$behaviorals$w1$pdlRaw
#[1] "c3 1 3;"
myModel$behaviorals$w1$pdlRestrictionMatrix
# [,1] [,2] [,3] [,4] [,5] [,6]
#[1,] 0 0 1 -2 1 0
#get infos on behavioral cn
myModel$behaviorals$cn$errorRaw
#[1] "AUTO(2)"
myModel$behaviorals$cn$errorType
#[1] "AUTO"
myModel$behaviorals$cn$errorDim
#[1] 2
myModel$behaviorals$cn$eqSimExp
#expression(cn[4,]=cn__ADDFACTOR[4,]+cn__a1+cn__a2*p[4,]+cn__a3*(p[3,])+
#cn__a4*(w1[4,]+w2[4,])+cn__RHO_1*(cn[3,]-(cn__ADDFACTOR[3,]+
#cn__a1+cn__a2*p[3,]+cn__a3*(p[2,])+cn__a4*(w1[3,]+w2[3,])))+
#cn__RHO_2*(cn[2,]-(cn__ADDFACTOR[2,]+cn__a1+cn__a2*p[2,]+
#cn__a3*(p[1,])+cn__a4*(w1[2,]+w2[2,]))))
#get infos on behavioral i
myModel$behaviorals$i$matrixR
# [,1] [,2] [,3] [,4]
#[1,] 0 1 1 0
myModel$behaviorals$i$vectorR
#[1] 1
myModel$behaviorals$i$restrictRaw
#[1] "b2+b3=1;"
#get infos on identitiy k
myModel$identities$k$eqRaw
#[1] "k=TSLAG(k,1)+i;k=TSLAG(k,1);"
myModel$identities$k$ifRaw
#[1] "i > 0;i <= 0;"
myModel$identities$k$eqFull
#[1] "__IF__ (i > 0) __THEN__ k=TSLAG(k,1)+i;__IF__ (i <= 0) __THEN__ k=TSLAG(k,1);"
myModel$identities$k$eqComponentsNames
#[1] "i" "k"
myModel$identities$k$eqSimExp
#expression(k[4,]=.MODEL_VIF(k[4,],i[4,] > 0,k_ADDFACTOR[4,]+
#(k[3,])+i[4,]),k[4,]=.MODEL_VIF(k[4,],i[4,] <= 0,
#k_ADDFACTOR[4,]+(k[3,])))
myModel$identities$k$hasIF
#[1] TRUE
Run the code above in your browser using DataLab