rbprobitGibbs             package:bayesm             R Documentation

_G_i_b_b_s _S_a_m_p_l_e_r (_A_l_b_e_r_t _a_n_d _C_h_i_b) _f_o_r _B_i_n_a_r_y _P_r_o_b_i_t

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

     'rbprobitGibbs' implements the Albert and Chib Gibbs Sampler for
     the binary probit model.

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

     rbprobitGibbs(Data, Prior, Mcmc)

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

    Data: list(X,y)

   Prior: list(betabar,A)

    Mcmc: list(R,keep)  

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

     Model: z = Xbeta + e.  e ~ N(0,I). y=1, if z> 0. 

     Prior:  beta ~ N(betabar,A^{-1}). 

     List arguments contain  

     '_X' Design Matrix

     '_y' n x 1 vector of observations, (0 or 1) 

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

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

     '_R' number of MCMC draws 

     '_k_e_e_p' thinning parameter - keep every keepth draw (def: 1)

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

betadraw : R/keep x k array of betadraws

_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:

     'rmnpGibbs'

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

     ##
     ## rbprobitGibbs example
     ##
     if(nchar(Sys.getenv("LONG_TEST")) != 0) {R=2000} else {R=10}

     set.seed(66)
     simbprobit=
     function(X,beta) {
     ##  function to simulate from binary probit including x variable
     y=ifelse((X%*%beta+rnorm(nrow(X)))<0,0,1)
     list(X=X,y=y,beta=beta)
     }

     nobs=200
     X=cbind(rep(1,nobs),runif(nobs),runif(nobs))
     beta=c(0,1,-1)
     nvar=ncol(X)
     simout=simbprobit(X,beta)

     Data=list(X=simout$X,y=simout$y)
     Mcmc=list(R=R,keep=1)

     out=rbprobitGibbs(Data=Data,Mcmc=Mcmc)

     cat(" Betadraws ",fill=TRUE)
     mat=apply(out$betadraw,2,quantile,probs=c(.01,.05,.5,.95,.99))
     mat=rbind(beta,mat); rownames(mat)[1]="beta"; print(mat)

