rsurGibbs               package:bayesm               R Documentation

_G_i_b_b_s _S_a_m_p_l_e_r _f_o_r _S_e_e_m_i_n_g_l_y _U_n_r_e_l_a_t_e_d _R_e_g_r_e_s_s_i_o_n_s (_S_U_R)

_D_e_s_c_r_i_p_t_i_o_n:

     'rsurGibbs' implements a Gibbs Sampler to draw from the posterior
     of the Seemingly Unrelated Regression (SUR) Model of Zellner

_U_s_a_g_e:

     rsurGibbs(Data, Prior, Mcmc)

_A_r_g_u_m_e_n_t_s:

    Data: list(regdata)

   Prior: list(betabar,A, nu, V) 

    Mcmc: list(R,keep)

_D_e_t_a_i_l_s:

     Model: y_i = X_ibeta_i + e_i.  i=1,...,m. m regressions. 
      (e(1,k), ..., e(m,k)) ~ N(0,Sigma). k=1, ..., nobs. 

     We can also write as the stacked model: 
      y = Xbeta + e where y is a nobs*m long vector and
     k=length(beta)=sum(length(betai)).

     Note: we must have the same number of observations in each
     equation but we can have different numbers of X variables 

     Priors: beta ~ N(betabar,A^{-1}).  Sigma ~ IW(nu,V).

     List arguments contain  

   '_r_e_g_d_a_t_a' list of lists, regdata[[i]]=list(y=yi,X=Xi)

   '_b_e_t_a_b_a_r' k x 1 prior mean (def: 0)

   '_A' k x k prior precision matrix (def: .01I) 

   '_n_u' d.f. parm for Inverted Wishart prior (def: m+3)

   '_V' scale parm for Inverted Wishart prior (def: nu*I)

   '_R' number of MCMC draws 

   '_k_e_e_p' thinning parameter - keep every keepth draw 

_V_a_l_u_e:

     list of MCMC draws 

betadraw : R x k array of betadraws 

Sigmadraw : R x (m*m) array of Sigma draws

_A_u_t_h_o_r(_s):

     Peter Rossi, Graduate School of Business, University of Chicago,
     Peter.Rossi@ChicagoGsb.edu.

_R_e_f_e_r_e_n_c_e_s:

     For further discussion, see _Bayesian Statistics and Marketing_ by
     Rossi, Allenby and McCulloch, Chapter 3. 
      <URL:
     http://gsbwww.uchicago.edu/fac/peter.rossi/research/bsm.html>

_S_e_e _A_l_s_o:

     'rmultireg'

_E_x_a_m_p_l_e_s:

     if(nchar(Sys.getenv("LONG_TEST")) != 0) {R=1000} else {R=10}
     ##
     ## simulate data from SUR
     set.seed(66)
     beta1=c(1,2)
     beta2=c(1,-1,-2)
     nobs=100
     nreg=2
     iota=c(rep(1,nobs))
     X1=cbind(iota,runif(nobs))
     X2=cbind(iota,runif(nobs),runif(nobs))
     Sigma=matrix(c(.5,.2,.2,.5),ncol=2)
     U=chol(Sigma)
     E=matrix(rnorm(2*nobs),ncol=2)
     y1=X1%*%beta1+E[,1]
     y2=X2%*%beta2+E[,2]
     ##
     ## run Gibbs Sampler
     regdata=NULL
     regdata[[1]]=list(y=y1,X=X1)
     regdata[[2]]=list(y=y2,X=X2)
     Mcmc=list(R=R)
     out=rsurGibbs(Data=list(regdata=regdata),Mcmc=Mcmc)
     ##
     ## summarize GS output
     if(R < 100) {begin=1} else {begin=100}
     end=Mcmc$R
     cat(" betadraws ",fill=TRUE)
     mat=apply(out$betadraw[begin:end,],2,quantile,probs=c(.01,.05,.5,.95,.99))
     mat=rbind(c(beta1,beta2),mat); rownames(mat)[1]="beta"; print(mat)
     cat(" Sigmadraws ",fill=TRUE)
     mat=apply(out$Sigmadraw[begin:end,],2,quantile,probs=c(.01,.05,.5,.95,.99))
     mat=rbind(as.vector(Sigma),mat); rownames(mat)[1]="sigma"; print(mat)

