Skip to content

Commit

Permalink
more examples
Browse files Browse the repository at this point in the history
  • Loading branch information
kthohr committed Sep 20, 2017
1 parent 49a918c commit befb97d
Show file tree
Hide file tree
Showing 5 changed files with 312 additions and 50 deletions.
12 changes: 9 additions & 3 deletions man/forecast.Rd
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,15 @@
\alias{forecast.bvars}
\alias{forecast.bvarw}
\alias{forecast.cvar}

\alias{forecast.DSGEVAR}
\alias{forecast.EDSGE}
\alias{forecast.Rcpp_bvarm}
\alias{forecast.Rcpp_bvars}
\alias{forecast.Rcpp_bvarw}
\alias{forecast.Rcpp_cvar}

\alias{forecast.Rcpp_dsge_gensys}
\alias{forecast.Rcpp_dsge_uhlig}
\alias{forecast.Rcpp_dsgevar_gensys}
\alias{forecast.Rcpp_dsgevar_uhlig}

\title{Forecasting with VAR, DSGE, and DSGE-VAR Models.}

Expand Down
47 changes: 0 additions & 47 deletions man/statespace.Rd

This file was deleted.

112 changes: 112 additions & 0 deletions tests/dsge/gensys/AnSchorfheide.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
#
# Solve the An-Schorfheide (2007) Model using gensys
#

rm(list=ls())
library(BMR)

#
# Setting parameter values as per An and Schorfheide (2007, Table 2)

tau <- 2.00
kappa <- 0.15
#
psi1 <- 1.50
psi2 <- 1.00
#
rhoR <- 0.60
rhog <- 0.95
rhoz <- 0.65
#
rA <- 0.40
piA <- 4.00
gammaQ <- 0.50
#
sigma_r <- sqrt(0.002)
sigma_g <- sqrt(0.008)
sigma_z <- sqrt(0.0045)
#
gamma <- 1 + (gammaQ/100)
beta <- 1/( 1 + (rA/400) )
pi <- 1 + (piA/400)

#

G0_16 <- rhoz/tau
G0_42 <- (1 - rhoR)*psi1
G0_43 <- (1 - rhoR)*psi2
# c, pi, y, R, r, g, z c_t+1, pi_t+1,
Gamma0 <- rbind(c( -1, 0, 0, -1/tau, 0, 0, G0_16, 1, 1/tau),
c( 0, -1, kappa, 0, 0, -kappa, 0, 0, beta),
c( 1, 0, -1, 0, 0, 1, 0, 0, 0),
c( 0, -G0_42, -G0_43, 1, -1, G0_43, 0, 0, 0),
c( 0, 0, 0, 0, 1, 0, 0, 0, 0),
c( 0, 0, 0, 0, 0, 1, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, 1, 0, 0),
c( 1, 0, 0, 0, 0, 0, 0, 0, 0),
c( 0, 1, 0, 0, 0, 0, 0, 0, 0))

Gamma1 <- rbind(c( 0, 0, 0, 0, 0, 0, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, 0, 0, 0),
c( 0, 0, 0, rhoR, 0, 0, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, 0, 0, 0),
c( 0, 0, 0, 0, 0, rhog, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, rhoz, 0, 0),
c( 0, 0, 0, 0, 0, 0, 0, 1, 0),
c( 0, 0, 0, 0, 0, 0, 0, 0, 1))

#

C <- matrix(0,9,1)

Psi <- matrix(0,9,3)
Psi[5,1] <- 1
Psi[6,2] <- 1
Psi[7,3] <- 1

Pi <- matrix(0,9,2)
Pi[8,1] <- 1
Pi[9,2] <- 1

Sigma <- rbind(c( sigma_r^2, 0, 0),
c( 0, sigma_g^2, 0),
c( 0, 0, sigma_z^2))

#

dsge_obj <- new(gensys)

dsge_obj$build(Gamma0,Gamma1,C,Psi,Pi)
dsge_obj$solve()

dsge_obj$G_sol
dsge_obj$impact_sol

#

dsge_obj$shocks_cov = Sigma

dsge_obj$state_space()

dsge_obj$F_state
dsge_obj$G_state

#

var_names <- c("Consumption","Inflation","Output","IntRate","IntRateS","GovSpending","Technology")

dsge_irf <- IRF(dsge_obj,30,var_names=var_names)
dsge_sim <- dsge_obj$simulate(1000,200)

#

y <- gammaQ + 100*(dsgetestsim[,3] + dsgetestsim[,7])
pi <- piA + 400*dsgetestsim[,2]
R <- piA + rA + 4*gammaQ + 400*dsgetestsim[,4]

ASData <- cbind(y,pi,R)
#save(ASData,file="ASData.RData")

#
#END
99 changes: 99 additions & 0 deletions tests/dsge/gensys/nkm_solve.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
#
# Solve the NK model with gensys
#

rm(list=ls())
library(BMR)

#

alpha <- 0.33
vartheta <- 6
beta <- 0.99
theta <- 0.6667

eta <- 1
phi <- 1
phi_pi <- 1.5
phi_y <- 0.5/4
rho_a <- 0.90
rho_v <- 0.5

BigTheta <- (1-alpha)/(1-alpha+alpha*vartheta)
kappa <- (((1-theta)*(1-beta*theta))/(theta))*BigTheta*((1/eta)+((phi+alpha)/(1-alpha)))
psi <- (eta*(1+phi))/(1-alpha+eta*(phi + alpha))

sigma_T <- 1
sigma_M <- 0.25

G0_47 <- (1/eta)*psi*(rho_a - 1)

#Order: yg, y, pi, rn, i, n, a, v, yg_t+1, pi_t+1
Gamma0 <- rbind(c( -1, 0, 0, eta, -eta/4, 0, 0, 0, 1, eta/4),
c( kappa, 0, -1/4, 0, 0, 0, 0, 0, 0, beta/4),
c( phi_y, 0,phi_pi/4, 0, -1/4, 0, 0, 1, 0, 0),
c( 0, 0, 0, -1, 0, 0, G0_47, 0, 0, 0),
c( 0, -1, 0, 0, 0, 1-alpha, 1, 0, 0, 0),
c( -1, 1, 0, 0, 0, 0, -psi, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, 1, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, 0, 1, 0, 0),
c( 1, 0, 0, 0, 0, 0, 0, 0, 0, 0),
c( 0, 0, 1, 0, 0, 0, 0, 0, 0, 0))

Gamma1 <- rbind(c( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, rho_a, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, 0, rho_v, 0, 0),
c( 0, 0, 0, 0, 0, 0, 0, 0, 1, 0),
c( 0, 0, 0, 0, 0, 0, 0, 0, 0, 1))

#

C <- matrix(0,10,1)

Psi <- matrix(0,10,2)
Psi[7,1] <- 1
Psi[8,2] <- 1

Pi <- matrix(0,10,2)
Pi[9,1] <- 1
Pi[10,2] <- 1

#

Sigma <- rbind(c(sigma_T^2, 0),
c( 0, sigma_M^2))

#

dsge_obj <- new(gensys)

dsge_obj$build(Gamma0,Gamma1,C,Psi,Pi)
dsge_obj$solve()

dsge_obj$G_sol
dsge_obj$impact_sol

#

dsge_obj$shocks_cov = Sigma

dsge_obj$state_space()

dsge_obj$F_state
dsge_obj$G_state

#

var_names <- c("Output Gap","Output","Inflation","Natural Int",
"Nominal Int","Labour Supply","Technology","MonetaryPolicy")

dsge_irf <- IRF(dsge_obj,12,var_names=var_names)
dsge_sim <- dsge_obj$simulate(800,200)

#
#END
92 changes: 92 additions & 0 deletions tests/dsge/gensys/rbc_solve.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
#
# Solve a basic RBC model with BMR using gensys
#

rm(list=ls())
library(BMR)

#

beta <- 0.99
alpha <- .33
delta <- .015
eta <- 1.0
rho <- 0.95
sigma_T <- 1

RSS <- 1/beta
YKSS <- (RSS + delta - 1)/alpha
IKSS <- delta
IYSS <- ((alpha*delta)/(RSS + delta - 1))
CYSS <- 1 - IYSS

#

Gam62 = alpha*YKSS/(RSS)
Gam63 = alpha*YKSS/(RSS)

# c_t, y_t, k_t, n_t, r_t, i_t, a_t, c_t+1, r_t+1
Gamma0 = rbind(c( 1, 0, 0, 0, 0, 0, 0, -1, 1/eta),
c( -CYSS, 1, 0, 0, 0, -IYSS, 0, 0, 0),
c( 0, 1, 0,-1+alpha, 0, 0, -1, 0, 0),
c( 0, 0, 1, 0, 0, -IKSS, 0, 0, 0),
c( -eta, 1, 0, -1, 0, 0, 0, 0, 0),
c( 0, Gam62, 0, 0, -1, 0, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, 1, 0, 0),
c( 1, 0, 0, 0, 0, 0, 0, 0, 0),
c( 0, 0, 0, 0, 1, 0, 0, 0, 0))

# [c_t, y_t, k_t, n_t, r_t, i_t, a_t, c_t+1, r_t+1]
Gamma1 = rbind(c( 0, 0, 0, 0, 0, 0, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, 0, 0, 0),
c( 0, 0, alpha, 0, 0, 0, 0, 0, 0),
c( 0, 0, 1-delta, 0, 0, 0, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, 0, 0, 0),
c( 0, 0, Gam63, 0, 0, 0, 0, 0, 0),
c( 0, 0, 0, 0, 0, 0, rho, 0, 0),
c( 0, 0, 0, 0, 0, 0, 0, 1, 0),
c( 0, 0, 0, 0, 0, 0, 0, 0, 1))

#

C = matrix(0,9,1)

Psi = matrix(0,9,1)
Psi[7,1] = 1

Pi = matrix(0,9,2)
Pi[8,1] = 1
Pi[9,2] = 1

#

Sigma <- matrix(sigma_T^2,1,1)

#

dsge_obj <- new(gensys)

dsge_obj$build(Gamma0,Gamma1,C,Psi,Pi)
dsge_obj$solve()

dsge_obj$G_sol
dsge_obj$impact_sol

#

dsge_obj$shocks_cov = Sigma

dsge_obj$state_space()

dsge_obj$F_state
dsge_obj$G_state

#

var_names = c("Consumption","Output","Capital","Labour","Interest","Investment","Technology")

dsge_irf <- IRF(dsge_obj,12,var_names=var_names)
dsge_sim <- dsge_obj$simulate(800,200)

#
#END

0 comments on commit befb97d

Please sign in to comment.