Beta Regression

Beta regression for modeling beta-distributed dependent variables, e.g., rates and proportions. In addition to maximum likelihood regression (for both mean and precision of a beta-distributed response), bias-corrected and bias-reduced estimation as well as finite mixture models and recursive partitioning for beta regressions are provided.


Changes in Version 3.1-1

o Conditional registration of sctest() method for "betatree" objects when "strucchange" package is loaded.

Changes in Version 3.1-0

o The betatree() function now uses the new mob() implementation from the "partykit" package (instead of the old "party" package). The user interface essentially remained the same but now many more options are available through the new mob() function. The returned model object is now inheriting from "modelparty"/"party".

o Included "grDevices" in Imports.

o Fixed model.frame() method for "betareg" objects which do not store the model frame in $model.

o betamix() gained arguments "weights" (case weights for observations) and "offset" (for the mean linear predictor).

Changes in Version 3.0-5

o The "Formula" package is now only in Imports but not Depends (see below).

o Method "FLXgetModelmatrix" for "FLXMRbeta" objects modified due to changes in flexmix 2.3.12.

Changes in Version 3.0-4

o For some datasets betareg() would just "hang" because dbeta() "hangs" for certain extreme parameter combinations (in current R versions). betareg() now tries to catches these cases in order to avoid the problem.

o Depends/Imports/Suggests have been rearranged to conform with current CRAN check policies. This is the last version of "betareg" to have the "Formula" package in Depends - from the next version onwards it will only be in Imports.

Changes in Version 3.0-3

o The predict() method gained support for type = "quantile", so that quantiles of the response distribution can be predicted.

o The "Formula" package is now not only in the list of dependencies but is also imported in the NAMESPACE, in order to facilitate importing "betareg" in other packages.

Changes in Version 3.0-2

o Avoid .Call()ing logit link functions directly, instead use elements of"logit").

Changes in Version 3.0-1

o Small consistency updates in labeling coefficients for current R-devel.

Changes in Version 3.0-0

o New release accompanying the second JSS paper: "Extended Beta Regression in R: Shaken, Stirred, Mixed, and Partitioned" by Gruen, Kosmidis, and Zeileis which appears as Journal of Statistical Software 48(11). See also citation("betareg"). The paper presents the recently introduced features: bias correction/reduction in betareg(), recursive partitioning via betatree(), and finite mixture modeling via betamix(). See also vignette("betareg-ext", package = "betareg") for the vignette version within the package.

Changes in Version 2.4-1

o Formula interface for betamix() changed to allow for three parts in the right hand side where the third part relates to the concomitant variables.

o Modified the internal structure of vignettes/tests. The original vignettes are now moved to the vignettes directory, containing also files. Similarly, an for the examples is added in the tests directory.

Changes in Version 2.4-0

o Support bias-corrected (BC) and bias-reduced (BR) maximum likelihood estimation of beta regressions. See the "type" argument of betareg(). To enable BC/BR, an additional Fisher scoring iteration was added that (by default) also enhances the usual ML results.

o New vignette("betareg-ext", package = "betareg") introducing BC/BR estimation along with the recent additions beta regression trees and latent class beta regression (aka finite mixture beta regression models).

o Enabled fitting of beta regression models without coefficients in the mean equation.

o Enabled usage of offsets in both parts of the model, i.e., one can use betareg(y ~ x + offset(o1) | z + offset(o2)) which is also equivalent to betareg(y ~ x | z + offset(o2), offset = o1), i.e., the "offset" argument of betareg is employed for the mean equation only. Consequently, betareg_object$offset is now a list with two elements (mean/precision).

o Added warning and ad-hoc workaround in the starting value selection of for the precision model. If no valid starting value can be obtained, a warning is issued and c(1, 0, ..., 0) is employed.

o Added betareg_object$nobs in the return object containing the number of observations with non-zero weights. Then nobs() can be used to extract this and consequently BIC() can be used to compute the BIC.

Changes in Version 2.3-0

o New betatree() function for beta regression trees based on model-based recursive partitioning. betatree() leverages the mob() function from the "party" package. For enabling this plug-in, a "StatModel" constructor betaReg() is provided based on the "modeltools" package.

o New betamix() function for latent class beta regression, or finite mixture beta regression models. betamix() leverages the flexmix() function from the "flexmix" package. For enabling this plug-in, the driver FLXMRbeta() is provided.

o Added tests/vignette-betareg.R based on the models fitted in vignette("betareg", package = "betareg").

Changes in Version 2.2-3

o The "levels" element of a "betareg" object is now a list with components "mean", "precision", and "full" to match the "terms" of the object.

o Improved data handling bug in predict() method.

Changes in Version 2.2-2

o Documentation updates for ?gleverage.

Changes in Version 2.2-1

o Package now published in Journal of Statistical Software, see and citation("betareg") within R.

o Bug fix and improvements in gleverage() method for "betareg" objects: Analytic second derivatives are now used and variable dispersion models are handled correctly.

Changes in Version 2.2-0

o dbeta(..., log = TRUE) is now used for computing the log-likelihood which is numerically more stable than the previous hand-crafted version.

o The starting values in the dispersion regression are now chosen differently, resulting in a somewhat more robust specification of starting values. The intercept is computed as described in Ferrari & Cribari-Neto (2004), plus a link transformation (if any). All further parameters (if any) are initially set to zero. See also the vignette for details.

o Various documentation improvements, especially in the vignette.

Changes in Version 2.1-2

o New vignette (written by Francisco Cribari-Neto and Z)
introducing the package and replicating a range of publications related to beta regression: vignette("betareg", package = "betareg") provides some theoretical background, a discussion of the implementation and several hands-on examples.

o Implemented an optional precision model, yielding variable dispersion. The precision parameter phi may depend on a linear predictor, as suggested by Simas, Barreto-Souza, and Rocha (2010). In single part formulas of type y ~ x1 + x2, phi is by default assumed to be constant, i.e., an intercept plus identity link. But it can be extended to y ~ x1 + x2 | z1 + z2 where phi depends on z1 + z2, by default through a log link.

o Allowed all link functions (in mean model) that are available in for binary responses, and added log-log link.

o Added data and replication code for Smithson & Verkuilen (2006, Psychological Methods). See ?ReadingSkills, ?MockJurors, ?StressAnxiety as well as the complete replication code in demo("SmithsonVerkuilen2006").

o Default in residuals() (as well as in the related plot() and summary() components) is now to use standardized weighted residuals 2 (type = "sweighted2").

Changes in Version 2.0-0

o Package "betareg" was orphaned on CRAN, Z took over as maintainer, ended up re-writing the whole package. The package still provides all functionality as before but the interface is not fully backward-compatible.

o betareg(): more standard formula-interface arguments; "betareg" objects do not inherit from "lm" anymore.

o renamed from, enhanced interface with more arguments and returned information. Untested support of weighted regressions is enabled.

o betareg.control(): new function encapsulating control of optim(), slightly modified default values.

o anova() method was removed, use lrtest() from "lmtest" package instead.

o gen.lev.betareg() was changed to gleverage() method (with new generic) and a bug in the method was fixed.

o envelope.beta() was removed and is now included in plot() method for "betareg" objects.

o Datasets "prater" and "pratergrouped" were incorporated into a single "GasolineYield" dataset.

o New data set "FoodExpenditure" from Griffiths et al. (1993), replicating second application from Ferrari and Cribari-Neto (2004).


o The residuals() method now has three further types of residuals suggested by Espinheira et al. (2008) who recommend to use "standardized weighted residuals 2" (type = "sweighted2"). The default are Pearson (aka standardized) residuals.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


3.1-1 by Achim Zeileis, 5 months ago

Browse source code at

Authors: Achim Zeileis [aut, cre] , Francisco Cribari-Neto [aut] , Bettina Gruen [aut] , Ioannis Kosmidis [aut] , Alexandre B. Simas [ctb] (earlier version by) , Andrea V. Rocha [ctb] (earlier version by)

Documentation:   PDF Manual  

Task views: Econometrics, Psychometric Models and Methods, Statistics for the Social Sciences

GPL-2 | GPL-3 license

Imports graphics, grDevices, methods, stats, flexmix, Formula, lmtest, modeltools, sandwich

Suggests car, lattice, partykit, strucchange

Imported by earlygating, gcmr, opticut, plsRbeta, vortexR.

Depended on by SetMethods, biasbetareg, mfx.

Suggested by AICcmodavg, DeclareDesign, agridat, betaboost, broom, effects, mi, rstanarm.

Enhanced by MuMIn, margins, prediction, stargazer, texreg.

See at CRAN