#
# ... an example with a continuous outcome variable
# and three treatment groups
#
# \donttest{
N = 100
set.seed(123)
# generate treatments
treatment = sample(1:3, N, replace = TRUE)
# generate candidate split variables
X1 = round(rnorm(n = N, mean = 0, sd = 1), 4)
X2 = round(rnorm(n = N, mean = 0, sd = 1), 4)
X3 = sample(1:4, N, replace = TRUE)
X4 = sample(1:5, N, replace = TRUE)
X5 = rbinom(N, 1, 0.5)
X6 = rbinom(N, 1, 0.5)
X7 = rbinom(N, 1, 0.5)
X = cbind(X1, X2, X3, X4, X5, X6, X7)
colnames(X) = paste0("X", 1:7)
# generate continuous outcome variable
calculateLink = function(X, treatment){
10.2 - 0.3 * (treatment == 1) - 0.1 * X[, 1] +
2.1 * (treatment == 1) * X[, 1] +
1.2 * X[, 2]
}
Link = calculateLink(X, treatment)
Y = rnorm(N, mean = Link, sd = 1)
# combine variables in a data frame
data = data.frame(X, Y, treatment)
# create vector of variable types
types = c(rep("ordinal", 2), rep("nominal", 2), rep("binary", 3),
"response", "treatment")
# fit a classification tree
tree = spmtree(Y ~ treatment | ., data, types = types, dataframe = TRUE)
# prune the tree
ptree = pmprune(tree)
# }
Run the code above in your browser using DataLab