Plot Marginal Effects from Linear Models

Plot marginal effects for interactions estimated from linear models.

A simple R package to plot marginal effects from interactions estimated from linear models.

Build Status CRAN Version

Continuous Term 2

The package contains one simply function: plot_me for plotting marginal effects from interactions estimated from models estimated with the lm function in base R. For example, when the second term is continuous:

# Load package
# Estimate model
states <-
m1 <- lm(Murder ~ Income * Population, data = states)
# Plot marginal effect of Income across the observed range of Population
plot_me(m1, 'Income', 'Population')

plot of chunk murder-me-example

Categorical (Factor) Term 2

When the second term in the interaction is a categorical (factor) variable then point-ranges are plotted. Note that the marginal effect is in terms of the reference category:

# Set Term 2 as a factor variable
mtcars$cyl <- factor(mtcars$cyl, 
                     labels = c('4 Cyl', '6 Cyl', '8 Cyl'))
# Estimate model
m2 <- lm(mpg ~ wt * cyl, data = mtcars)
# Plot marginal effect of Weight across the Number of Cylinders
plot_me(m2, 'wt', 'cyl')

plot of chunk cars-example

Note that point ranges will also be used if there are five or fewer fitted values.

Determining the False Positive Rate

Esarey and Sumner show that pointwise confidence intervals from marginal effect plots produce statistically significant findings at a rate that can be larger or smaller than is warrented. plot_me allows users to specify ci_type = 'fdr' to find confidence intervals that correct for overly confident marginal effects in the face of multiple comparisons. FDR stands for "False Discovery Rate". For example:

# Plot marginal effect of Income across the observed range of Population
# with false discovery rate limited confidence intervals
plot_me(m1, 'Income', 'Population', ci_type = 'fdr')

Here is the result compared with standard confidence intervals:

## t-statistic used: 2.269

plot of chunk unnamed-chunk-2

You can also use the t_statistic argument to supply custom t-statistics for creating the marginal effect confidence intervals. This is useful if you want to use a funciton like findMultiLims from the interactTest to find t-statistics that can be used to correct confidence intervals for underconfidence.

See also

The interplot package also has some of the same capabilities as plotMElm.


Version 0.1.4

  • Allow user to find false discovery rate limiting confidence intervals with the argument ci_type.

  • Allow the user to specify custom t-statistics for finding the confidence intervals.

Version 0.1.3

  • Correctly find and plot marginal effects with Term 2 is a categorical (factor) variable.

Version 0.1.2

  • Use point range when Term 2 has less than or equal to 5 values.

Version 0.1.1

  • Allow any confidence level with ci argument.

  • Return a data frame instead of a plot with plot argument.

Thanks to Vincent Arel-Bundock for both contributions.

Reference manual

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


0.1.5 by Christopher Gandrud, a month ago

Report a bug at

Browse source code at

Authors: Christopher Gandrud [aut, cre]

Documentation:   PDF Manual  

GPL (>= 3) license

Imports ggplot2, interactionTest

See at CRAN