我在 R 中创建了一棵树。
rp <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
## coerce to `constparty'
rp.party <- as.party(rp)
现在,我想找出 rp.party 对象的偏差。有没有办法在不使用 rp 对象的情况下这样做?
谢谢!
目前中的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