MCMClogit              package:MCMCpack              R Documentation

_M_a_r_k_o_v _C_h_a_i_n _M_o_n_t_e _C_a_r_l_o _f_o_r _L_o_g_i_s_t_i_c _R_e_g_r_e_s_s_i_o_n

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

     This function generates a sample from the posterior distribution
     of a logistic regression model using a random walk Metropolis
     algorithm. The user supplies data and priors, and a sample from
     the posterior distribution is returned as an mcmc object, which
     can be subsequently analyzed with functions  provided in the coda
     package.

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

     MCMClogit(formula, data = parent.frame(), burnin = 1000, mcmc = 10000,
        thin=1, tune=1.1, verbose = 0, seed = NA,  beta.start = NA,
        b0 = 0, B0 = 0, user.prior.density=NULL, logfun=TRUE,
        marginal.likelihood=c("none", "Laplace"), ...) 

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

 formula: Model formula.

    data: Data frame.

  burnin: The number of burn-in iterations for the sampler.

    mcmc: The number of Metropolis iterations for the sampler.

    thin: The thinning interval used in the simulation.  The number of
          mcmc iterations must be divisible by this value.

    tune: Metropolis tuning parameter. Can be either a positive scalar
          or a k-vector, where k is the length of beta.Make sure that
          the acceptance rate is satisfactory (typically between 0.20
          and 0.5) before using the posterior sample for inference.

 verbose: A switch which determines whether or not the progress of the
          sampler is printed to the screen.  If 'verbose' is greater
          than 0 the iteration number, the current beta vector, and the
          Metropolis acceptance rate are printed to the screen every
          'verbose'th iteration.

    seed: The seed for the random number generator.  If NA, the
          Mersenne Twister generator is used with default seed 12345;
          if an integer is  passed it is used to seed the Mersenne
          twister.  The user can also pass a list of length two to use
          the L'Ecuyer random number generator, which is suitable for
          parallel computation.  The first element of the list is the
          L'Ecuyer seed, which is a vector of length six or NA (if NA 
          a default seed of 'rep(12345,6)' is used).  The second
          element of  list is a positive substream number. See the
          MCMCpack  specification for more details.

beta.start: The starting value for the beta vector. This can either  be
          a scalar or a column vector with dimension equal to the
          number of  betas. If this takes a scalar value, then that
          value will serve as the  starting value for all of the betas.
           The default value of NA will use the maximum likelihood
          estimate of beta as the starting  value.

      b0: If 'user.prior.density==NULL' 'b0' is the prior mean of beta
          under a multivariate normal prior.  This can either be a
          scalar or a column vector with dimension equal to the number
          of betas. If this takes a scalar value, then that value will
          serve as the prior mean for all of the betas.

      B0: If 'user.prior.density==NULL' 'B0' is the prior precision of
          beta under a multivariate normal prior. This can either be a
          scalar or a square matrix with dimensions equal to the number
          of betas.  If this takes a scalar value, then that value
          times an identity matrix serves as the prior precision of
          beta. Default value of 0 is equivalent to an improper uniform
          prior for beta.

user.prior.density: If non-NULL, the prior (log)density up to a
          constant of proportionality. This must be a function defined
          in R whose first argument is a continuous (possibly vector)
          variable. This first argument is the point in the state space
          at which the prior (log)density is to be evaluated.
          Additional arguments can be passed to 'user.prior.density()'
          by inserting them in the call to 'MCMClogit()'. See the
          Details section and the examples below for more information. 

  logfun: Logical indicating whether 'use.prior.density()' returns the
          natural log of a density function (TRUE) or a density
          (FALSE).

marginal.likelihood: How should the marginal likelihood be calculated?
          Options are: 'none' in which case the marginal likelihood
          will not be calculated or 'Laplace' in which case the Laplace
          approximation (see Kass and Raftery, 1995) is used.

     ...: further arguments to be passed

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

     'MCMClogit' simulates from the posterior distribution of a
     logistic regression model using a random walk Metropolis
     algorithm. The simulation proper is done in compiled C++ code to
     maximize efficiency.  Please consult the coda documentation for a
     comprehensive list of functions that can be used to analyze the
     posterior sample. 

     The model takes the following form:

                        y_i ~ Bernoulli(pi_i)

     Where the inverse link function:

             pi_i =  exp(x_i'beta) / [1 + exp(x_i'beta)]

     By default, we assume a multivariate Normal prior on beta:

                         beta ~ N(b0,B0^(-1))

     Additionally, arbitrary user-defined priors can be specified with
     the 'user.prior.density' argument. 

     If the default multivariate normal prior is used, the Metropollis
     proposal distribution is centered at the current value of beta and
     has variance-covariance V = T (B0 + C^{-1})^{-1} T, where T is a
     the diagonal positive definite matrix formed from the 'tune', B0
     is the prior precision, and C is the large sample
     variance-covariance matrix of the MLEs. This last calculation is
     done via an initial call to 'glm'.

     If a user-defined prior is used, the Metropollis proposal
     distribution is centered at the current value of beta and has
     variance-covariance V = T C T, where T is a the diagonal positive
     definite matrix formed from the 'tune' and C is the large sample
     variance-covariance matrix of the MLEs. This last calculation is
     done via an initial call to 'glm'.

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

     An mcmc object that contains the posterior sample.  This  object
     can be summarized by functions provided by the coda package.

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

     Andrew D. Martin, Kevin M. Quinn, and Daniel Pemstein.  2004.  
     _Scythe Statistical Library 1.0._ <URL: http://scythe.wustl.edu>.

     Martyn Plummer, Nicky Best, Kate Cowles, and Karen Vines. 2002.
     _Output Analysis and Diagnostics for MCMC (CODA)_. <URL:
     http://www-fis.iarc.fr/coda/>.

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

     'plot.mcmc','summary.mcmc', 'glm'

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

        ## Not run: 
        ## default improper uniform prior
        data(birthwt)
        posterior <- MCMClogit(low~age+as.factor(race)+smoke, data=birthwt)
        plot(posterior)
        summary(posterior)

        ## multivariate normal prior
        data(birthwt)
        posterior <- MCMClogit(low~age+as.factor(race)+smoke, b0=0, B0=.001,
                               data=birthwt)
        plot(posterior)
        summary(posterior)

        ## user-defined independent Cauchy prior 
        logpriorfun <- function(beta){
          sum(dcauchy(beta, log=TRUE))
        }

        posterior <- MCMClogit(low~age+as.factor(race)+smoke,
                               data=birthwt, user.prior.density=logpriorfun,
                               logfun=TRUE)
        plot(posterior)
        summary(posterior)

        ## user-defined independent Cauchy prior with additional args
        logpriorfun <- function(beta, location, scale){
          sum(dcauchy(beta, location, scale, log=TRUE))
        }

        posterior <- MCMClogit(low~age+as.factor(race)+smoke,
                               data=birthwt, user.prior.density=logpriorfun,
                               logfun=TRUE, location=0, scale=10)
        plot(posterior)
        summary(posterior)

        ## End(Not run)

