私はマルチレベルモデルを使用して縦方向の変化のさまざまなパターンを記述しようとしています。 Dingemanse et al (2010)は、ランダム効果が完全に相関しているときに「ファンアウト」パターンを記述する。しかし、私は、ランダム効果間の関係が非線形であるが、観察された間隔にわたって単調に増加する場合に、同様のパターンが生じることを見出した。この場合、ランダム効果は完全には相関していませんが、関数で記述されます。 この例については、下の例を参照してください。この例では、依然として高いインターセプトスロープ相関(> .9)がありますが、完全なインターセプトスロープの関係を維持しながら、0.7よりも低い相関を得ることは可能です。ランダム効果間の非線形関係を指定するR
私の質問:nlme
または他のRパッケージを使用したマルチレベルモデルでのランダムエフェクト間の完全な(非線形の)関係を含める方法はありますか? MLwiNは、勾配 - インターセプト共分散を制約する方法を持っています。これは、始まりですが、非線形関係を含めるには不十分です。私はこれまでのところnlme
の解決策を見つけることができませんでしたが、これをモデルに含めることができる他のパッケージを知っているかもしれません。
汚いコーディングのお詫び。私の質問が十分にはっきりしていることを願っていますが、明確にする必要があるものがあれば教えてください。任意のヘルプまたは代替ソリューションは非常に高く評価されます。私はrjags
を使用してベイジアンアプローチで行くを持っていた@MattTyersの提案に基づいて
set.seed(123456)
# Change function, quadratic
# Yit = B0ij + B1ij*time + B2ij*time^2
chn <- function(int, slp, slp2, time){
score<-int + slp * time+ slp2 * time^2
return(score)
}
# Set N, random intercept, time and ID
N<-100
start<-rnorm(N,100,15) # Random intercept
time<- matrix(1:15,ncol = 15, nrow = 100,byrow = T) # Time, balanced panel data
ID<-1:N # ID variable
# Random intercept, linear slope: exp(intercept/25)/75, quadratic slope: exp(intercept/25)/250
score3<-matrix(NA,ncol = ncol(time), nrow = N)
for(x in ID){
score3[x,]<-chn(start[x],exp(start[x]/25)/75,exp(start[x]/25)/250,time[x,])
}
#Create dataframe
df<- data.frame(ID,score3)
df2<- melt(df,id = 'ID')
df2$variable<-as.vector(time)
# plot
ggplot(df2, aes(x= variable, y= value)) + geom_line(aes(group = ID)) +
geom_smooth(method = "lm", formula = y ~ x + I(x^2), se =F, size = 2, col ="red")
# Add noise and estimate model
df2$value2<-df2$value + rnorm(N*ncol(time),0,2)
# Random intercept
mod1<-lme(value2 ~ variable + I(variable^2),
random= list(ID = ~1),
data=df2,method="ML",na.action=na.exclude)
summary(mod1)
# Random slopes
mod2<-update(mod1,.~.,random= list(ID = ~variable + I(variable^2)))
summary(mod2)
pairs(ranef(mod2))
は常にベイズを行くことができます。 .. –
私はベイジアンに行くことを考えていましたが、R2WinBUGSとR2jagsの経験は限られています。私に例を示すことができれば、それは非常に高く評価されるでしょう。 – Niek
@MattTyers時間がかかりましたが、rjagsパッケージで試しました。どんなフィードバックも歓迎です – Niek