首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rpart - NA处理

Rpart - NA处理
EN

Stack Overflow用户
提问于 2013-03-24 17:56:41
回答 3查看 5.5K关注 0票数 3

我正在为Rpart包中的NA功能而奋斗。我得到了以下数据(下面的代码)

代码语言:javascript
复制
  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,prediction=1
  • 如果VarA=0,prediction=0
  • 如果是VarA=NA,则使用VarB (如果VarB=0,prediction=0)

但是,我很难找到正确的代码,以便以正确的方式“传递VarA的NA值”。我试过和usesurrogatesna.control合作,但是没有用.请在下面找到密码。

PS。如果VarA会读VarA=c(1,1,2,0,0,2),那么这个部件就能工作了,但不幸的是,对于我正在研究的更大的数据格式来说,这不是一个很好的解决方案.

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2013-09-22 20:18:50

我接受了您的代码并对其进行了修改,以使用您想要的NA处理逻辑。

代码语言:javascript
复制
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

我改变了这句话:

代码语言:javascript
复制
dg$VarC <- ifelse(is.na(dg$VarA), ifelse(df$VarB == 1, 1, 0), dg$VarA)
fit=rpart(Outcome ~ VarC, data=dg, method="class", na.action = na.pass, control=rpart.control(usesurrogate=1, minsplit=1, cp=0.001))

其余的都是一样的:

代码语言:javascript
复制
fit

newdata=dg
newpred=predict(fit,newdata=newdata,type = "class")
dh=cbind(dg,newpred)
dh
票数 1
EN

Stack Overflow用户

发布于 2013-08-15 21:00:46

尝试用如下所示自动替换VarA:

代码语言:javascript
复制
VarA [is.na(VarA )] <- 2

这应该将所有NA替换为2。

票数 0
EN

Stack Overflow用户

发布于 2013-08-23 07:25:52

我从上面的问题中了解到,每当VarB失败时,您都想使用varA:-

代码语言:javascript
复制
VarA [is.na(VarA )] <-VarB[is.na(VarA )]

但是您的预测完全依赖于VarA(fit),因此在将其传递给rpart.you之前对VarA进行更改将得到您的预期输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15601982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档