This function plots observed and predicted values of the response of linear (mixed) models for each coefficient and highlights the observed values according to their distance (residuals) to the predicted values. This allows to investigate how well actual and predicted values of the outcome fit across the predictor variables.

sjp.resid(fit, geom.size = 2, remove.estimates = NULL, show.lines = TRUE,
  show.resid = TRUE, show.pred = TRUE, = F, prnt.plot = TRUE)



Fitted linear (mixed) regression model (including objects of class gls or plm).


size resp. width of the geoms (bar width, line thickness or point size, depending on plot type and function). Note that bar and bin widths mostly need smaller values than dot sizes.


Character vector with coefficient names that indicate which estimates should be removed from the plot. remove.estimates = "est_name" would remove the estimate est_name. Default is NULL, i.e. all estimates are printed.


Logical, if TRUE, a line connecting predicted and residual values is plotted. Set this argument to FALSE, if plot-building is too time consuming.


Logical, if TRUE, residual values are plotted.


Logical, if TRUE, predicted values are plotted.

Logical, if TRUE, depending on type, a confidence interval or region is added to the plot. For frequency plots, the confidence interval for the relative frequencies are shown.


logical, if TRUE (default), plots the results as graph. Use FALSE if you don't want to plot any graphs. In either case, the ggplot-object will be returned as value.


(Insisibily) returns the ggplot-object with the complete plot (plot), the residual pattern (pattern) as well as the data frame that was used for setting up the ggplot-object (mydf).


The actual (observed) values have a coloured fill, while the predicted values have a solid outline without filling.


data(efc) # fit model fit <- lm(neg_c_7 ~ c12hour + e17age + e42dep, data = efc) # plot residuals for all independent variables sjp.resid(fit)
# remove some independent variables from output sjp.resid(fit, remove.estimates = c("e17age", "e42dep"))
# show pattern sjp.resid(fit, remove.estimates = c("e17age", "e42dep"))$pattern