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")
メソッドは、予測確率を生成します。これら 2 つの情報を使用して、逸脱度を次のように直接計算できます。
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