Title: | Interactive Interpretation of Linear Regression Models |
---|---|
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. |
Authors: | Martin Meermeyer |
Maintainer: | Martin Meermeyer <[email protected]> |
License: | GPL-2 |
Version: | 0.3-3 |
Built: | 2025-01-21 03:55:24 UTC |
Source: | https://github.com/cran/LinRegInteractive |
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.
Package: | LinRegInteractive |
Type: | Package |
Version: | 0.3-3 |
Date: | 2020-02-08 |
License: | GPL-2 |
Martin Meermeyer [email protected]
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.
The noninteractive visualization of the results for various types of regression models can be achieved with the package effects.
## 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)
## 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)
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).
data("creditdata")
data("creditdata")
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?
https://doi.org/10.5282/ubm/data.23
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.
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)
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)
All levels of the factors from a data.frame
provided are combined, each combination of factor levels is referred to as group.
factorCombinations(X, factor.sep = "|", level.sep = ".", count=TRUE)
factorCombinations(X, factor.sep = "|", level.sep = ".", count=TRUE)
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 |
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 |
Function is mainly for internal use in LinRegInteractive but may be useful for other purposes as well.
# multiple factors data("CO2") print(factorCombinations(CO2)) # single factor data("chickwts") print(factorCombinations(chickwts))
# multiple factors data("CO2") print(factorCombinations(CO2)) # single factor data("chickwts") print(factorCombinations(chickwts))
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.
fxInteractive(model, ...)
fxInteractive(model, ...)
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. |
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
. The glm
-method also works for generalized additive models fitted with gam
(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.
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).
Martin Meermeyer [email protected]
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).
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.
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).
## 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, ...)
## 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, ...)
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 |
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.
No object is returned, please refer to the documentation of fxInteractive
or the vignette for more details.
Martin Meermeyer [email protected]
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.
### 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)
### 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)
This method facilitates the interpretation of multiple linear regression models and is a byproduct of the method fxInteractive.glm
for generalized linear models.
## 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, ...)
## 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, ...)
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 |
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.
No object is returned, please refer to the documentation of fxInteractive
or the vignette for more details.
Martin Meermeyer [email protected]
### 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)
### 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)
This method facilitates the interpretation of linear mixed-effects models and is a byproduct of the method fxInteractive.glm
for generalized linear models.
## 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, ...)
## 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, ...)
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 |
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.
No object is returned, please refer to the documentation of fxInteractive
or the vignette for more details.
Martin Meermeyer [email protected]
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.
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)
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)
Sample of 2,053 appartments from the data collected for the preparation of the Munich rent index 2003.
data("munichrent03")
data("munichrent03")
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?
https://doi.org/10.5282/ubm/data.2
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.
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)
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)