【发布时间】:2018-08-01 07:01:42
【问题描述】:
我想使用变量 V1 对变量 V2 进行分区。 V1 依赖于第三个变量 V3。
在以下 R 代码中,变量 V1 取决于变量 V3,例如当 V3 等于 10 且 V2 为 1 时,V1 等于 1。
有没有算法可以做到这一点?
library(partykit)
set.seed(100)
V1<-sample(100);V2<-ifelse(V1>50,1,0);V3<-sample(1:10,100,replace=T);
V1[V3==10&V2==1]<-5
ctree(V2~V1+V3)
#ctree output :
V1<=50
___|___
| |
V1<=5 1
__|___
| |
V3<=6 0
___|___
| |
0.88 0.98
my_algorithm(V2~V1|V3)
#Expected output (optimal tree) :
V1>50
|
_______
| |
1 V3<10
|
_______
| |
0 1
例如 ctree 没有给出最佳分类(见上文)。
我的问题可能不清楚,请随时编辑。谢谢。
【问题讨论】:
-
是的,根本不清楚,也许将您的示例从每个向量 100 个项目减少到 10 个,并给我们预期的输出
-
@Moody_Mudskipper 预期的输出是树状的。 “图表”是否更清晰?
-
目前还不清楚你在找什么。如果要将观察到的数据分成三组,可以使用
split()。如果您想设置一个也可以应用于新数据的分区工具,您可以考虑示例vignette("partykit", package = "partykit")。可能,data.tree包也可能很有趣。 -
@AchimZeileis 谢谢你的帮助。我想要一个可以应用于新数据的分区工具。我编辑了我的帖子以添加一个来自partykit 包的 ctree 示例。如您所见,生成的树不是最优的。这是因为 V1 依赖于 V3,而 V2 不(直接)依赖于 V3。
-
@AchimZeileis 。这个问题是一个更普遍的问题的一部分:stats.stackexchange.com/questions/330153/…。也许这有助于更好地理解这个问题背后的动机。
标签: r tree partitioning rpart party