指定された時間に予測平均を取得したい経時データがあります。モデルには、2 つの項、それらの相互作用、および時間変数のスプライン項が含まれます。予測平均を取得しようとすると、「mm %*% fixef(m4) のエラー: 非適合引数」が表示されます。
私の問題を説明するために、lmer の睡眠データセットを使用しました。まず、データをインポートし、インタラクション用の変数「age」を作成します
sleep <- as.data.frame(sleepstudy) #get the sleep data
# create fake variable for age with 3 levels
set.seed(1234567)
sleep$age <- as.factor(sample(1:3,length(sleep),rep=TRUE))
次に、lmer モデルを実行します
library(lme4)
library(splines)
m4 <- lmer(Reaction ~ Days + ns(Days, df=4) + age + Days:age + (Days | Subject), sleep)
最後に、予測平均を取得するために必要なデータと行列を作成します
#new data frame for predicted means
d <- c(0:9) # make a vector of days = 0 to 9 to obtain predictions for each day
newdat <- as.data.frame(cbind(Days=d, age=rep(c(1:3),length(d))))
newdat$Days <- as.numeric(as.character(newdat$Days))
newdat$age <- as.factor(newdat$age)
# create a matrix
mm<-model.matrix(~Days + ns(Days, df=4) + age + Days:age, newdat)
newdat$pred<-mm%*%fixef(m4)
エラーが発生するのはこの時点です: Error in mm %*% fixef(m4) : non-conformable arguments
予測を使用して平均を取得できます
newdat$pred <- predict(m4, newdata=newdat, re.form=NA)
これは正常に機能しますが、信頼区間を計算できるようにしたいので、適合する行列が必要です。
問題は lmer がエイリアスを作成することである可能性があることをどこかで読みました(その投稿が見つかりません)。このコメントは、同様のタスクに effect() を使用できないことに関して行われました。この問題を克服する方法がよくわかりませんでした。さらに、投稿が少し古かったことを思い出し、エイリアスの問題がもはや関係ないことを願っていました。
私が間違っている可能性があることについて誰かが提案をしている場合は、フィードバックをいただければ幸いです。ありがとう。