Type: | Package |
Title: | Interactive Interpretation of Linear Regression Models |
Version: | 0.3-4 |
Date: | 2025-04-20 |
Description: | Interactive visualization of effects, response functions and marginal effects for different kinds of regression models. In this version linear regression models, generalized linear models, generalized additive models and linear mixed-effects models are supported. Major features are the interactive approach and the handling of the effects of categorical covariates: if two or more factors are used as covariates every combination of the levels of each factor is treated separately. The automatic calculation of marginal effects and a number of possibilities to customize the graphical output are useful features as well. |
License: | GPL-2 |
Depends: | R (≥ 3.0.0), rpanel (≥ 1.1-4), xtable |
Suggests: | AER, gam, mgcv, nlme |
NeedsCompilation: | no |
Packaged: | 2025-04-21 08:18:35 UTC; marti |
Author: | Martin Meermeyer [aut, cre] |
Maintainer: | Martin Meermeyer <m.meermeyer@gmail.com> |
Repository: | CRAN |
Date/Publication: | 2025-04-21 08:30:07 UTC |
Interactive Interpretation of Linear Regression Models
Description
The implementation is based on the package rpanel and provides an interactive visualization of effects, response functions and marginal effects for different kinds of regression models. Major features are the interactive approach and the handling of the effects of categorical covariates: if two or more factors are used as covariates every combination of the levels of each factor (referred to as groups) is treated separately. The automatic calculation of marginal effects and a number of possibilities to customize the graphical output are useful features as well. In the accompanying vignette the usage is described in detail. Please refer to the documentation of the generic function fxInteractive
for available methods.
Details
Package: | LinRegInteractive |
Type: | Package |
Version: | 0.3-4 |
Date: | 2025-04-20 |
License: | GPL-2 |
Author(s)
Martin Meermeyer m.meermeyer@gmail.com
References
Bowman, A., Crawford, E., Alexander, G., and Bowman, R. (2007). rpanel: Simple interactive controls for R functions using the tcltk package. Journal of Statistical Software, 17(9), 1-18.
See Also
The noninteractive visualization of the results for various types of regression models can be achieved with the package effects.
Examples
## Not run:
### Metric dependent variable ###
data("munichrent03")
model.rent <- lm(rent ~ yearc + I(yearc^2) + rooms + area*location + upkitchen,
data=munichrent03)
fxInteractive(model.rent)
### Binary dependent variable ###
data("creditdata")
model.cd <- glm(credit ~ amount + I(amount^2) + age + duration*teleph + housing,
family=binomial, data=creditdata)
fxInteractive(model.cd)
## End(Not run)
Credit Default Data
Description
Stratified sample of 1,000 credit receivers (in the following cr) from a private bank in southern Germany. The data were sampled at the end of the 1970s, therefore the credit amount is given in DEM (1.95583 DEM = 1 EUR).
Usage
data("creditdata")
Format
A data frame with 1,000 observations on the following 21 variables.
credit
Factor with levels "
good
" (no problems occur in redemption) and "bad
" (problems occur in redemption).amount
Credit amount in DEM (numeric).
duration
Duration of lent term in months (numeric).
age
Age of the cr in years (numeric).
addcredit
Has the cr additional credits at other vendors? Ordered factor with levels "
none
" (no additional credits), "bank
" (at other banks) and "bargain
" (at other vendors than banks).asset
Most valuable asset of the cr. Ordered factor with levels "
none
" (no valuable assets), "car
" (car), "savings
" (savings) and "prop
" (freehold property).bail
Bailsman available? Ordered factor with levels "
none
" (no bailsmen), "applicant
" (bailsman is additional applicant for the credit) and "yes
" (external bailsman).curacc
Current account of the cr. Ordered factor with levels "
none
" (no account), "debit
" (account with dedit balance), "credit
" (account with credit balance) and "wage
" (account with periodical income).empldur
Duration of employment of the cr at the current employer. Ordered factor with levels "
none
" (unemployed), "max1y
" (less than 1 year), "max4y
" (between 1 and 4 years), "max7y
" (between 4 and 7 years) and "min7y
" (more than 7 years).housdur
For which period does the cr lives in current housing? Ordered factor with levels "
max1y
" (less than 1 year), "max4y
" (between 1 and 4 years), "max7y
" (between 4 and 7 years) and "min7y
" (more than 7 years).housing
Accommodation of the cr. Ordered factor with levels "
social
" (social accommodation), "rent
" (rented accommodation) and "freehold
" (freehold accommodation).immigrant
Factor: Is the cr an immigrant?
installment
Monthly installment in % of disposable income. Ordered factor with levels "
max20
" (installment is less than 20% of disposable income), "max25
" (installment is more than 20% and less than 25% of disposable income), "max35
" (installment is more than 25% and less than 35% of disposable income) and "min35
" (installment is more than 35% of disposable income).intuse
Intended usage for the credit. Factor with levels "
car-new
" (buy a new car), "car-old
" (buy an used car), "fittings
" (buy fittings), "hifi
" (buy radio or TV), "holiday
" (pay a holiday), "househ
" (buy new household items), "misc
" (miscellaneous activities), "qualif
" (pay a new qualification), "repair
" (repair something) and "retrain
" (pay a retrain).job
Employment status of the cr. Ordered factor with levels "
none
" (unemployed), "unskilled
" (unskilled worker), "medium
" (intermediate position) and "higher
" (leading position).martsex
Martial status and sex of the cr. Factor with levels "
f-div-m-sing
" (female-divorced and male-single), "f-sing
" (female-single), "m-div
" (male-divorced) and "m-mar
" (male-married).moral
Payment moral of the cr. Factor with levels "
alright
" (no problems with credits in the past at the bank), "critical
" (further credits at other banks or problems with account management), "none
" (no credits previously or fully paid back), "yetalright
" (no problems with current credits at the bank so far) and "problems
" (problems with credits in the past).pers
Number of persons who are entitled to maintenance from cr. Ordered factor with levels "
max2
" (up to 2) and "min3
" (more than 2).prevcred
Number of previous credits of the cr at the bank (including the actual). Ordered factor with levels "
max1
" (1 credit), "max3
" (between 2 and 3), "max5
" (between 4 and 5) and "min6
" (6 or more).savacc
Savings account of the cr. Ordered factor with levels "
none
" (no savings account), "max1h
" (savings account with a balance up to 100 DEM), "max5h
" (savings account with a balance between 100 DEM and 500 DEM), "max1t
" (savings account with a balance between 500 DEM and 1.000 DEM) and "min1t
" (savings account with a balance greater than 1,000 DEM).teleph
Factor: Has the cr a landline?
Source
References
Fahrmeir, L., Hamerle, A., Tutz, G. (1996): Multivariate statistische Verfahren, 2nd edition. Berlin: de Gruyter. 390 ff.
Fahrmeir, L., Kneib, T., Lang, S., Marx, B. (2013): Regression: Models, Methods and Applications. Berlin: Springer.
Open Data LMU (2010): Kreditscoring zur Klassifikation von Kreditnehmern.
Examples
data("creditdata")
print(summary(creditdata))
par(ask=TRUE)
plot(credit ~ amount, data=creditdata)
plot(credit ~ duration, data=creditdata)
plot(credit ~ age, data=creditdata)
plot(credit ~ housing, data=creditdata)
plot(credit ~ intuse, data=creditdata)
plot(credit ~ teleph, data=creditdata)
par(ask=FALSE)
Combine Levels of Different Factors to Groups
Description
All levels of the factors from a data.frame
provided are combined, each combination of factor levels is referred to as group.
Usage
factorCombinations(X, factor.sep = "|", level.sep = ".", count=TRUE)
Arguments
X |
A |
factor.sep |
Character by which the factor-factor level combinations are separated in the group names. |
level.sep |
Character by which the level names are separated from the corresponding factor names in the group names. |
count |
Should the occurences of the different groups in the |
Value
A list with the following components:
combinations |
A data frame containing every combination of factor levels (groups) for the factors provided. |
names |
A character vector with the names of the groups. Factor-factor level combinations are separated by |
counts |
If |
Note
Function is mainly for internal use in LinRegInteractive but may be useful for other purposes as well.
Examples
# multiple factors
data("CO2")
print(factorCombinations(CO2))
# single factor
data("chickwts")
print(factorCombinations(chickwts))
Interactive Interpretation of Linear Regression Models
Description
fxInteractive
is a generic function for the interactive visualization of the results of various types of regression models. Originally the function was developed to translate proposals for the interpretation of models for binary outcomes made by Hoetker (2007) into practice. The function invokes particular methods for different kinds of fitted-model objects, see the list of available methods in the details. The implementation is based on the package rpanel. Major features are the interactive approach and the handling of the effects of categorical covariates: if two or more factors are used as covariates every combination of the levels of each factor (referred to as groups) is treated separately. The automatic calculation of marginal effects and a number of possibilities to customize the graphical output are useful features as well. In the accompanying vignette the usage is described in detail.
Usage
fxInteractive(model, ...)
Arguments
model |
An appropriate fitted-model object (mandatory), see details. |
... |
Additional arguments for different aspects of usage, visualization and output. See the documentation of the corresponding methods for details. |
Details
The only mandatory argument of the function is an appropriate fitted-model object. In this package version methods for the following regression models are available:
Generalized linear models fitted with
glm
. Theglm
-method also works for generalized additive models fitted withgam
(package gam and mgcv).Multiple linear regression models fitted with
lm
.
For the fitted-model objects the following prerequisites must be met:
The model must contain at least one metric covariate.
The model must be specified with the formula interface and the data frame containing the variables must be passed with the
data
argument.The categorical variables must be
factor
s (ordered or unordered).
The basic idea of the function is the interactive usage. It is nevertheless easy to reproduce the plots for publication purposes, refer to section 5 of the vignette for this.
Users of the IDE RStudio may need to change the graphic device with options(device = "x11")
before calling the function because in current versions of RStudio multiple graphic devices occasionally do not work.
Value
The default method just returns a notice. For supported fitted-model objects no object is returned. By calling the function usually a menu appears from which a metric covariate employed in the model must be selected. After choosing the covariate a graphic device which contains a termplot of the selected metric covariate and a GUI-panel to manipulate the plot will be opened. The GUI-panel has the following elements:
A slider for each metric covariate.
A radiobox to select the type of the current display (effect, response (if appropriate) and marginal effect).
A checkbox to select the factor combinations (groups) to be displayed.
A button to print tables of output to the console, see below.
The appearance of the panel can be controlled by a number of arguments, see section 6.4 of the vignette for details.
When the button is clicked four tables are printed to the console:
Table of coefficients obtained by the
summary
-method.Table of the chosen values of the metric covariates and their ECDF-values in the dataset.
Table of the link and response function at the chosen values of the metric covariates for each group.
Table of marginal effects for each metric covariate at the chosen values of the metric covariates for each group.
By setting the argument latex2console
to TRUE
(see the documentation of the methods) the latter three tables are printed as LaTeX-code using functions provided by the package xtable (Dahl, 2012), see section 4 of the vignette for details.
The format of the text output and the layout of the plots can be controlled to a large extent, see section 6.1, 6.2 and 6.3 of the vignette for details.
The code to save plots in a platform independent way is adopted from the program archive accompanying Kruschke (2014) (URL: http://rpubs.com/NMA/9704).
Author(s)
Martin Meermeyer m.meermeyer@gmail.com
References
Bowman, A., Crawford, E., Alexander, G., and Bowman, R. (2007). rpanel: Simple interactive controls for R functions using the tcltk package. Journal of Statistical Software, 17(9), 1-18.
Dahl, D. B. (2014). xtable: Export tables to LaTeX or HTML. R package version 1.7-4.
Hoetker, G. (2007). The use of logit and probit models in strategic management research: Critical issues. Strategic Management Journal, 28(4), 331-343.
Kruschke, J. K. (2014). Doing Bayesian Data Analysis: A Tutorial with R, JAGS, and Stan, 2nd edition. Waltham (MA): Elsevier (Academic Press).
See Also
fxInteractive.glm
is the corresponding method for generalized linear models fitted with glm
.
fxInteractive.lm
is the corresponding method for multiple linear regression models fitted with lm
.
fxInteractive.lme
is the corresponding method for linear mixed-effects models fitted with lme
(package nlme).
The noninteractive visualization of the results for various types of regression models can be achieved with the package effects.
Interactive Interpretation of Generalized Linear Models
Description
This method implements proposals for the interpretation of models for binary outcomes made by Hoetker (2007) but works for other types of generalized linear models as well. The method is also suitable for generalized additive models fitted with gam
(package gam and mgcv).
Usage
## S3 method for class 'glm'
fxInteractive(model, initial.values = as.list(NULL),
preselect.var = NA, preselect.type = "link", preselect.groups = NULL,
dev.height = 18, dev.width = 18, dev.width.legend = 8, dev.pointsize = 10,
dev.defined = FALSE, ylim = NA, col = NA, lty = 1, lwd = 1,
main = NA, main.line = 1.5, xlab = NA, ylab = NA,
legend.add = TRUE, legend.space = legend.add, legend.only = FALSE,
legend.pos = "center", legend.cex = 1, legend.width.factor = 1,
rug.ticksize = 0.02, rug.col = "black", vline.actual = TRUE,
pos.hlines = c(0, 0.5, 0), n.effects = 100,
autosave.plot = FALSE, snapshot.plot = FALSE,
graphics.filename = "LinRegIntPlot", graphics.numbering = !autosave.plot,
graphics.type = "pdf", factor.sep = "|", level.sep = ".",
latex2console = FALSE, xtable.big.mark = ".", xtable.decimal.mark = ",",
xtable.digits = NULL, xtable.display = NULL, xtable.booktabs = FALSE,
panel.title = "Generalized Linear Model", label.button = "Snapshot",
label.slider.act = "Variable displayed: ", label.box.type = "Type",
label.types = c("linear predictor", "response", "marginal effect"),
label.box.groups = "Groups",
slider.width = 200, slider.height = 60, button.height = 30,
box.type.height = 100, box.group.character.width = 7,
box.group.line.height = 28, dist.obj.width = 20,
dist.obj.height = 10, ...)
Arguments
model |
Object of class |
initial.values |
Initial values for the metric covariates in a named list, default to the means. See section 4 of the vignette and examples below. |
preselect.var |
Name of continuous variable to be displayed as character or |
preselect.type |
The type of the initial plot to be displayed. Must be one of the values |
preselect.groups |
Numeric vector with the index of the groups which are displayed in the initial plot. If |
dev.height |
Height of graphic device in cm, default to |
dev.width |
Width of plot area in graphic device in cm, default to |
dev.width.legend |
Width of legend area in graphic device in cm, default to |
dev.pointsize |
Character pointsize of graphic device, default to |
dev.defined |
Graphic device predefined? Default to |
ylim |
With a numeric vector of length 2 the plot limits in y-direction can be set. If NA (the default) these are determined automatically. |
col |
Vector of color specifications to represent different groups. Passed to the line commands and the legend. Actual palette and consecutive sequence if |
lty |
Vector of line type specifications to represent different groups. Passed to the line commands and the legend, default to solid lines. |
lwd |
Vector of line width specifications to represent different groups. Passed to the line commands and the legend, default to |
main |
Title for the plot, default to |
main.line |
Height for plot title in lines which is passed to title(), default to 1.5. |
xlab |
Label for the x-axis. Name of the selected covariate, if |
ylab |
Label for the y-axis. Name of the selected plot type (see argument |
legend.add |
Should a legend be added to the plot? Default to |
legend.space |
Should the space for the legend be reserved? Default to the value of |
legend.only |
Should just the legend be plotted? Default to |
legend.pos |
Position of the legend as character, see |
legend.cex |
Relative size of legend text. Can be reduced if the model contains many groups. Default to |
legend.width.factor |
Factor by which the width of the legend is increased. Default to |
rug.ticksize |
Length of rugplot tickmarks, dafault to |
rug.col |
Color of rugplot tickmarks, default to |
vline.actual |
Add vertical line at actual position of selected metric covariate? Default to |
pos.hlines |
Positions of the horizontal lines for [1] the plot of the link function, [2] the plot of the response and [3] the plot of marginal effects. |
n.effects |
Number of equally spaced points over the span of the selected metric covariate to calculate the effects for plotting, default to |
autosave.plot |
Directly save the initial plot? Default to |
snapshot.plot |
Save plot when snapshot button is pressed? Default to |
graphics.filename |
Filename (optionally including a path) as character for graphic file. |
graphics.numbering |
If |
graphics.type |
Graphics file type argument, default to |
factor.sep |
Character separating the factor-factor level combinations in the group names (default to |
level.sep |
Character separating the factor name and the corresponding factor levels in the group names (default to |
latex2console |
Should the textoutput triggered by the snapshot button be printed as LaTeX-code? Default to |
xtable.big.mark |
Bigmark character for LaTeX output passed to |
xtable.decimal.mark |
Decimal character for LaTeX output passed to |
xtable.digits |
Number of digits for LaTeX output passed to |
xtable.display |
Display style for LaTeX output passed to |
xtable.booktabs |
Use the LaTeX package |
panel.title |
Title used in the title bar of the GUI-panel of type |
label.button |
Label for the snapshot-button of type |
label.slider.act |
Additional label for the slider of the selected metric covariate of type |
label.box.type |
Title for the radiogroup box of type |
label.types |
Labels for radiogroup buttons ( |
label.box.groups |
Title for the checkbox of type |
slider.width |
Width of each slider in points (default to |
slider.height |
Height of each slider in points (default to |
button.height |
Height of snapshot button in points (default to |
box.type.height |
Height of radiobox for type selection in points (default to |
box.group.character.width |
The width of the boxes is basically a this value times the number of characters in points (default to |
box.group.line.height |
The height of the checkbox is this value times the number of groups in points (default to |
dist.obj.width |
Vertical distance between sliders and boxes and vertical margins in points (default to |
dist.obj.height |
Horizontal distance between panel objects in points (default to |
... |
Other graphical parameters passed to |
Details
The only mandatory argument of the function is a fitted-model object of class glm
. For this object the following prerequisites must be met:
The model must contain at least one metric covariate.
The model must be specified with the formula interface and the data frame containing the variables must be passed with the
data
argument.The categorical variables must be
factor
s (ordered or unordered).
Please refer to the documentation of fxInteractive
or the vignette for more details.
Value
No object is returned, please refer to the documentation of fxInteractive
or the vignette for more details.
Author(s)
Martin Meermeyer m.meermeyer@gmail.com
References
Hoetker, G. (2007). The use of logit and probit models in strategic management research: Critical issues. Strategic Management Journal, 28(4), 331-343.
Kleiber, C., Zeileis, A. (2008). Applied Econometrics with R. New York: Springer.
Examples
### Model specification ###
data("creditdata")
## Treat ordered factors as unordered factors.
options(contrasts=c("contr.treatment","contr.treatment"))
model.cd <- glm(credit ~ amount + I(amount^2) + age + duration*teleph + housing,
family=binomial, data=creditdata)
## Not run:
### Basic usage ###
## RStudio users may need to change the graphic device, see details.
options(device = "x11")
## Using defaults
fxInteractive(model.cd)
## Switch text output to LaTeX
fxInteractive(model.cd, latex2console = TRUE)
## Continental European number format in LaTeX output
fxInteractive(model.cd, latex2console = TRUE, decimal.mark = ",", big.mark = ".")
## Save plot as PDF to current working directory when 'Snapshot' is clicked
fxInteractive(model.cd, snapshot.plot = TRUE)
## Change color scheme and line types
fxInteractive(model.cd, col = rep(c(2,4),each = 3), lty = c(1,3,5))
## Change separation characters
fxInteractive(model.cd, factor.sep = "-", level.sep = ">")
## Suppress legend
fxInteractive(model.cd, legend.add = FALSE)
## Suppress rug plot
fxInteractive(model.cd, rug.ticksize = NA)
## Set initial values of metric covatiates
fxInteractive(model.cd, initial.values = list(amount=5000, age=30, duration=24))
## Preselect covariate, plot type and groups
fxInteractive(model.cd, preselect.var = "duration", preselect.type = "response",
preselect.groups = c(2,5))
## Preselect covariate and plot type and change axis annotations
fxInteractive(model.cd, preselect.var = "duration", preselect.type = "response",
xlab = "duration (months)", ylab = "probability of credit default")
### Visualization of statistical concepts ###
## Nonparametric effect
require("splines")
model.cd.bs <- glm(credit ~ bs(amount) + age + duration*teleph + housing,
family = binomial, data = creditdata)
fxInteractive(model.cd.bs, preselect.var = "amount")
## Generalized additive model
require("mgcv")
model.cd.mgcv <- gam(credit ~ s(amount) + age + duration*teleph + housing,
family = binomial, data = creditdata)
fxInteractive(model.cd.mgcv)
## Interaction effect (directly)
fxInteractive(model.cd, preselect.var = "duration")
## Interaction effect (indirectly)
fxInteractive(model.cd, preselect.var = "age")
# manipulate slider for 'duration'
## Quasi-complete separation
# example from Kleiber, Zeileis (2008), p. 130ff
require("AER")
data("MurderRates")
model.mr <- glm(I(executions > 0) ~ time + income + noncauc + lfp + southern,
family = binomial, data = MurderRates)
fxInteractive(model.mr, preselect.var = "income", preselect.type = "response")
### Additional examples ###
## Customize device for printing
fxInteractive(model.cd,
dev.width = 6,
dev.width.legend = 4,
dev.height = 6,
dev.pointsize = 6,
col = c("darkred","red","salmon","darkblue","blue","lightblue"),
legend.width.factor = 1.1,
vline.actual = FALSE,
snapshot.plot = TRUE,
graphics.filename = "creddefault-termplot",
mar = c(2.5,2.5,1,1)+0.1,
mgp = c(1.5,0.5,0),
tcl = -0.3)
## Save predefined plot automatically
fxInteractive(model.cd,
initial.values = list(amount=5000, duration=24, age=30),
preselect.var = "duration",
preselect.type = "link",
autosave.plot = TRUE,
graphics.filename = "fig-creddefault-duration-link",
legend.width.factor = 1.05)
## Modifications for models with many groups
# Increase space for legend and squeeze panel controls
model.cd.moregroups <- glm(credit ~ amount + I(amount^2) + age
+ duration*teleph + housing + job, family = binomial, data = creditdata)
fxInteractive(model.cd.moregroups,
dev.width.legend = 9,
legend.cex = 1,
box.type.height = 90,
box.group.character.width = 6,
box.group.line.height = 25,
dist.obj.height = 2)
# Squeeze legend and panel controls
model.cd.manygroups <- glm(credit ~ amount + I(amount^2) + age
+ duration*teleph + housing + intuse, family = binomial, data = creditdata)
fxInteractive(model.cd.manygroups,
dev.width.legend = 6,
legend.cex = 0.54,
box.type.height = 90,
box.group.character.width = 6,
box.group.line.height = 25,
dist.obj.height = 2)
# Note that checkbox for groups grows beyond screen
# Preselect groups and specifiy color and line types directly
model.cd.manygroups <- glm(credit ~ amount + I(amount^2) + age
+ duration*teleph + housing + intuse, family = binomial, data = creditdata)
index.groups <- c(1,11,21,31,41,51)
vec.col <- NULL
vec.col[index.groups] <- c(1:6)
vec.lty <- NULL
vec.lty[index.groups] <- rep(c(1,2), each = 3)
fxInteractive(model.cd.manygroups,
preselect.var = "amount",
preselect.groups = index.groups,
col = vec.col,
lty = vec.lty)
## End(Not run)
Interactive Interpretation of Multiple Linear Regression Models
Description
This method facilitates the interpretation of multiple linear regression models and is a byproduct of the method fxInteractive.glm
for generalized linear models.
Usage
## S3 method for class 'lm'
fxInteractive(model, initial.values = as.list(NULL),
preselect.var = NA, preselect.type = "effect", preselect.groups = NULL,
dev.height = 18, dev.width = 18, dev.width.legend = 8, dev.pointsize = 10,
dev.defined = FALSE, ylim = NA, col = NA, lty = 1, lwd = 1,
main = NA, main.line = 1.5, xlab = NA, ylab = NA,
legend.add = TRUE, legend.space = legend.add, legend.only = FALSE,
legend.pos = "center", legend.cex = 1, legend.width.factor = 1,
rug.ticksize = 0.02, rug.col = "black", vline.actual = TRUE,
pos.hlines = c(0, 0), n.effects = 100,
autosave.plot = FALSE, snapshot.plot = FALSE,
graphics.filename = "LinRegIntPlot", graphics.numbering = !autosave.plot,
graphics.type = "pdf", factor.sep = "|", level.sep = ".",
latex2console = FALSE, xtable.big.mark = ".", xtable.decimal.mark = ",",
xtable.digits = NULL, xtable.display = NULL, xtable.booktabs = FALSE,
panel.title = "Linear Model", label.button = "Snapshot",
label.slider.act = "Variable displayed: ", label.box.type = "Type",
label.types = c("effect", "marginal effect"),
label.box.groups = "Groups",
slider.width = 200, slider.height = 60, button.height = 30,
box.type.height = 75, box.group.character.width = 7,
box.group.line.height = 28, dist.obj.width = 20,
dist.obj.height = 10, ...)
Arguments
model |
Object of class |
initial.values |
Initial values for the metric covariates in a named list, default to the means. See section 4 of the vignette and examples below. |
preselect.var |
Name of continuous variable to be displayed as character or |
preselect.type |
The type of the initial plot to be displayed. Must be one of the values |
preselect.groups |
Numeric vector with the index of the groups which are displayed in the initial plot. If |
dev.height |
Height of graphic device in cm, default to |
dev.width |
Width of plot area in graphic device in cm, default to |
dev.width.legend |
Width of legend area in graphic device in cm, default to |
dev.pointsize |
Character pointsize of graphic device, default to |
dev.defined |
Graphic device predefined? Default to |
ylim |
With a numeric vector of length 2 the plot limits in y-direction can be set. If NA (the default) these are determined automatically. |
col |
Vector of color specifications to represent different groups. Passed to the line commands and the legend. Actual palette and consecutive sequence if |
lty |
Vector of line type specifications to represent different groups. Passed to the line commands and the legend, default to solid lines. |
lwd |
Vector of line width specifications to represent different groups. Passed to the line commands and the legend, default to |
main |
Title for the plot, default to |
main.line |
Height for plot title in lines which is passed to title(), default to 1.5. |
xlab |
Label for the x-axis. Name of the selected covariate, if |
ylab |
Label for the y-axis. Name of the selected plot type (see argument |
legend.add |
Should a legend be added to the plot? Default to |
legend.space |
Should the space for the legend be reserved? Default to the value of |
legend.only |
Should just the legend be plotted? Default to |
legend.pos |
Position of the legend as character, see |
legend.cex |
Relative size of legend text. Can be reduced if the model contains many groups. Default to |
legend.width.factor |
Factor by which the width of the legend is increased. Default to |
rug.ticksize |
Length of rugplot tickmarks, dafault to |
rug.col |
Color of rugplot tickmarks, default to |
vline.actual |
Add vertical line at actual position of selected metric covariate? Default to |
pos.hlines |
Positions of the horizontal lines for [1] the plot of the effects and [2] the plot of marginal effects. |
n.effects |
Number of equally spaced points over the span of the selected metric covariate to calculate the effects for plotting, default to |
autosave.plot |
Directly save the initial plot? Default to |
snapshot.plot |
Save plot when snapshot button is pressed? Default to |
graphics.filename |
Filename (optionally including a path) as character for graphic file. |
graphics.numbering |
If |
graphics.type |
Graphics file type argument, default to |
factor.sep |
Character separating the factor-factor level combinations in the group names (default to |
level.sep |
Character separating the factor name and the corresponding factor levels in the group names (default to |
latex2console |
Should the textoutput triggered by the snapshot button be printed as LaTeX-code? Default to |
xtable.big.mark |
Bigmark character for LaTeX output passed to |
xtable.decimal.mark |
Decimal character for LaTeX output passed to |
xtable.digits |
Number of digits for LaTeX output passed to |
xtable.display |
Display style for LaTeX output passed to |
xtable.booktabs |
Use the LaTeX package |
panel.title |
Title used in the title bar of the GUI-panel of type |
label.button |
Label for the snapshot-button of type |
label.slider.act |
Additional label for the slider of the selected metric covariate of type |
label.box.type |
Title for the radiogroup box of type |
label.types |
Labels for radiogroup buttons ( |
label.box.groups |
Title for the checkbox of type |
slider.width |
Width of each slider in points (default to |
slider.height |
Height of each slider in points (default to |
button.height |
Height of snapshot button in points (default to |
box.type.height |
Height of radiobox for type selection in points (default to |
box.group.character.width |
The width of the boxes is basically a this value times the number of characters in points (default to |
box.group.line.height |
The height of the checkbox is this value times the number of groups in points (default to |
dist.obj.width |
Vertical distance between sliders and boxes and vertical margins in points (default to |
dist.obj.height |
Horizontal distance between panel objects in points (default to |
... |
Other graphical parameters passed to |
Details
The only mandatory argument of the function is a fitted-model object of class lm
. For this object the following prerequisites must be met:
The model must contain at least one metric covariate.
The model must be specified with the formula interface and the data frame containing the variables must be passed with the
data
argument.The categorical variables must be
factor
s (ordered or unordered).
Please refer to the documentation of fxInteractive
or the vignette for more details.
Value
No object is returned, please refer to the documentation of fxInteractive
or the vignette for more details.
Author(s)
Martin Meermeyer m.meermeyer@gmail.com
Examples
### Model specification ###
data("munichrent03")
## Treat ordered factors as unordered factors.
options(contrasts=c("contr.treatment","contr.treatment"))
model.rent <- lm(rent ~ yearc + I(yearc^2) + rooms + area*location + upkitchen,
data=munichrent03)
## Not run:
### Basic usage ###
## RStudio users may need to change the graphic device, see details.
options(device = "x11")
## Using defaults
fxInteractive(model.rent)
## Switch text output to LaTeX
fxInteractive(model.rent, latex2console = TRUE)
## Continental European number format in LaTeX output
fxInteractive(model.rent, latex2console = TRUE, xtable.decimal.mark = ",", xtable.big.mark = ".")
## Save plot as PDF to current working directory when 'Snapshot' is clicked
fxInteractive(model.rent, snapshot.plot = TRUE)
## Change color scheme and line types
fxInteractive(model.rent, col = rep(c(1,2,4),each = 2), lty = c(1,5))
## Change separation characters
fxInteractive(model.rent, factor.sep = "-", level.sep = ">")
## Suppress legend
fxInteractive(model.rent, legend.add = FALSE)
## Suppress rug plot
fxInteractive(model.rent, rug.ticksize = NA)
## Set initial values of metric covatiates
fxInteractive(model.rent, initial.values = list(yearc=1990, rooms=3, area=80))
## Preselect covariate, plot type and groups
fxInteractive(model.rent, preselect.var = "yearc", preselect.type = "marginal",
preselect.groups = c(2,4,6))
## Preselect covariate and plot type and change axis annotations
fxInteractive(model.rent, preselect.var = "yearc", preselect.type = "effect",
xlab = "year of construction", ylab = "net rent (EUR)")
### Visualization of statistical concepts ###
## Nonlinear effect
fxInteractive(model.rent, preselect.var = "yearc")
## Nonparametric effect
require("splines")
model.rent.bs <- lm(rent ~ bs(yearc) + rooms + area*location + upkitchen,
data = munichrent03)
model.rent.bs$data <- munichrent03
fxInteractive(model.rent.bs, preselect.var = "yearc")
# Note that the data must be attached to the fitted-model object
# afterwards, see section 7 of the vignette for details.
## Interaction effect (directly)
fxInteractive(model.rent, preselect.var = "area")
## Interaction effect (indirectly)
fxInteractive(model.rent, preselect.var = "yearc")
# manipulate slider for 'area'
### Additional examples ###
## Customize device for printing
fxInteractive(model.rent,
dev.width = 6,
dev.width.legend = 4,
dev.height = 6,
dev.pointsize = 6,
col = c("red","darkred","blue","darkblue","green","darkgreen"),
legend.width.factor = 1.1,
vline.actual = FALSE,
snapshot.plot = TRUE,
graphics.filename = "munichrent-termplot",
mar = c(2.5,2.5,1,1)+0.1,
mgp = c(1.5,0.5,0),
tcl = -0.3)
## Save predefined plot automatically
fxInteractive(model.rent,
initial.values = list(yearc=1990, rooms=3, area=80),
preselect.var = "area",
preselect.type = "marginal",
autosave.plot = TRUE,
graphics.filename = "fig-rent-area-marg",
legend.width.factor = 1.05)
## Modifications for models with many groups
# Increase space for legend and squeeze panel controls
model.rent.moregroups <- lm(rent ~ yearc + I(yearc^2) + rooms + area*location
+ upkitchen + bathtile, data = munichrent03)
fxInteractive(model.rent.moregroups,
dev.width.legend = 9,
legend.cex = 1,
box.type.height = 65,
box.group.character.width = 6,
box.group.line.height = 28,
dist.obj.height = 2)
# Squeeze legend and panel controls
model.rent.manygroups <- lm(rent ~ yearc + I(yearc^2) + rooms + area
+ district + upkitchen, data = munichrent03)
fxInteractive(model.rent.manygroups,
dev.width.legend = 6,
legend.cex = 0.65,
box.type.height = 90,
box.group.character.width = 6,
box.group.line.height = 25,
dist.obj.height=2)
# Note that checkbox for groups grows beyond screen
# Preselect groups and specifiy color and line types directly
model.rent.manygroups <- lm(rent ~ yearc + I(yearc^2) + rooms + area
+ district + upkitchen, data = munichrent03)
index.groups <- c(3,4,17,18,49,50)
vec.col <- NULL
vec.col[index.groups] <- c(1:6)
vec.lty <- NULL
vec.lty[index.groups] <- rep(c(1,2), each = 3)
fxInteractive(model.rent.manygroups,
preselect.var = "area",
preselect.groups = index.groups,
col = vec.col,
lty = vec.lty)
## End(Not run)
Interactive Interpretation of Linear Mixed-Effects Models
Description
This method facilitates the interpretation of linear mixed-effects models and is a byproduct of the method fxInteractive.glm
for generalized linear models.
Usage
## S3 method for class 'lme'
fxInteractive(model, predict.lme.level = 0, initial.values = as.list(NULL),
preselect.var = NA, preselect.type = "effect", preselect.groups = NULL,
dev.height = 18, dev.width = 18, dev.width.legend = 8, dev.pointsize = 10,
dev.defined = FALSE, ylim = NA, col = NA, lty = 1, lwd = 1,
main = NA, main.line = 1.5, xlab = NA, ylab = NA,
legend.add = TRUE, legend.space = legend.add, legend.only = FALSE,
legend.pos = "center", legend.cex = 1, legend.width.factor = 1,
rug.ticksize = 0.02, rug.col = "black", vline.actual = TRUE,
pos.hlines = c(0, 0), n.effects = 100,
autosave.plot = FALSE, snapshot.plot = FALSE,
graphics.filename = "LinRegIntPlot", graphics.numbering = !autosave.plot,
graphics.type = "pdf", factor.sep = "|", level.sep = ".",
latex2console = FALSE, xtable.big.mark = ".", xtable.decimal.mark = ",",
xtable.digits = NULL, xtable.display = NULL, xtable.booktabs = FALSE,
panel.title = "Linear Mixed-Effects Model", label.button = "Snapshot",
label.slider.act = "Variable displayed: ", label.box.type = "Type",
label.types = c("effect", "marginal effect"),
label.box.groups = "Groups",
slider.width = 200, slider.height = 60, button.height = 30,
box.type.height = 75, box.group.character.width = 7,
box.group.line.height = 28, dist.obj.width = 20,
dist.obj.height = 10, ...)
Arguments
model |
|
predict.lme.level |
Level of grouping to be displayed, passed to |
initial.values |
Initial values for the metric covariates in a named list, default to the means. See section 4 of the vignette and examples below. |
preselect.var |
Name of continuous variable to be displayed as character or |
preselect.type |
The type of the initial plot to be displayed. Must be one of the values |
preselect.groups |
Numeric vector with the index of the groups which are displayed in the initial plot. If |
dev.height |
Height of graphic device in cm, default to |
dev.width |
Width of plot area in graphic device in cm, default to |
dev.width.legend |
Width of legend area in graphic device in cm, default to |
dev.pointsize |
Character pointsize of graphic device, default to |
dev.defined |
Graphic device predefined? Default to |
ylim |
With a numeric vector of length 2 the plot limits in y-direction can be set. If NA (the default) these are determined automatically. |
col |
Vector of color specifications to represent different groups. Passed to the line commands and the legend. Actual palette and consecutive sequence if |
lty |
Vector of line type specifications to represent different groups. Passed to the line commands and the legend, default to solid lines. |
lwd |
Vector of line width specifications to represent different groups. Passed to the line commands and the legend, default to |
main |
Title for the plot, default to |
main.line |
Height for plot title in lines which is passed to title(), default to 1.5. |
xlab |
Label for the x-axis. Name of the selected covariate, if |
ylab |
Label for the y-axis. Name of the selected plot type (see argument |
legend.add |
Should a legend be added to the plot? Default to |
legend.space |
Should the space for the legend be reserved? Default to the value of |
legend.only |
Should just the legend be plotted? Default to |
legend.pos |
Position of the legend as character, see |
legend.cex |
Relative size of legend text. Can be reduced if the model contains many groups. Default to |
legend.width.factor |
Factor by which the width of the legend is increased. Default to |
rug.ticksize |
Length of rugplot tickmarks, dafault to |
rug.col |
Color of rugplot tickmarks, default to |
vline.actual |
Add vertical line at actual position of selected metric covariate? Default to |
pos.hlines |
Positions of the horizontal lines for [1] the plot of the effects and [2] the plot of marginal effects. |
n.effects |
Number of equally spaced points over the span of the selected metric covariate to calculate the effects for plotting, default to |
autosave.plot |
Directly save the initial plot? Default to |
snapshot.plot |
Save plot when snapshot button is pressed? Default to |
graphics.filename |
Filename (optionally including a path) as character for graphic file. |
graphics.numbering |
If |
graphics.type |
Graphics file type argument, default to |
factor.sep |
Character separating the factor-factor level combinations in the group names (default to |
level.sep |
Character separating the factor name and the corresponding factor levels in the group names (default to |
latex2console |
Should the textoutput triggered by the snapshot button be printed as LaTeX-code? Default to |
xtable.big.mark |
Bigmark character for LaTeX output passed to |
xtable.decimal.mark |
Decimal character for LaTeX output passed to |
xtable.digits |
Number of digits for LaTeX output passed to |
xtable.display |
Display style for LaTeX output passed to |
xtable.booktabs |
Use the LaTeX package |
panel.title |
Title used in the title bar of the GUI-panel of type |
label.button |
Label for the snapshot-button of type |
label.slider.act |
Additional label for the slider of the selected metric covariate of type |
label.box.type |
Title for the radiogroup box of type |
label.types |
Labels for radiogroup buttons ( |
label.box.groups |
Title for the checkbox of type |
slider.width |
Width of each slider in points (default to |
slider.height |
Height of each slider in points (default to |
button.height |
Height of snapshot button in points (default to |
box.type.height |
Height of radiobox for type selection in points (default to |
box.group.character.width |
The width of the boxes is basically a this value times the number of characters in points (default to |
box.group.line.height |
The height of the checkbox is this value times the number of groups in points (default to |
dist.obj.width |
Vertical distance between sliders and boxes and vertical margins in points (default to |
dist.obj.height |
Horizontal distance between panel objects in points (default to |
... |
Other graphical parameters passed to |
Details
The only mandatory argument of the function is a fitted-model object of class lme
(package nlme). For this object the following prerequisites must be met:
The model must contain at least one metric covariate.
The model must be specified with the formula interface and the data frame containing the variables must be passed with the
data
argument.The categorical variables must be
factor
s (ordered or unordered).
In this method the additional argument predict.lme.level
is responsible for the level of grouping to be displayed, see the documentation of predict.lme
.
Please refer to the documentation of fxInteractive
or the vignette for more details.
Value
No object is returned, please refer to the documentation of fxInteractive
or the vignette for more details.
Author(s)
Martin Meermeyer m.meermeyer@gmail.com
See Also
The examples in fxInteractive.glm
and fxInteractive.lm
are more elaborated and show different aspects of usage and customization which are valid for this method, too.
Examples
require("nlme")
data("Orthodont")
LMEmod <- lme(distance ~ age + Sex, data = Orthodont, random = ~ age | Subject)
## Not run:
## RStudio users may need to change the graphic device, see details.
options(device = "x11")
## Grouping level 0 is used by default.
fxInteractive(LMEmod, legend.cex=0.6)
## Display grouping level 1
fxInteractive(LMEmod, predict.lme.level=1, legend.cex=0.6)
## For individual specific factors only observable factor combinations are meaningful
# the grouping variable must be the last column
combs.count <- factorCombinations(Orthodont[,c(4,3)])$counts
combs.observed <- combs.count > 0
fxInteractive(LMEmod, predict.lme.level=1, preselect.groups=combs.observed)
## End(Not run)
Data for the Rent Index 2003 in Munich, Germany
Description
Sample of 2,053 appartments from the data collected for the preparation of the Munich rent index 2003.
Usage
data("munichrent03")
Format
A data frame with 2,053 observations on the following 12 variables.
rent
Net rent in EUR (numeric).
rentsqm
Net rent per square meter in EUR (numeric).
area
Floor area in square meters (numeric).
rooms
Number of rooms (numeric).
yearc
Year of construction (numeric).
bathextra
Factor: High quality equipment in the bathroom?
bathtile
Factor: Bathroom tiled?
cheating
Factor: Central heating available?
district
Urban district where the apartment is located. Factor with 25 levels: "
All-Umenz
" (Allach - Untermenzing), "Alt-Le
" (Altstadt - Lehel), "Au-Haid
" (Au - Haidhausen), "Au-Lo-La
" (Aubing - Lochhausen - Langwied), "BamLaim
" (Berg am Laim), "Bogenh
" (Bogenhausen), "Feld-Has
" (Feldmoching - Hasenbergl), "Had
" (Hadern), "Laim
" (Laim), "Lud-Isar
"(Ludwigsvorstadt - Isarvorstadt), "Maxvor
" (Maxvorstadt), "Mil-AmH
" (Milbertshofen - Am Hart), "Moos
" (Moosach), "Neuh-Nymp
" (Neuhausen - Nymphenburg), "Obgies
" (Obergiesing), "Pas-Obmenz
" (Pasing - Obermenzing), "Ram-Per
" (Ramersdorf - Perlach), "SchwWest
" (Schwabing West), "Schwab-Frei
" (Schwabing - Freimann), "Schwanth
" (Schwanthalerhoehe), "Send
" (Sendling), "Send-West
" (Sendling - Westpark), "Th-Ob-Fo-Fu-So
" (Thalkirchen - Obersendling - Forstenried - Fuerstenried - Solln), "Trud-Riem
" (Trudering - Riem) and "Ugies-Har
" (Untergiesing - Harlaching).location
Quality of location. Ordered factor with levels "
normal
", "good
" and "top
".upkitchen
Factor: Upscale equipment in kitchen?
wwater
Factor: Hot water supply available?
Source
References
Fahrmeir, L., Kneib, T., Lang, S., Marx, B. (2013): Regression: Models, Methods and Applications. Berlin: Springer.
Fahrmeir, L., Kuenstler, R., Pigeot, I., Tutz, G. (2004): Statistik: der Weg zur Datenanalyse, 5th edition. Berlin: Springer.
Open Data LMU (2003): Muenchner Mietspiegel 2003.
Examples
data("munichrent03")
print(summary(munichrent03))
par(ask=TRUE)
plot(munichrent03[,1:5])
plot(rentsqm ~ bathextra, data=munichrent03)
plot(rentsqm ~ bathtile, data=munichrent03)
plot(rentsqm ~ cheating, data=munichrent03)
plot(rentsqm ~ location, data=munichrent03)
plot(rentsqm ~ upkitchen, data=munichrent03)
plot(rentsqm ~ wwater, data=munichrent03)
oldpar <- par(no.readonly = TRUE)
par(las=3, mar=c(8,4,4,2)+0.1)
plot(rentsqm ~ district, xlab=NA, data=munichrent03)
par(oldpar)
par(ask=FALSE)
Wrapper Function for rp.slider
Description
Wrapper function to provide a variable name of type character
to rp.slider
.
Usage
wrapRpSlider(panel, variable, from, to, action, title=NA,
log = FALSE, showvalue = FALSE, resolution = 0,
initval = NULL, pos = NULL, horizontal = TRUE)
Arguments
See documentation of rp.slider
. The argument variable
must be of type character
here.
Value
A function call of rp.slider
which can be evaluated.
Note
Function is only for internal use in LinRegInteractive.