Changelog
Source:NEWS.md
ggeffects 1.3.2
Breaking changes
 Some function arguments will be renamed, to achieve consistency across the package and across other packages where I’m involved in the development. This will be a soft transition, i.e. the old argument names will still work for some package updates.
Changes
The
typical
argument now supports a mix of functions for different variable types at which numeric or categorical covariates (nonfocal terms) are held constant.Clarification of how the
re.form
argument is set when usingtype = "random"
resp.type = "fixed"
inggpredict()
.
Bug fixes
 Fixed issue in
hypothesis_test()
for mixed models, which sometimes failed when random effects group variables were numeric, and not factors.
ggeffects 1.3.1
CRAN release: 20230905
New functions

johnson_neyman()
, to create JohnsonNeyman intervals and plots fromggeffects
objects.
Changes
Better automatic handling of offsetterms, both for predictions and generating plots with raw data. When the model formula contains an offsetterm, and the offset term is fixed at a specific value, the response variable is now automatically transformed back to the original scale, and the offsetterm is added to the predicted values. A warning is printed when model contains transformed offsetterms that are not fixed, e.g. via the
condition
argument.ggeffect()
now supportsnestedLogit
models.
Bug fixes
Fixed issue in
hypothesis_test()
, where theby
argument did not work together with thecollapse_levels
argument.Fixed issue in
plot()
method when adding raw data points for data frame that had now row names.
ggeffects 1.3.0
CRAN release: 20230821
Breaking
 To avoid confusion when adding raw data or residuals to plots, the
jitter
argument that is used to add some noice to data points to avoid overlapping now defaults toNULL
. Formerly, a small jitter was added by default, leading to confusion when data points did not match the original data.
Changes
The
plot()
method gets alabel.data
argument, to add row names to data points whenadd.data = TRUE
.tibbles
are always converted into data frames, to avoid issues.hypothesis_test()
gains aby
argument, to specify a variable that is used to group the comparisons or contrasts. This is useful for models with interaction terms.
Bug fixes
Plotting residuals did not work when model object passed to
ggpredict()
were inside a list, or when called from inside functions (scoping issues).Fixed issue where plotting raw data (i.e.
plot(..., add.data = TRUE)
) did not work when there were missing data in weight variables (i.e. when the regression model used weights).Fixes issue in
plot()
when no term was specified in the call toggpredict()
.Fixed issues with robust estimation for models of package pscl.
Fixed issues introduced by breaking changes in marginaleffects.
ggeffects 1.2.3
CRAN release: 20230611
General
Support for
nestedLogit
(nestedLogit) models.hyothesis_test()
gains ascale
argument, to explicitely modulate the scale of the contrasts or comparisons (e.g."response"
or"link"
, or"exp"
to return transformed contrasts/comparisons).hyothesis_test()
now includes the response level for models with ordinal outcomes (and alike).When
ggpredict()
is used inside functions and a name for a vector variable (passed as argument to that function) interms
is used, the variable is now correctly recognized.Partial residuals (when
plot(..., residuals = TRUE)
) now supports more linear (mixed) models, including models from package lme (such asgls()
orlme()
).For mixed models,
type = "random"
used to calculate prediction intervals that always accounted for random effects variances, leading to larger intervals. Usinginterval = "confidence"
together withtype = "random"
now allows to calculate “usual” confidence intervals for random effects. This is usefule for predictions at specific group levels of random effects (when focal terms are only fixed effects, usetype = "fixed"
for regular confidence intervals).The
vcov.fun
argument can now also be a function that returns a variancecovariance matrix.The
verbose
argument inggpredict()
andhypothesis_test()
now also toggle messages for the respectiveprint()
methods.The
print()
method forhypothesis_test()
has been revised and now provides more details for possible transformation of the scale of comparisons and contrasts.The
print()
method now shows all rows by default when the focal term is a factor. If rows are not shown in the output, a message is printed to inform the user about truncated output.A new vignette about using ggeffects in the context of an intersectional multilevel analysis of individual heterogeneity, using the MAIHDA framework.
ggeffects 1.2.2
CRAN release: 20230504
General

Added a new
[.ggeffects
function, which allows to subsetggeffects
objects in the same way as regular data frames, i.e. it is now possible to do:gge < ggpredict(model, "x1") gge[c(1:2)]

Using a name for a vector variable in
terms
now works from inside functions. E.g., you can now do:foo < function(data) { fit < lm(barthtot ~ c12hour + c172code, data = data) v < c(20, 50, 70) ggpredict(fit, terms = "c12hour [v]") } foo(efc)
The
colors
argument inplot()
can now also be applied to singlecolored plots.hyothesis_test()
gains acollapse_level
argument, to collapse term labels that refer to the same levels into a singel unique level string.
Bug fixes
Fixed issue with misplaced residuals when xaxis was categorical and the factor levels were not in alphabetical order.
pool_predictions()
now correctly handles models with transformed response variables (likelog(y)
) and returns the correct backtransformed pooled predictions (and their confidence intervals).Fixed issue with wrong computation of confidence intervals for models of class
clm
from package ordinal.Fixed failing tests due to changes in the logistf package, which now also supports emmeans. That means,
ggemmeans()
now also works for models from package logistf.Fixed bug in
plot()
when partial residuals were added (i.e.residuals = TRUE
) andcollapse.group
was provided (in case of mixed models).Fixed issue with onthefly created factors inside formulas, which were not correctly treated as factors in the
plot()
method. This bug was related to recent changes ininsight::get_data()
.Fixed issue with wrong labels in
hyothesis_test()
for comparisons with many rows, when betas starting with same digit were specified (e.g.test = "(b1b13)=(b3b15)"
).Fixed issue in
hyothesis_test()
for mixed models when focal terms included factors with factor levels that contained a comma.Fixed issue with missing confidence intervals for mixed models when one of the variable names contains white space characters (e.g.
y ~ 'x a' + xb
).
ggeffects 1.2.1
CRAN release: 20230402
Changes to functions
hypothesis_test()
gains anequivalence
argument, to compute tests of practical equivalence for contrasts and comparisons.The message whether contrasts or comparisons from
hypothesis_test()
are on the linkscale is now printed below the table.Dot arguments (
...
) inhypothesis_test()
are now passed to the functions in marginaleffects, thereby allowing to use further options in functionsmarginaleffects::predictions()
, liketransform
etc.
Bug fixes
 Fixed issues in
hypothesis_test()
for mixed models with one focal term only, and when this term was categorical.
ggeffects 1.2.0
CRAN release: 20230224
Breaking
 Confidence intervals of adjusted predictions now take the model’s degrees of freedom into account, thereby leading to slightly larger intervals for models that do not have infinite degrees of freedom (like linear models with tstatistic).
New functions
hypothesis_test()
, to compute contrasts and comparisons of predictions and test differences for statistical significance. Additionally, an accompanying vignette that explains the new function in detail is added.install_latest()
, to install the latest official package version from CRAN, or the latest development version from runiverse.An
as.data.frame()
method was added, which convertsggeffects
objects returned byggpredict()
into data frame, where standard column names are replaced by their related variable names.
General
Response values are now also backtransformed when these were transformed using
log2()
,log10()
orlog1p()
.The
terms
argument can now also be a named list. Thus, instead ofterms = c("score [30,50,70]", "status [low, middle]")
one could also writeterms = list(score = c(30,50,70), status = c("low", "middle"))
.
ggeffects 1.1.5
CRAN release: 20230125
General
Minor changes to meet forthcoming update of insight.
ggpredict()
orggemmeans()
get averbose
argument to suppress some messages and warnings when calling
ggeffects 1.1.4
CRAN release: 20221023
General
 Reduced package dependencies. Packages sjlabelled and MASS were moved from imports to suggests. ggeffects is now a very lightweight package to compute adjusted predictions and estimated marginal means.
Bug fixes
Fixed issue with wrong standard errors for predicting random effect groups for more multiple levels.
Fixed issue in
ggemmeans()
, which did not correctly averaged over character vectors when these were hold constant.Fixed bug for models of class
lme
whentype = "re"
was requested.
ggeffects 1.1.1
CRAN release: 20210729
ggeffects 1.1.0
CRAN release: 20210430
Breaking Changes
Prediction intervals (where possible, or when
type = "random"
), are now always based on sigma^2 (i.e.insight::get_sigma(model)^2
). This is in line withinterval = "prediction"
for lm, or for predictions based on simulations (whentype = "simulate"
).print()
now uses the name of the focal variable as column name (instead) of"x"
).
New function

collapse_by_group()
, to generate a data frame where the response value of the raw data is averaged over the levels of a (random effect) grouping factor.
General
A new vignette was added related to the definition and meaning of “marginal effects” and “adjusted predictions”. To be more strict and to avoid confusion with the term “marginal effect”, which meaning may vary across fields, either “marginal effects” was replaced by “adjusted predictions”, or “adjusted predictions” was added as term throughout the package’s documentation and vignettes.
Allow confidence intervals when predictions are conditioned on random effect groups (i.e. when
type = "random"
andterms
includes a random effect group factor).Predicted response values based on
simulate()
(i.e. whentype = "simulate"
) is now possible for more model classes (see?ggpredict
).ggpredict()
now computes confidence intervals for some edge cases where it previously failed (e.g. some models that do not compute standard errors for predictions, and where a factor was included in the model and not the focal term).plot()
gains acollapse.group
argument, which  in conjunction withadd.data
 averages (“collapses”) the raw data by the levels of the group factors (random effects).data_grid()
was added as more common alias fornew_data()
.
Bug fixes
ggpredict()
andplot()
for survivalmodels now always start with time = 1.Fixed issue in
print()
for survivalmodels.Fixed issue with
type = "simulate"
forglmmTMB
models.Fixed issue with
gamlss
models that hadrandom()
function in the model formula.Fixed issue with incorrect backtransformation of predictions for
geeglm
models.
ggeffects 1.0.2
CRAN release: 20210317
Breaking changes

residuals.type
argument inplot()
is deprecated. Always using"working"
residuals.
General
pretty_range()
andvalues_at()
can now also be used as function factories.plot()
gains alimit.range
argument, to limit the range of the prediction bands to the range of the data.
ggeffects 1.0.1
CRAN release: 20201214
General
 Fixed CRAN check issues.
 Added argument
interval
toggemmeans()
, to either compute confidence or prediction intervals.
ggeffects 1.0.0
CRAN release: 20201129
New functions

pool_predictions()
, to pool multipleggeffects
objects. This can be used when predicted values or estimated marginal means are calculated for models fit to multiple imputed datasets.
General
 The function
residualize_over_grid()
is now exported.  The backtransformation of the responsevariable (if these were log or square roottransformed in the model) now also works with square roottransformations and correctly handles
log1p()
andlog(mu + x)
.  Since standard errors were on the linkscale and not backtransformed for nonGaussian models, these are now no longer printed (to avoid confusion between standard errors on the linkscale and predictions and confidence intervals on the responsescale).
Bug fixes
 Fixed issue for mixed models when predictions should be conditioned on random effects variances (e.g.
type = "random"
or"zi_random"
), but random effects variances could not be calculated or were almost zero.  Fixed issue with confidence intervals for
multinom
models inggemmeans()
.  Fixed issue in
ggemmeans()
for models from nlme.  Fixed issue with
plot()
for some models inggeffect()
.  Fixed issue with computation of confidence intervals for zeroinflated models with offsetterm.
ggeffects 0.16.0
CRAN release: 20200913
Breaking changes
 Package insight since version 0.9.5 now returns the “raw” (untransformed, i.e. original) data that was used to fit the model also for logtransformed variables. Thus, exponentiation like using
terms = "predictor [exp]"
is no longer necessary.
General

plot()
now can also create partial residuals plots. There, argumentsresiduals
,residuals.type
andresiduals.line
were added to add partial residuals, the type of residuals and a possible loessfit regression line for the residual data.
Bug fixes
 The message for models with a backtransformation to the response scale (all nonGaussian models), that standard errors are still on the linkscale, did not show up for models of class
glm
since some time. Should be fixed now.  Fixed issue with
ggpredict()
andrlmerMods
models when using factors as adjusted terms.  Fixed issue with brmsmultiresponse models.
ggeffects 0.15.1
CRAN release: 20200727
Bug fixes
 Fixed issues due to latest rstanarm update.
 Fixed some issues around categorical/cumulative brms models when the outcome is numeric.
 Fixed bug with factor level ordering when plotting raw data from
ggeffect()
.
ggeffects 0.15.0
CRAN release: 20200616
Changes to functions

ggpredict()
gets a newtype
option,"zi.prob"
, to predict the zeroinflation probability (for models from pscl, glmmTMB and GLMMadaptive).  When model has logtransformed response variable and
add.data = TRUE
inplot()
, the raw data points are also transformed accordingly. 
plot()
withadd.data = TRUE
first adds the layer with raw data, then the points / lines for the marginal effects, so raw data points to not overlay the predicted values.  The
terms
argument now also accepts the name of a variable to define specific values. See vignette Marginal Effects at Specific Values.
ggeffects 0.14.2
CRAN release: 20200314
General
 ggeffects now requires glmmTMB version 1.0.0 or higher.
 Added humanreadable aliasoptions to the
type
argument.
Bug fixes
 Fixed issue when logtransformed predictors where held constant and their typical value was negative.
 Fixed issue when plotting raw data to a plot with categorical predictor in the xaxis, which had numeric factor levels that did not start at
1
.  Fixed issues for model objects that used (log) transformed
offset()
terms.
ggeffects 0.14.0
CRAN release: 20191216
General
 Reduce package dependencies.

plot(rawdata = TRUE)
now also works for objects fromggemmeans()
. 
ggpredict()
now computes confidence intervals for predictions fromgeeglm
models.  For brmsfit models with
trials()
as response variable,ggpredict()
used to choose the median value of trials were the response was hold constant. Now, you can use thecondition
argument to hold the number of trials constant at different values.  Improve
print()
.
Bug fixes
 Fixed issue with
clmm
models, when group factor in random effects was numeric.  Raw data is no longer omitted in plots when grouping variable is continuous and added raw data doesn’t numerically match the grouping levels (e.g., mean +/ one standard deviation).
 Fix CRAN check issues due to latest geepack update.
ggeffects 0.13.0
CRAN release: 20191108
New supported models

bracl
,brmultinom
(package brglm2) and models from packages bamlss and R2BayesX.
General
 Updated package dependencies.

plot()
now uses dodgeposition for raw data for categorical xaxis, to align raw data points with points and error bars geoms from predictions.  Updated and rearranged internal color palette, especially to have a better behaviour when selecting colors from continuous palettes (see
show_pals()
).
New functions
 Added a
vcov()
function to calculate variancecovariance matrix for marginal effects.
Changes to Functions

ggemmeans()
now also acceptstype = "re"
andtype = "re.zi"
, to add random effects variances to prediction intervals for mixed models.  The ellipsesargument
...
is now passed down to thepredict()
method for gamlssobjects, so predictions can be computed for sigma, nu and tau as well.
Bug fixes
 Fixed issue with wrong order of plot xaxis for
ggeffect()
, when one term was a character vector.
ggeffects 0.12.0
CRAN release: 20190903
Breaking Changes
 The use of
ggaverage()
is discouraged, and so it was removed.  The name
rprs_values()
is now deprecated, the function is namedvalues_at()
, and its alias isrepresentative_values()
.  The
x.as.factor
argument defaults toTRUE
.
General

ggpredict()
now supports cumulative link and ordinal vglm models from package VGAM.  More informative error message for clmmmodels when
terms
included random effects. 
add.data
is an alias for therawdata
argument inplot()
. 
ggpredict()
andggemmeans()
now also support predictions for gam models fromziplss
family.
ggeffects 0.11.0
CRAN release: 20190701
General
 Revised docs and vignettes  the use of the term average marginal effects was replaced by a less misleading wording, since the functions of ggeffects calculate marginal effects at the mean or at representative values, but not average marginal effects.
 Replace references to internal vignettes in docstrings to websitevignettes, so links on website are no longer broken.

values_at()
is an alias forrprs_values()
.
Changes to functions

ggpredict()
now supports prediction intervals for models from MCMCglmm. 
ggpredict()
gets aback.transform
argument, to tranform predicted values from logtransformed responses back to their original scale (the default behaviour), or to allow predictions to remain on logscale (new). 
ggpredict()
andggemmeans()
now can calculate marginal effects for specific values from up to three terms (i.e.terms
can be of lenght four now).  The
ci.style
argument fromplot()
now also applies to error bars for categorical variables on the xaxis.
ggeffects 0.10.0
CRAN release: 20190513
General
 Better support, including confidence intervals, for some of the already supported model types.
 New packagevignette Logistic Mixed Effects Model with Interaction Term.
New supported models

gamlss
,geeglm
(package geepack),lmrob
andglmrob
(package robustbase),ols
(package rms),rlmer
(package robustlmm),rq
andrqss
(package quantreg),tobit
(package AER),survreg
(package survival)
Changes to functions
 The steps for specifying a range of values (e.g.
terms = "predictor [1:10]"
) can now be changed withby
, e.g.terms = "predictor [1:10 by=.5]"
(see also vignette Marginal Effects at Specific Values).  Robust standard errors for predictions (see argument
vcov.fun
inggpredict()
) now also works for following modelobjects:coxph
,plm
,polr
(and probably alsolme
andgls
, not tested yet). 
ggpredict()
gets aninterval
argument, to compute prediction intervals instead of confidence intervals. 
plot.ggeffects()
now allows different horizontal and vertical jittering forrawdata
whenjitter
is a numeric vector of length two.
Bug fixes
 Models with
AsIs
conversion from division of two variables as dependent variable, e.g.I(amount/frequency)
, now should work. 
ggpredict()
failed forMixMod
objects whenci.lvl=NA
.