1\name{rivGibbs}
2\alias{rivGibbs}
3\concept{Instrumental Variables}
4\concept{Gibbs Sampler}
5\concept{bayes}
6\concept{endogeneity}
7\concept{simultaneity}
8\concept{MCMC}
9
10\title{Gibbs Sampler for Linear "IV" Model}
11
12\description{
13\code{rivGibbs} is a Gibbs Sampler for a linear structural equation with an arbitrary number of instruments.
14}
15
16\usage{rivGibbs(Data, Prior, Mcmc)}
17
18\arguments{
19  \item{Data }{list(y, x, w, z)}
20  \item{Prior}{list(md, Ad, mbg, Abg, nu, V)}
21  \item{Mcmc }{list(R, keep, nprint)}
22}
23
24\details{
25\subsection{Model and Priors}{
26  \eqn{x = z'\delta + e1} \cr
27  \eqn{y = \beta*x + w'\gamma + e2} \cr
28  \eqn{e1,e2} \eqn{\sim}{~} \eqn{N(0, \Sigma)}
29
30  Note: if intercepts are desired in either equation, include vector of ones in \eqn{z} or \eqn{w}
31
32  \eqn{\delta}            \eqn{\sim}{~} \eqn{N(md, Ad^{-1})} \cr
33  \eqn{vec(\beta,\gamma)} \eqn{\sim}{~} \eqn{N(mbg, Abg^{-1})} \cr
34  \eqn{\Sigma}            \eqn{\sim}{~} \eqn{IW(nu, V)}
35}
36\subsection{Argument Details}{
37  \emph{\code{Data = list(y, x, w, z)}}
38  \tabular{ll}{
39    \code{y:      } \tab \eqn{n x 1} vector of obs on LHS variable in structural equation \cr
40    \code{x:      } \tab \eqn{n x 1} vector of obs on "endogenous" variable in structural equation \cr
41    \code{w:      } \tab \eqn{n x j} matrix of obs on "exogenous" variables in the structural equation \cr
42    \code{z:      } \tab \eqn{n x p} matrix of obs on instruments
43  }
44  \emph{\code{Prior = list(md, Ad, mbg, Abg, nu, V)} [optional]}
45  \tabular{ll}{
46    \code{md:     } \tab \eqn{p}-length prior mean of delta (def: 0) \cr
47    \code{Ad:     } \tab \eqn{p x p} PDS prior precision matrix for prior on delta (def: 0.01*I) \cr
48    \code{mbg:    } \tab \eqn{(j+1)}-length prior mean vector for prior on beta,gamma (def: 0) \cr
49    \code{Abg:    } \tab \eqn{(j+1)x(j+1)} PDS prior precision matrix for prior on beta,gamma (def: 0.01*I) \cr
50    \code{nu:     } \tab d.f. parameter for Inverted Wishart prior on Sigma (def: 5) \cr
51    \code{V:      } \tab \eqn{2 x 2} location matrix for Inverted Wishart prior on Sigma (def: nu*I)
52  }
53  \emph{\code{Mcmc = list(R, keep, nprint)} [only \code{R} required]}
54  \tabular{ll}{
55    \code{R:      } \tab number of MCMC draws \cr
56    \code{keep:   } \tab MCMC thinning parameter: keep every \code{keep}th draw (def: 1) \cr
57    \code{nprint: } \tab print the estimated time remaining for every \code{nprint}'th draw (def: 100, set to 0 for no print)
58  }
59}
60}
61
62\value{
63  A list containing:
64  \item{deltadraw }{ \eqn{R/keep x p} matrix of delta draws}
65  \item{betadraw  }{ \eqn{R/keep x 1} vector of beta draws}
66  \item{gammadraw }{ \eqn{R/keep x j} matrix of gamma draws}
67  \item{Sigmadraw }{ \eqn{R/keep x 4} matrix of Sigma draws -- each row is the vector form of Sigma}
68}
69
70\author{Rob McCulloch and Peter Rossi, Anderson School, UCLA, \email{perossichi@gmail.com}.}
71
72\references{ For further discussion, see Chapter 5, \emph{Bayesian Statistics and Marketing} by Rossi, Allenby, and McCulloch. \cr \url{http://www.perossi.org/home/bsm-1}}
73
74\examples{
75if(nchar(Sys.getenv("LONG_TEST")) != 0) {R=2000} else {R=10}
76set.seed(66)
77
78simIV = function(delta, beta, Sigma, n, z, w, gamma) {
79  eps = matrix(rnorm(2*n),ncol=2) \%*\% chol(Sigma)
80  x = z\%*\%delta + eps[,1]
81  y = beta*x + eps[,2] + w\%*\%gamma
82  list(x=as.vector(x), y=as.vector(y))
83  }
84
85n = 200
86p=1 # number of instruments
87z = cbind(rep(1,n), matrix(runif(n*p),ncol=p))
88w = matrix(1,n,1)
89rho = 0.8
90Sigma = matrix(c(1,rho,rho,1), ncol=2)
91delta = c(1,4)
92beta = 0.5
93gamma = c(1)
94simiv = simIV(delta, beta, Sigma, n, z, w, gamma)
95
96Data1 = list(); Data1$z = z; Data1$w=w; Data1$x=simiv$x; Data1$y=simiv$y
97Mcmc1=list(); Mcmc1$R = R; Mcmc1$keep=1
98
99out = rivGibbs(Data=Data1, Mcmc=Mcmc1)
100
101cat("Summary of Beta draws", fill=TRUE)
102summary(out$betadraw, tvalues=beta)
103
104cat("Summary of Sigma draws", fill=TRUE)
105summary(out$Sigmadraw, tvalues=as.vector(Sigma[upper.tri(Sigma,diag=TRUE)]))
106
107## plotting examples
108if(0){plot(out$betadraw)}
109}
110
111\keyword{models}
112