# R/neg_binomial_2.R In rstanarm: Bayesian Applied Regression Modeling via Stan

#### Documented in neg_binomial_2

# Part of the rstanarm package for estimating model parameters
# Copyright (C) 2015, 2016, 2017 Trustees of Columbia University
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

#' Family function for negative binomial GLMs
#'
#' Specifies the information required to fit a Negative Binomial GLM in a
#' similar way to \code{\link[MASS]{negative.binomial}}. However, here the
#' overdispersion parameter \code{theta} is not specified by the user and always
#' estimated (really the \emph{reciprocal} of the dispersion parameter is
#' estimated). A call to this function can be passed to the \code{family}
#' Negative Binomial model. Alternatively, the \code{\link{stan_glm.nb}} and
#' \code{\link{stan_glmer.nb}} wrapper functions may be used, which call
#' \code{neg_binomial_2} internally.
#'
#' @export
#'   vector of length one among \code{"log"}, \code{"identity"}, and
#'   \code{"sqrt"}.
#' @return An object of class \code{\link[stats]{family}} very similar to
#'   that of \code{\link[stats]{poisson}} but with a different family name.
#' @examples
#' if (!grepl("^sparc",  R.version$platform)) #' stan_glm(Days ~ Sex/(Age + Eth*Lrn), data = MASS::quine, seed = 123, #' family = neg_binomial_2, QR = TRUE, algorithm = "optimizing") #' #' # or, equivalently, call stan_glm.nb() without specifying the family #' neg_binomial_2 <- function(link = "log") { out <- poisson(link) out$family <- "neg_binomial_2"
out$variance <- function(mu, theta = Inf) mu + mu^2 / theta out$dev.resids <- function(y, mu, wt) {
stop("'dev.resids' function should not be called")
}
out$aic <- function(y, n, mu, wt, dev) { stop("'aic' function should not have been called") } out$simulate <- function(object, nsim)
stop("'simulate' function should not have been called")
return(out)
}


## Try the rstanarm package in your browser

Any scripts or data that you put into this service are public.

rstanarm documentation built on Oct. 4, 2019, 1:04 a.m.