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)
また、私のコードでは、100 個のそのようなデータセットをシミュレートしているため、これはすべて for ループにあります。簡単にするために、ここにはすべてを含めませんでした。
printcp(fit) と入力すると、「ツリー構築で実際に使用される変数」を抽出して集計する方法を知っているので、各変数が選択された回数がカウントされます。ここでの問題は、x2 と y、および x3 と y の間の潜在的な相互作用をキャプチャし、もちろん、これらの相互作用が現れる回数を表にしたいということです。さて、そのためには、基本的に、ツリーの図を (plot(fit) を使用して) 見ると、y が x2 または x3 の IMMEDIATE サブブランチであるたびに、どうにかして追跡するベクトルを作成したいと考えています。それ。仮に、x2 が n3 に分割され、次に n3 が y に分割された場合、いいえ、それを x2 と y の双方向の相互作用としてカウントしないため、即時のサブ分岐と言います。ただし、x2 が y に分岐する場合、はい、
これには path.rpart を使用してみましたが、x2 または x3 のいずれかがすぐに y に分岐するかどうかを追跡するのには役立たないようです。次に、x2*y の相互作用が発生する頻度と x3*y の相互作用が発生する頻度を表にしたいと思います。