runireg                package:bayesm                R Documentation

_D_r_a_w _f_r_o_m _P_o_s_t_e_r_i_o_r _f_o_r _U_n_i_v_a_r_i_a_t_e _R_e_g_r_e_s_s_i_o_n

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

     'runireg' draws from posterior for univariate regression with a
     natural conjugate prior.

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

     runireg(y, X, betabar, A, nu, ssq)

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

       y: n x 1 dep var  

       X: n x k Design matrix 

 betabar: prior mean 

       A: k x k pds prior precision matrix 

      nu: d.f. parameter for sigma-sq prior 

     ssq: scale parameter for sigma-sq prior 

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

     Model: y = Xbeta + e.  e ~ N(0,sigmasq). 

     Priors: beta given sigmasq ~ N(betabar,sigmasq*A^{-1}).
      sigmasq ~ eqn{(nu*ssq)}/chi^2_{nu}.

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

     a list with one draw from posterior 

   beta : beta draw

sigmasq : sigmasq draw

_W_a_r_n_i_n_g:

     This routine is a utility routine that does *not* check the input
     arguments for proper dimensions and type.

_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
     Allenby, McCulloch, and Rossi, Chapter 2. 
       <URL:
     http://gsbwww.uchicago.edu/fac/peter.rossi/research/bsm.html>

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

     'runiregGibbs'

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

     set.seed(66)
     n=100
     X=cbind(rep(1,n),runif(n)); beta=c(1,2); sigsq=.25
     y=X%*%beta+rnorm(n,sd=sqrt(sigsq))

     A=diag(c(.05,.05)); betabar=c(0,0)
     nu=3; ssq=1.0

     R=1000
     betadraw=matrix(double(R*2),ncol=2)
     sigsqdraw=double(R)
     for (rep in 1:R) 
        {out=runireg(y,X,betabar,A,nu,ssq);betadraw[rep,]=out$beta
         sigsqdraw[rep]=out$sigmasq}

     cat(" Betadraws ",fill=TRUE)
     mat=apply(betadraw,2,quantile,probs=c(.01,.05,.5,.95,.99))
     mat=rbind(beta,mat); rownames(mat)[1]="beta"; print(mat)
     cat(" Sigma-sq draws",fill=TRUE)
     cat(" sigma-sq= ",sigsq,fill=TRUE)
     print(quantile(sigsqdraw,probs=c(.01,.05,.5,.95,.99)))

