如何在 MOB 树的每个节点中找到观察值? (派对包)
How to find the observation in each node of the MOB tree? (partykit package)
我已经使用 partykit 包在数据集上创建了基于模型的分区 (MOB) 树,我想知道是否有一种方法可以查看我们数据集中的哪些观察结果通过了该规则并落入每个节点。 (我想根据树规则为每个节点创建单独的数据框)。
您可以对所有partykit
棵树使用predict(..., type = "node")
来获取预测的终端节点ID。然后您可以将其用于 split()
调整数据集。例如:
library("partykit")
tr <- lmtree(dist ~ speed, data = cars)
plot(tr)
split(cars, predict(tr, type = "node"))
## $`3`
## speed dist
## 1 4 2
## 2 4 10
## 3 7 4
## 4 7 22
## 5 8 16
## 6 9 10
## 7 10 18
## 8 10 26
## 9 10 34
## 10 11 17
## 11 11 28
## 12 12 14
## 13 12 20
## 14 12 24
## 15 12 28
##
## $`4`
## speed dist
## 16 13 26
## 17 13 34
## 18 13 34
## 19 13 46
## 20 14 26
## 21 14 36
## 22 14 60
## 23 14 80
## 24 15 20
## 25 15 26
## 26 15 54
## 27 16 32
## 28 16 40
## 29 17 32
## 30 17 40
## 31 17 50
##
## $`5`
## speed dist
## 32 18 42
## 33 18 56
## 34 18 76
## 35 18 84
## 36 19 36
## 37 19 46
## 38 19 68
## 39 20 32
## 40 20 48
## 41 20 52
## 42 20 56
## 43 20 64
## 44 22 66
## 45 23 54
## 46 24 70
## 47 24 92
## 48 24 93
## 49 24 120
## 50 25 85
我已经使用 partykit 包在数据集上创建了基于模型的分区 (MOB) 树,我想知道是否有一种方法可以查看我们数据集中的哪些观察结果通过了该规则并落入每个节点。 (我想根据树规则为每个节点创建单独的数据框)。
您可以对所有partykit
棵树使用predict(..., type = "node")
来获取预测的终端节点ID。然后您可以将其用于 split()
调整数据集。例如:
library("partykit")
tr <- lmtree(dist ~ speed, data = cars)
plot(tr)
split(cars, predict(tr, type = "node"))
## $`3`
## speed dist
## 1 4 2
## 2 4 10
## 3 7 4
## 4 7 22
## 5 8 16
## 6 9 10
## 7 10 18
## 8 10 26
## 9 10 34
## 10 11 17
## 11 11 28
## 12 12 14
## 13 12 20
## 14 12 24
## 15 12 28
##
## $`4`
## speed dist
## 16 13 26
## 17 13 34
## 18 13 34
## 19 13 46
## 20 14 26
## 21 14 36
## 22 14 60
## 23 14 80
## 24 15 20
## 25 15 26
## 26 15 54
## 27 16 32
## 28 16 40
## 29 17 32
## 30 17 40
## 31 17 50
##
## $`5`
## speed dist
## 32 18 42
## 33 18 56
## 34 18 76
## 35 18 84
## 36 19 36
## 37 19 46
## 38 19 68
## 39 20 32
## 40 20 48
## 41 20 52
## 42 20 56
## 43 20 64
## 44 22 66
## 45 23 54
## 46 24 70
## 47 24 92
## 48 24 93
## 49 24 120
## 50 25 85