rnegbinRw               package:bayesm               R Documentation

_M_C_M_C _A_l_g_o_r_i_t_h_m _f_o_r _N_e_g_a_t_i_v_e _B_i_n_o_m_i_a_l _R_e_g_r_e_s_s_i_o_n

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

     'rnegbinRw' implements a Random Walk Metropolis Algorithm for the
     Negative  Binomial (NBD) regression model. beta | alpha and alpha
     | beta are drawn with two different random walks.

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

     rnegbinRw(Data, Prior, Mcmc)

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

    Data: list(y,X) 

   Prior: list(betabar,A,a,b) 

    Mcmc: list(R,keep,s_beta,s_alpha,beta0 

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

     Model:   y ~ NBD(mean=lambda, over-dispersion=alpha).  
      lambda=exp(x'beta)

     Prior:   beta ~ N(betabar,A^{-1}) 
      alpha ~ Gamma(a,b). 
      note: prior mean of alpha = a/b, variance = a/(b^2)

     list arguments contain:

   '_y' nobs vector of counts (0,1,2,...)

   '_X' nobs x nvar matrix

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

   '_A' nvar x nvar pds prior prec matrix (def: .01I)

   '_a' Gamma prior parm (def: .5)

   '_b' Gamma prior parm (def: .1)

   '_R' number of MCMC draws

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

   '_s__b_e_t_a' scaling for beta| alpha RW inc cov matrix (def:
        2.93/sqrt(nvar)

   '_s__a_l_p_h_a' scaling for alpha | beta RW inc cov matrix (def: 2.93)

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

     a list containing:  

betadraw: R/keep x nvar array of beta draws

alphadraw: R/keep vector of alpha draws

   llike: R/keep vector of log-likelihood values evaluated at each draw

acceptrbeta: acceptance rate of the beta draws

acceptralpha: acceptance rate of the alpha draws

_N_o_t_e:

     The NBD regression encompasses Poisson regression in the sense
     that as alpha goes to infinity the NBD distribution tends toward
     the Poisson.
      For "small" values of alpha, the dependent variable can be
     extremely variable so that  a large number of observations may be
     required to obtain precise inferences.

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

     Sridhar Narayanam & 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, McCulloch. 
      <URL:
     http://gsbwww.uchicago.edu/fac/peter.rossi/research/bsm.html>

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

     'rhierNegbinRw'

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

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

     set.seed(66)
     simnegbin = 
     function(X, beta, alpha) {
     #   Simulate from the Negative Binomial Regression
     lambda = exp(X %*% beta)
     y=NULL
     for (j in 1:length(lambda))
         y = c(y,rnbinom(1,mu = lambda[j],size = alpha))
     return(y)
     }

     nobs = 500
     nvar=2            # Number of X variables
     alpha = 5
     Vbeta = diag(nvar)*0.01

     # Construct the regdata (containing X)
     simnegbindata = NULL
     beta = c(0.6,0.2)
     X = cbind(rep(1,nobs),rnorm(nobs,mean=2,sd=0.5))
     simnegbindata = list(y=simnegbin(X,beta,alpha), X=X, beta=beta)
     Data = simnegbindata
     betabar = rep(0,nvar)
     A = 0.01 * diag(nvar)
     a = 0.5; b = 0.1
     Prior = list(betabar=betabar, A=A, a=a, b=b)

     keep =1
     s_beta=2.93/sqrt(nvar); s_alpha=2.93
     Mcmc = list(R=R, keep = keep, s_beta=s_beta, s_alpha=s_alpha)
     out = rnegbinRw(Data, Prior, 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)
     cat(" alphadraws ",fill=TRUE)
     mat=apply(matrix(out$alphadraw),2,quantile,probs=c(.01,.05,.5,.95,.99))
     mat=rbind(as.vector(alpha),mat); rownames(mat)[1]="alpha"; print(mat)    

