0

古いバージョンの lme4 を使用して線形混合モデルを実行しています。lme4 を更新したので、次のエラーが表示されます。

エラー en [[<-.data.frame( *tmp*, i, value = integer(0)) : 置換には 0 行があり、データには 4211 があります

この Web サイトで、データ引数で指定されたデータ フレーム内にすべてのグループ化変数を配置することを提案する回答を見つけました。私はそれをしましたが、私のコードはまだ機能しません。

ここにあります:

msdgtot=glmer(sdg.dens ~ ngbr.trees + (1 + ngbr.trees | factor(species)), data=d.sdg.ngb,family=poisson)

エラー en [[<-.data.frame( *tmp*, i, value = integer(0)) : 置換には 0 行があり、データには 4211 があります

なぜこれが起こっているのですか?どうもありがとう!ナタリア・ノルデン

4

1 に答える 1

7

これは、 httpslme4 : //github.com/lme4/lme4/issues/156の未修正のバグです。ただし、回避策は簡単です。式内ではなく、データフレーム内でやなどの変換を行うだけです。as.factor()as.numeric()

d.sdg.ngb = transform(d.sdg.ngb,species=factor(species))
msdgtot = glmer(sdg.dens ~ ngbr.trees + (1 + ngbr.trees | species),
    data=d.sdg.ngb,family=poisson)

一般に、これは必要でさえあるべきではないと思います-少なくとも最近のバージョンのglmer自動的にグループ化変数を因子などに変換しますspecies-しかし、注意/明示的にしたいことは理解できます。なんらかの理由で、グループ化変数を因数に永続的に変換したくない場合は、通常、変数の因数バージョンを作成します。

d.sdg.ngb = transform(d.sdg.ngb,fspecies=factor(species))

fspecies式ではなく使用speciesします。

価値のあるものとして、これは以前にリリースされた のバージョンでも問題でしlme4た: with lme4.0(後方互換性のあるバージョン),

gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 | herd),
  data=cbpp,family=binomial)

正常に動作しますが、

gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 | factor(herd)),
data=cbpp,family=binomial)

(確かに、あまりわかりにくいエラー メッセージではError in factor(herd) : object 'herd' not foundありますが、それでもエラーです)。

于 2013-12-03T14:16:13.950 に答える