longitree: Construction of a Decision Tree for Longitudinal Data

View source: R/longitree.R

longitreeR Documentation

Construction of a Decision Tree for Longitudinal Data

Description

Constructs a single decision tree for longitudinal data. The method evaluates both the main effect of a covariate and its interaction with time, incorporating a weighting mechanism to balance the two effects. Three single-tree construction procedures (ST1, ST2, ST3) are available; see Details. For the underlying methodology, refer to Obata and Sugimoto (2026).

Usage

longitree(
  formula,
  time,
  random,
  weight = "w",
  data,
  alpha = "no",
  gamma = "no",
  cv = "no",
  maxdepth = 5,
  minbucket = 5,
  minsplit = 20,
  xval = 10
)

## S3 method for class 'longitree'
summary(object, ...)

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

## S3 method for class 'longitree'
predict(object, ...)

## S3 method for class 'longitree'
plot(x, ...)

Arguments

formula

A formula specifying the model. The response variable should be on the left side and covariates on the right side. Use response ~ . to include all covariates except the time variable and the random effect, or select specific covariates such as response ~ x1 + x2. Time-invariant (baseline) covariates are assumed.

time

Character string giving the column name of the time variable. All individuals are assumed to be observed at the same time points.

random

Character string giving the column name of the random effect (subject identifier).

weight

Weight for balancing the main effect of a covariate and its interaction with time. A value in \{0.0, 0.1, \ldots, 1.0\}: 1.0 evaluates only the mean difference in the response variable between the two groups and 0.0 evaluates only the difference in change over time of the response variable between the two groups. Set weight = "w" (the default) to select the optimal weight from the same grid at each node.

data

A data frame containing the variables in formula together with the time and random-effect variables.

alpha

Significance level used as the stopping rule for tree growth. A smaller value produces a more conservative (smaller) tree. Specify a numeric value or "no" (default) if not used. Corresponds to ST2.

gamma

Complexity parameter for pruning. A larger value prunes more aggressively, yielding a smaller and simpler tree; a smaller value retains more branches. Specify a numeric value or "no" (default) if not used. Corresponds to ST3.

cv

Set "yes" to construct the decision tree using cross-validation, or "no" (default) otherwise. Corresponds to ST1.

maxdepth

Maximum depth of the tree (default 5).

minbucket

Minimum number of subjects in a terminal node (default 5).

minsplit

Minimum number of subjects required to attempt a split (default 20).

xval

Number of cross-validation folds (default 10). Used to compute the cross-validated coefficient of determination (R^2_{\mathrm{CV}}); when cv = "yes", also used for final tree selection.

object

A longitree object.

...

Additional arguments passed to treeplot.

x

A longitree object.

Details

Exactly one of alpha, gamma, or cv must be specified. Specifying more than one will result in an error. These correspond to the three single-tree construction procedures:

ST1 (cv = "yes")

Tree growth, pruning, and final tree selection via cross-validation.

ST2 (alpha)

Tree growth with a significance threshold. No pruning or final tree selection via cross-validation.

ST3 (gamma)

Tree growth followed by pruning with a pre-specified complexity parameter. No final tree selection via cross-validation.

Since the time variable is not used as a splitting variable, each terminal node (leaf) contains the full longitudinal responses for every subject assigned to it, allowing direct evaluation of longitudinal trajectories within each leaf.

Value

An object of class "longitree". Use summary.longitree, predict.longitree, or plot.longitree to inspect the results.

Methods (by generic)

  • summary(longitree): Print a brief summary of a longitree object.

  • print(longitree): Print method (calls summary).

  • predict(longitree): Extract predicted values and terminal node assignments from a longitree object. Returns a data frame with columns predict (predicted values) and terminalnode (terminal node assignments).

  • plot(longitree): Plot a longitree object. A convenience wrapper around treeplot.

References

Obata, R. and Sugimoto, T. (2026). A decision tree analysis for longitudinal measurement data and its applications. Advances in Data Analysis and Classification. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1007/s11634-025-00665-2")}

See Also

treeplot, longitrees

Examples

data(ltreedata)
# ST1: tree construction via cross-validation
result_st1 <- longitree(y ~ ., time = "time", random = "subject",
                           weight = 0.7, data = ltreedata, cv = "yes")
summary(result_st1)
predict(result_st1)
plot(result_st1)

# ST2: tree growth with a significance threshold
result_st2 <- longitree(y ~ ., time = "time", random = "subject",
                           weight = 0.1, data = ltreedata, alpha = 0.05)
summary(result_st2)
predict(result_st2)
plot(result_st2)

# ST3: pruning with a complexity parameter
result_st3 <- longitree(y ~ ., time = "time", random = "subject",
                           weight = "w", data = ltreedata, gamma = 3)
summary(result_st3)
predict(result_st3)
plot(result_st3)


longitree documentation built on May 16, 2026, 5:06 p.m.