3

Rpart パッケージの NA 機能に苦労しています。次のデータフレームを取得しました(以下のコード)

  Outcome VarA VarB
1       1    1    0
2       1    1    1
3       1   NA    1
4       0    0    1
5       0    0    0
6       0   NA    0

完全な予測を行う Rpart オブジェクトを当てはめようとしています。論理的なルールは、次のことを予測することです。

  • VarA=1 の場合、予測=1
  • VarA=0 の場合、予測=0
  • VarA=NA の場合、VarB が使用されます (VarB=0 の場合、予測=0)

ただし、正しい方法で VarA の「NA 値を渡す」ための正しいコードを見つけるのに苦労しています。と を使用しようとしましusesurrogatesna.controlが、役に立ちませんでした...以下のコードを見つけてください。

PS。VarAが読み取る場合、rpartは機能しますVarA=c(1,1,2,0,0,2)が、残念ながら、これは私が取り組んでいるより大きなデータフレームの優れたソリューションではありません....

library(rpart)
Outcome=c(1,1,1,0,0,0)
VarA=c(1,1,NA,0,0,NA)
VarB=c(0,1,1,1,0,0)
dg=as.data.frame(cbind(Outcome, VarA, VarB))        
dg
fit=rpart(Outcome ~ VarA + VarB, data=dg, method="class",na.action = na.pass,control=rpart.control(usesurrogate=1, minsplit=1, cp=0.001))
fit

newdata=dg
newpred=predict(fit,newdata=newdata,type = "class")
dh=cbind(dg,newpred)
dh
4

3 に答える 3

0

VarA を次のように自動的に置き換えてみてください。

VarA [is.na(VarA )] <- 2

これにより、すべての NA が 2 に置き換えられます。

于 2013-08-15T21:00:46.413 に答える