############################################################################################ # # FIRST ORDER DYNAMIC LINEAR MODEL # ############################################################################################ # # HEDIBERT FREITAS LOPES # Associate Professor of Econometrics and Statistics # The University of Chicago Booth School of Business # 5807 South Woodlawn Avenue # Chicago, Illinois, 60637 # Email : hlopes@ChicagoGSB.edu # URL: http://faculty.chicagobooth.edu/hedibert.lopes/research/ # ############################################################################################ rm(list=ls()) DLM.SIM = function(n,tau,sig,x0){ w = rnorm(n,0,tau) v = rnorm(n,0,sig) x = rep(0,n) y = rep(0,n) x[1] = alpha+beta*x0 + w[1] y[1] = x[1] + v[1] for (t in 2:n){ x[t] = alpha+beta*x[t-1] + w[t] y[t] = x[t] + v[t] } return(list(x=x,y=y)) } DLM = function(y,alpha,beta,sig2,tau2,m0,C0){ n = length(y) m = m0 C = C0 l = 0.0 mm = rep(0,n) CC = rep(0,n) for (t in 1:n){ a = alpha+beta*m R = beta^2*C+tau2 Q = R+sig2 l = l+dnorm(y[t],a,sqrt(Q),log=TRUE) A = R/Q m = (1-A)*a+A*y[t] C = A*sig2 mm[t] = m CC[t] = C } return(list(m=mm,C=CC,l=l)) } SIS = function(y,alpha,beta,sig2,tau2,m0,C0,M){ n = length(y) x = rnorm(M,m0,sqrt(C0)) qs = matrix(0,n,3) neff = rep(0,n) mx = rep(0,n) w = rep(1/M,M) for (t in 1:n){ x = rnorm(M,alpha+beta*x,tau) w1 = w/sum(w) w = w*dnorm(y[t],x,sig) k = sample(1:M,size=M,prob=w,replace=T) x1 = x[k] qs[t,] = quantile(x1,c(0.025,0.5,0.975)) neff[t] = 1/sum(w1^2) mx[t] = sum(w1*x) } return(list(qs=qs,neff=neff,mx=mx)) } SIS1 = function(y,alpha,beta,sig2,tau2,m0,C0,M,perc){ n = length(y) x = rnorm(M,m0,sqrt(C0)) qs = matrix(0,n,3) neff = rep(0,n) mx = rep(0,n) w = rep(1/M,M) M1 = perc*M for (t in 1:n){ x = rnorm(M,alpha+beta*x,tau) w = w*dnorm(y[t],x,sig) k = sample(1:M,size=M,prob=w,replace=T) x1 = x[k] qs[t,] = quantile(x1,c(0.025,0.5,0.975)) w1 = w/sum(w) neff[t] = 1/sum(w1^2) mx[t] = sum(x*w1) if (neff[t]