我正在尝试使用这些数据运行lme模型:
tot_nochc=runif(10,1,15)
cor_partner=factor(c(1,1,0,1,0,0,0,0,1,0))
age=runif(10,18,75)
agecu=age^3
day=factor(c(1,2,2,3,3,NA,NA,4,4,4))
dt=as.data.frame(cbind(tot_nochc,cor_partner,agecu,day))
attach(dt)
corpart.lme.1=lme(tot_nochc~cor_partner+agecu+cor_partner *agecu,
random = ~cor_partner+agecu+cor_partner *agecu |day,
na.exclude(day))
我收到此错误代码:
na.fail.default中的错误(列表(cor_partner = c(1L,1L,2L,1L,1L,1L,: 对象中缺少值
我知道论坛中有类似的问题。但是,就我而言:
我可以用na.action排除这些NA值,但我更确切地知道为什么函数正在读取缺失值 - 以准确理解我的数据发生了什么。
答案 0 :(得分:19)
tl; dr 您必须同时在整个数据框架上使用na.exclude()
(或其他任何内容),以便其余观察值在变量之间保持匹配...
set.seed(101)
tot_nochc=runif(10,1,15)
cor_partner=factor(c(1,1,0,1,0,0,0,0,1,0))
age=runif(10,18,75)
agecu=age^3
day=factor(c(1,2,2,3,3,NA,NA,4,4,4))
## use data.frame() -- *DON'T* cbind() first
dt=data.frame(tot_nochc,cor_partner,agecu,day)
## DON'T attach(dt) ...
现在尝试:
library(nlme)
corpart.lme.1=lme(tot_nochc~cor_partner+agecu+cor_partner *agecu,
random = ~cor_partner+agecu+cor_partner *agecu |day,
data=dt,
na.action=na.exclude)
我们收到了收敛错误和警告,但我认为现在是因为我们使用的是一个没有足够信息的微小数据集,而不是因为代码存在任何固有问题。
答案 1 :(得分:6)
randomForest
程序包具有na.roughfix
函数,该函数“ 根据中位数/模式估算缺失值”
您可以按以下方式使用它
fit_rf<-randomForest(store~.,
data=store_train,
importance=TRUE,
prOximity=TRUE,
na.action=na.roughfix)
答案 2 :(得分:1)
如果您的数据包含Na或缺少值,则可以使用此 它将传递的数据与数据集中的数据完全相同。
rf<-randomForest(target~.,data=train,
na.action = na.roughfix)