0

我在 R 中创建了一棵树。

rp <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)

## coerce to `constparty'
rp.party <- as.party(rp)

现在,我想找出 rp.party 对象的偏差。有没有办法在不使用 rp 对象的情况下这样做?

谢谢!

4

1 回答 1

0

目前中的constparty对象partykit没有deviance()方法,因为它们没有采用正式的模型。该方法是完全非参数的。(基于模型的glmtree()对象确实提供了一种deviance()方法。)但是,它在某些情况下可能很有用……我将与 Torsten 讨论我们是否也应该添加它constparty

无论如何,“手动”为您的示例设置二项式偏差并不是很困难。该fitted()方法提供预测的节点 ID 和观察到的响应。该predict(..., type = "prob")方法产生预测的概率。使用这两条信息,您可以直接计算偏差:

obs <- fitted(rp.party)[, "(response)"]
pred <- predict(rp.party, type = "prob")
-2 * sum(log(pred[cbind(1:nrow(pred), as.numeric(obs))]))
## [1] 46.90789

或者您可以使用glm()并从中提取每个终端节点中的常量deviance()

deviance(glm(`(response)` ~ factor(`(fitted)`),
  data = fitted(rp.party), family = binomial))
## [1] 46.90789
于 2015-04-17T07:43:44.327 回答