web-dev-qa-db-ja.com

na.fail.defaultのエラー:オブジェクトの値が欠落しています-欠損値はありません

これらのデータを使用して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(list(cor_partner = c(1L、1L、2L、1L、1L、1L、のエラー:オブジェクトに値がありません

フォーラムにも同様の質問があることを知っています。ただし、私の場合:

  • cor_partnerには欠損値がありません。
  • オブジェクト全体がファクターとしてコード化されます(少なくともグローバル環境が示すものから)。

Na.actionを使用してこれらのNA値を除外できますが、関数が欠損値を読み取っている理由を知りたい-データに何が起こっているかを正確に理解するためです。

15
InverniE

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)

収束エラーと警告が表示されますが、それは、コードに固有の問題ではなく、十分な情報のない小さな構成データセットを使用しているからだと思います。

21
Ben Bolker

randomForestパッケージにはna.roughfix関数 "中央値/モードによる欠損値の代入"

次のように使用できます

fit_rf<-randomForest(store~.,
        data=store_train,
        importance=TRUE,
        prOximity=TRUE,
        na.action=na.roughfix)
6
kurapati

データにNaまたは欠損値が含まれている場合、これを使用して、データセット内とまったく同じデータを渡すことができます。

rf<-randomForest(target~.,data=train, na.action = na.roughfix)

1