我正在尝试使用 Rpart 将决策树制成表格。我正在使用的代码如下,因此可以复制粘贴。
ss <- 100
set.seed(123)
x1 <- relevel(as.factor(sample(1:4,ss, replace=TRUE)), ref="4")
x11 <- ifelse(x1==1,1,0)
x12 <- ifelse(x1==2,1,0)
x13 <- ifelse(x1==3,1,0)
x2 <- relevel(as.factor(sample(1:3,ss, replace=TRUE)), ref="3")
x21 <- ifelse(x2==1,1,0)
x22 <- ifelse(x2==2,1,0)
x3 <- relevel(as.factor(sample(1:2,ss, replace=TRUE)), ref="2")
x31<- ifelse(x3==1,1,0)
y <- relevel(as.factor(sample(1:2,ss, replace=TRUE)), ref="2")
y1 <- ifelse(y==1,1,0)
n1 <- relevel(as.factor(sample(1:4,ss, replace=TRUE)), ref="4")
n11 <- ifelse(n1==1,1,0)
n12 <- ifelse(n1==2,1,0)
n13 <- ifelse(n1==3,1,0)
n2 <- relevel(as.factor(sample(1:3,ss, replace=TRUE)), ref="3")
n21 <- ifelse(n2==1,1,0)
n22 <- ifelse(n2==2,1,0)
n3 <- relevel(as.factor(sample(1:2,ss, replace=TRUE)), ref="2")
n31<- ifelse(n3==1,1,0)
xbeta <- -0.667-0.167*x11 + 0.167*x12 + 0.333*x13 + x21 -1.333*x22+ x31 + 0.667*y1 +0*n11+0*n12+0*n13+ 0*n21 + 0*n22 + 0*n31 - 1.333*y1*x21+ y1*x22 -1.333*y1*x31
p <- exp(xbeta)/(1+exp(xbeta))
R<- rbinom(ss,1,p)
fit <- rpart(R ~ x1+x2+x3+n1+n2+n3+y, method="class")
然后查看绘制的树,我正在使用
plot(fit, uniform=TRUE, main="Classification Tree")
text(fit, use.n=TRUE, all=TRUE, cex=.8)
此外,在我的代码中,所有这些都在一个 for 循环中,因为我正在模拟 100 个这样的数据集。为简单起见,这里没有包括所有内容。
当您输入 printcp(fit) 时,我知道如何提取“树构造中实际使用的变量”并将它们制成表格,以便计算每个变量被选中的次数。现在,问题是,我想捕捉 x2 和 y 以及 x3 和 y 之间的潜在交互,当然,还要将这些交互出现的次数制成表格。现在,为此,本质上,当人们查看树的图表时(使用 plot(fit)),每次 y 是 x2 或 x3 的即时子分支时,我想以某种方式创建一个向量来跟踪那。我说直接子分支是因为如果假设 x2 被细分为 n3,然后 n3 分支为 y,那么不,我不会将其视为 x2 和 y 的双向交互。但是,如果 x2 分支到 y,那么是的,
我尝试为此使用 path.rpart,但它似乎无助于跟踪 x2 或 x3 是否立即分支到 y。然后,我想将 x2*y 交互的频率和 x3*y 交互的频率制成表格。