Package 'LinRegInteractive'

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

Help Index


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-3
Date: 2020-02-08
License: GPL-2

Author(s)

Martin Meermeyer [email protected]

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

https://doi.org/10.5282/ubm/data.23

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 data.frame containing at least one factor.

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 data.frame provided be counted? Default to TRUE.

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 factor.sep and level names from the corresponding factor names by level.sep.

counts

If count is TRUE a vector indicating the number of occurences of the different groups within the data.frame provided to the function. NULL if count is set to FALSE.

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. The glm-method also works for generalized additive models fitted with gam (package gam and mgcv).

  • Multiple linear regression models fitted with lm.

  • Linear mixed-effects models fitted with lme (package nlme).

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 factors (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:

  1. Table of coefficients obtained by the summary-method.

  2. Table of the chosen values of the metric covariates and their ECDF-values in the dataset.

  3. Table of the link and response function at the chosen values of the metric covariates for each group.

  4. 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 [email protected]

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 glm (mandatory).

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 NA (default) for menu selection.

preselect.type

The type of the initial plot to be displayed. Must be one of the values "link" (default), "response" or "marginal".

preselect.groups

Numeric vector with the index of the groups which are displayed in the initial plot. If NULL (the default) all groups are displayed.

dev.height

Height of graphic device in cm, default to 18.

dev.width

Width of plot area in graphic device in cm, default to 18.

dev.width.legend

Width of legend area in graphic device in cm, default to 8.

dev.pointsize

Character pointsize of graphic device, default to 10.

dev.defined

Graphic device predefined? Default to FALSE, see section 6.3 of the vignette for usage.

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 NA (default).

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 1.

main

Title for the plot, default to NA.

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 NA (the default).

ylab

Label for the y-axis. Name of the selected plot type (see argument label.types), if NA (the default).

legend.add

Should a legend be added to the plot? Default to TRUE.

legend.space

Should the space for the legend be reserved? Default to the value of legend.add. Setting legend.add to FALSE and legend.space to TRUE plots white space instead of the legend. This can be useful when different plots are arranged in a document to ensure exact alignments and sizes, see section 6.2 of the vignette for details.

legend.only

Should just the legend be plotted? Default to FALSE. A plot with the legend alone can be useful when different plots are arranged in a document, see section 6.2 of the vignette for details.

legend.pos

Position of the legend as character, see legend for details. Default to "center".

legend.cex

Relative size of legend text. Can be reduced if the model contains many groups. Default to 1.

legend.width.factor

Factor by which the width of the legend is increased. Default to 1. Increasing this can solve the problem that the legend annotations do not fit in the surrounding box when the plots are saved as PDF or EPS files, see section 5 of the vignette for details.

rug.ticksize

Length of rugplot tickmarks, dafault to 0.02. Set to 0 or NA, if no rugplot should be drawn. For many observations the rug considerably slows down the rebuild of the plot.

rug.col

Color of rugplot tickmarks, default to "black".

vline.actual

Add vertical line at actual position of selected metric covariate? Default to TRUE.

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. NA for no lines, default to c(0,0.5,0).

n.effects

Number of equally spaced points over the span of the selected metric covariate to calculate the effects for plotting, default to 100. Increase, if lines are not smooth.

autosave.plot

Directly save the initial plot? Default to FALSE. If set to TRUE the GUI-panel is immediately closed after initialization.

snapshot.plot

Save plot when snapshot button is pressed? Default to FALSE, see section 5 of the vignette for details.

graphics.filename

Filename (optionally including a path) as character for graphic file.

graphics.numbering

If TRUE (the default) a 3 digits number is automatically appended to the filenname to avoid that existing graphic files are overwritten.

graphics.type

Graphics file type argument, default to "pdf". On Windows systems all file types accepted by savePlot work. Under non Windows systems allowed values are "pdf", "eps", "png", "jpeg", "jpg", "tiff" and "bmp".

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 FALSE.

xtable.big.mark

Bigmark character for LaTeX output passed to print.xtable, default to ",".

xtable.decimal.mark

Decimal character for LaTeX output passed to print.xtable, default to ".".

xtable.digits

Number of digits for LaTeX output passed to xtable, default to NULL.

xtable.display

Display style for LaTeX output passed to xtable, default to NULL.

xtable.booktabs

Use the LaTeX package booktabs for horizontal lines in LaTeX tables, default to FALSE. Passed to print.xtable.

panel.title

Title used in the title bar of the GUI-panel of type character.

label.button

Label for the snapshot-button of type character.

label.slider.act

Additional label for the slider of the selected metric covariate of type character.

label.box.type

Title for the radiogroup box of type character.

label.types

Labels for radiogroup buttons (character vector of length 3). By default these are also used as corresponding annotations for the y-axis.

label.box.groups

Title for the checkbox of type character.

slider.width

Width of each slider in points (default to 200).

slider.height

Height of each slider in points (default to 60).

button.height

Height of snapshot button in points (default to 30).

box.type.height

Height of radiobox for type selection in points (default to 90).

box.group.character.width

The width of the boxes is basically a this value times the number of characters in points (default to 7).

box.group.line.height

The height of the checkbox is this value times the number of groups in points (default to 28).

dist.obj.width

Vertical distance between sliders and boxes and vertical margins in points (default to 20).

dist.obj.height

Horizontal distance between panel objects in points (default to 10).

...

Other graphical parameters passed to par.

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 factors (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 [email protected]

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 lm (mandatory).

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 NA (default) for menu selection.

preselect.type

The type of the initial plot to be displayed. Must be one of the values "effect" (default) or "marginal".

preselect.groups

Numeric vector with the index of the groups which are displayed in the initial plot. If NULL (the default) all groups are displayed.

dev.height

Height of graphic device in cm, default to 18.

dev.width

Width of plot area in graphic device in cm, default to 18.

dev.width.legend

Width of legend area in graphic device in cm, default to 8.

dev.pointsize

Character pointsize of graphic device, default to 10.

dev.defined

Graphic device predefined? Default to FALSE, see section 6.3 of the vignette for usage.

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 NA (default).

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 1.

main

Title for the plot, default to NA.

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 NA (the default).

ylab

Label for the y-axis. Name of the selected plot type (see argument label.types), if NA (the default).

legend.add

Should a legend be added to the plot? Default to TRUE.

legend.space

Should the space for the legend be reserved? Default to the value of legend.add. Setting legend.add to FALSE and legend.space to TRUE plots white space instead of the legend. This can be useful when different plots are arranged in a document to ensure exact alignments and sizes, see section 6.2 of the vignette for details.

legend.only

Should just the legend be plotted? Default to FALSE. A plot with the legend alone can be useful when different plots are arranged in a document, see section 6.2 of the vignette for details.

legend.pos

Position of the legend as character, see legend for details. Default to "center".

legend.cex

Relative size of legend text. Can be reduced if the model contains many groups. Default to 1.

legend.width.factor

Factor by which the width of the legend is increased. Default to 1. Increasing this can solve the problem that the legend annotations do not fit in the surrounding box when the plots are saved as PDF or EPS files, see section 5 of the vignette for details.

rug.ticksize

Length of rugplot tickmarks, dafault to 0.02. Set to 0 or NA, if no rugplot should be drawn. For many observations the rug considerably slows down the rebuild of the plot.

rug.col

Color of rugplot tickmarks, default to "black".

vline.actual

Add vertical line at actual position of selected metric covariate? Default to TRUE.

pos.hlines

Positions of the horizontal lines for [1] the plot of the effects and [2] the plot of marginal effects. NA for no lines, default to c(0,0).

n.effects

Number of equally spaced points over the span of the selected metric covariate to calculate the effects for plotting, default to 100. Increase, if lines are not smooth.

autosave.plot

Directly save the initial plot? Default to FALSE. If set to TRUE the GUI-panel is immediately closed after initialization.

snapshot.plot

Save plot when snapshot button is pressed? Default to FALSE, see section 5 of the vignette for details.

graphics.filename

Filename (optionally including a path) as character for graphic file.

graphics.numbering

If TRUE (the default) a 3 digits number is automatically appended to the filenname to avoid that existing graphic files are overwritten.

graphics.type

Graphics file type argument, default to "pdf". On Windows systems all file types accepted by savePlot work. Under non Windows systems allowed values are "pdf", "eps", "png", "jpeg", "jpg", "tiff" and "bmp".

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 FALSE.

xtable.big.mark

Bigmark character for LaTeX output passed to print.xtable, default to ",".

xtable.decimal.mark

Decimal character for LaTeX output passed to print.xtable, default to ".".

xtable.digits

Number of digits for LaTeX output passed to xtable, default to NULL.

xtable.display

Display style for LaTeX output passed to xtable, default to NULL.

xtable.booktabs

Use the LaTeX package booktabs for horizontal lines in LaTeX tables, default to FALSE. Passed to print.xtable.

panel.title

Title used in the title bar of the GUI-panel of type character.

label.button

Label for the snapshot-button of type character.

label.slider.act

Additional label for the slider of the selected metric covariate of type character.

label.box.type

Title for the radiogroup box of type character.

label.types

Labels for radiogroup buttons (character vector of length 2). By default these are also used as corresponding annotations for the y-axis.

label.box.groups

Title for the checkbox of type character.

slider.width

Width of each slider in points (default to 200).

slider.height

Height of each slider in points (default to 60).

button.height

Height of snapshot button in points (default to 30).

box.type.height

Height of radiobox for type selection in points (default to 90).

box.group.character.width

The width of the boxes is basically a this value times the number of characters in points (default to 7).

box.group.line.height

The height of the checkbox is this value times the number of groups in points (default to 28).

dist.obj.width

Vertical distance between sliders and boxes and vertical margins in points (default to 20).

dist.obj.height

Horizontal distance between panel objects in points (default to 10).

...

Other graphical parameters passed to par.

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 factors (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 [email protected]

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

Object of class lme (package nlme) (mandatory).

predict.lme.level

Level of grouping to be displayed, passed to predict.lme. Only one level can be displayed, default to 0.

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 NA (default) for menu selection.

preselect.type

The type of the initial plot to be displayed. Must be one of the values "effect" (default) or "marginal".

preselect.groups

Numeric vector with the index of the groups which are displayed in the initial plot. If NULL (the default) all groups are displayed.

dev.height

Height of graphic device in cm, default to 18.

dev.width

Width of plot area in graphic device in cm, default to 18.

dev.width.legend

Width of legend area in graphic device in cm, default to 8.

dev.pointsize

Character pointsize of graphic device, default to 10.

dev.defined

Graphic device predefined? Default to FALSE, see section 6.3 of the vignette for usage.

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 NA (default).

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 1.

main

Title for the plot, default to NA.

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 NA (the default).

ylab

Label for the y-axis. Name of the selected plot type (see argument label.types), if NA (the default).

legend.add

Should a legend be added to the plot? Default to TRUE.

legend.space

Should the space for the legend be reserved? Default to the value of legend.add. Setting legend.add to FALSE and legend.space to TRUE plots white space instead of the legend. This can be useful when different plots are arranged in a document to ensure exact alignments and sizes, see section 6.2 of the vignette for details.

legend.only

Should just the legend be plotted? Default to FALSE. A plot with the legend alone can be useful when different plots are arranged in a document, see section 6.2 of the vignette for details.

legend.pos

Position of the legend as character, see legend for details. Default to "center".

legend.cex

Relative size of legend text. Can be reduced if the model contains many groups. Default to 1.

legend.width.factor

Factor by which the width of the legend is increased. Default to 1. Increasing this can solve the problem that the legend annotations do not fit in the surrounding box when the plots are saved as PDF or EPS files, see section 5 of the vignette for details.

rug.ticksize

Length of rugplot tickmarks, dafault to 0.02. Set to 0 or NA, if no rugplot should be drawn. For many observations the rug considerably slows down the rebuild of the plot.

rug.col

Color of rugplot tickmarks, default to "black".

vline.actual

Add vertical line at actual position of selected metric covariate? Default to TRUE.

pos.hlines

Positions of the horizontal lines for [1] the plot of the effects and [2] the plot of marginal effects. NA for no lines, default to c(0,0).

n.effects

Number of equally spaced points over the span of the selected metric covariate to calculate the effects for plotting, default to 100. Increase, if lines are not smooth.

autosave.plot

Directly save the initial plot? Default to FALSE. If set to TRUE the GUI-panel is immediately closed after initialization.

snapshot.plot

Save plot when snapshot button is pressed? Default to FALSE, see section 5 of the vignette for details.

graphics.filename

Filename (optionally including a path) as character for graphic file.

graphics.numbering

If TRUE (the default) a 3 digits number is automatically appended to the filenname to avoid that existing graphic files are overwritten.

graphics.type

Graphics file type argument, default to "pdf". On Windows systems all file types accepted by savePlot work. Under non Windows systems allowed values are "pdf", "eps", "png", "jpeg", "jpg", "tiff" and "bmp".

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 FALSE.

xtable.big.mark

Bigmark character for LaTeX output passed to print.xtable, default to ",".

xtable.decimal.mark

Decimal character for LaTeX output passed to print.xtable, default to ".".

xtable.digits

Number of digits for LaTeX output passed to xtable, default to NULL.

xtable.display

Display style for LaTeX output passed to xtable, default to NULL.

xtable.booktabs

Use the LaTeX package booktabs for horizontal lines in LaTeX tables, default to FALSE. Passed to print.xtable.

panel.title

Title used in the title bar of the GUI-panel of type character.

label.button

Label for the snapshot-button of type character.

label.slider.act

Additional label for the slider of the selected metric covariate of type character.

label.box.type

Title for the radiogroup box of type character.

label.types

Labels for radiogroup buttons (character vector of length 2). By default these are also used as corresponding annotations for the y-axis.

label.box.groups

Title for the checkbox of type character.

slider.width

Width of each slider in points (default to 200).

slider.height

Height of each slider in points (default to 60).

button.height

Height of snapshot button in points (default to 30).

box.type.height

Height of radiobox for type selection in points (default to 90).

box.group.character.width

The width of the boxes is basically a this value times the number of characters in points (default to 7).

box.group.line.height

The height of the checkbox is this value times the number of groups in points (default to 28).

dist.obj.width

Vertical distance between sliders and boxes and vertical margins in points (default to 20).

dist.obj.height

Horizontal distance between panel objects in points (default to 10).

...

Other graphical parameters passed to par.

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 factors (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 [email protected]

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

https://doi.org/10.5282/ubm/data.2

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)