TSVC: Tree-Structured Modelling of Varying Coefficients

Description Usage Arguments Details Value Author(s) References See Also Examples

View source: R/TSVC.R

Description

A function to fit tree-structured varying coefficient (TSVC) models. By recursive splitting the method allows to simultaneously detect covariates with varying coefficients and the effect modifiers that induce varying coefficients if they are present. The basic method is described in Berger, Tutz and Schmid (2018).

Usage

1
2
3
4
5
6
TSVC(formula, data, family = gaussian, alpha = 0.05, nperm = 1000,
  effmod = NULL, notmod = NULL, only_effmod = NULL, smooth = NULL,
  split_intercept = FALSE, trace = FALSE, ...)

## S3 method for class 'TSVC'
print(x, ...)

Arguments

formula

object of class formula: a symbolic description of the (linear) model to be fit. See also details.

data

data frame of class data.frame containing the variables in the model.

family

a description of the error distribution and link function to be used in the model (as for glm). This can be a character string naming a family function, a family function or the result of a call to a family function. See family for details of family functions.

alpha

significance level alpha for the permutation tests.

nperm

number of permutations used for the permutation tests.

effmod

optional vector of covariates that serve as effect modifier. If NULL (default), all covariates are considered as potential effect modifiers.

notmod

optional list of class list containing pairs of covariate/effect modifier that are not considered as candidates for splitting during iteration. If NULL (default), all combinations of covariates and potential effect modifiers are considered for splitting.

only_effmod

optional vector of covariates that serve as effect modifier, only. If NULL (default), all effect modifiers are included in the predictor of the model and are allowed to be modified.

smooth

optional vector of covariates with a smooth effect on the response. The (smooth) effects fo these variables are not allowed to be modified.

split_intercept

if TRUE, the intercept is allowed to be modified by the covariates. If FALSE (default), the intercept is set constant.

trace

if TRUE, information about the estimation progress is printed.

...

further arguments passed to or from other methods.

x

object of class TSVC.

Details

A typical formula has the form response ~ covariates, where response is the name of the response variable and covariates is a series of variables that are incorporated in the model.

With p covariates, TSVC expects a formula of the form y ~ x_1+...+x_p. If no further specifications are made (effmod=NULL, notmod=NULL, only_effmod=NULL) it is assumed that each covariate x_j, j = {1,...,p} can be modified by all the other variables x_m, m = {1,...,p} \ j.

Remark: Significance of each split is verified by permutation tests. The result of the permutation tests can strongly depend on the number of permutations nperm.

Note: The algorithm currently does not support splitting of/by factor variables. If a factor variable is included in the formula of the model, the variable will not serve as effect modifier and its effect will not be modified.

Value

Object of class "TSVC". An object of class "TSVC" is a list containing the following components:

splits

matrix with detailed information about all executed splits during the fitting process.

coefficients

list of estimated coefficients for covariates with and without varying coefficients (including a non-varying intercept).

pvalues

p-values of each permuation test during the fitting process.

devs

maximal value statistics T_m of the selected effect modifier in each iteration during the fitting process.

crit

critical values of each permutation test during the fitting process.

y

response vector.

X

matrix of all the variables (covariates and effect modifiers) for model fitting.

model

internaly fitted model in the last iteration of class glm or gam.

Author(s)

Moritz Berger <Moritz.Berger@imbie.uni-bonn.de>
http://www.imbie.uni-bonn.de/personen/dr-moritz-berger/

References

Berger, M., G. Tutz and M. Schmid (2018). Tree-Structured Modelling of Varying Coefficients. Statistics and Computing, published online, https://doi.org/10.1007/s11222-018-9804-8.

Hastie, T. and R. Tibshirani (1993). Varying-coefficient models. Journal of the Royal Statistical Society B 55, 757-796.

Hothorn T., K. Hornik and A. Zeileis (2006). Unbiased recursive partitioning: A conditional inference framework. Journal of Computational and Graphical Statistics 15(3), 651-674.

See Also

plot.TSVC, predict.TSVC, summary.TSVC

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Swiss Labour Market 
library(AER)
data("SwissLabor")

# recode factors
sl <- SwissLabor
sl$participation <- as.numeric(sl$participation)-1
sl$foreign       <- as.numeric(sl$foreign)-1

## Not run: 
fit1 <- TSVC(participation~income+age, data=sl, family=binomial(link="logit"), 
             nperm=300, trace=TRUE)
print(fit1)
class(fit$model) # glm 

# In fit2, variable 'foreign' does not serve as effect modifier 
# and the effect of 'foreign' is not modified by the other variables.
# That means 'foreign' is assumed to only have simple linear effect on the response. 
fit2 <- TSVC(participation~income+age+foreign, data=sl, family=binomial(link="logit"), 
             nperm=300, trace=TRUE, effmod=c("income","age"), 
             notmod=list(c("foreign","income"),c("foreign","age")))
print(fit2)

# In fit3, variable 'age' does only serve as effect modifier. That means the effect of 'age' 
# is not included in the predictor of the model.    
fit3 <- TSVC(participation~income+age+foreign, data=sl, family=binomial(link="logit"),
             nperm=300, trace=TRUE, only_effmod="age")
print(fit3)  

# In fit4, the intercept is allowed to be modified by 'age' and 'income'. 
# The two covariates, however, are not allowed to modify each other. 
fit4 <- TSVC(participation~income+age, data=sl, family=binomial(link="logit"),
             nperm=300, trace=TRUE, split_intercept=TRUE,
             notmod=list(c("income","age"), c("age", "income")))
print(fit4)    


# In fit5, variable 'age' has a smooth effect on the response. 
# Hence, the (smooth) effect of 'age' will not be modified by the other variables.  
fit5 <- TSVC(participation~income+age+foreign, data=sl, family=binomial(link="logit"),
             nperm=300, trace=TRUE, smooth="age")                     
print(fit5)
class(fit5$model) # gam                     


## End(Not run)

TSVC documentation built on July 1, 2020, 7:08 p.m.

Related to TSVC in TSVC...