2016-09-04 38 views
0

GLMMモデルを作成し、各因子の予測確率をプロットしました。しかし、私は、BootMer関数を使って信頼区間を作成する方法を探ることはできません。私はエラーメッセージが非整数の事前の重みからシミュレートすることができない取得し続けます。 誰かを助けることができると私は望んでいますか?前もって感謝します。何らかの理由でBootmerはそれで問題があるブートストラップを使用してGLMMの回帰曲線の信頼区間を作成する

glmm1 <- glmer(cbind(Total_Dead, Total_Collected - Total_Dead) ~ 
      Species + timeseries + (1|Location), 
      data = dat,family= "binomial") 
    dat$timeseries <- dat$Study_Date - 1998 

plot(predict(glmm1, data.frame(Species="An. Arab",timeseries= dat$timeseries), type="response", re.form = NA) ~ 
    dat$timeseries,frame=FALSE,bty="n",pch="",xaxt="n",ylim=c(0,0.5),ylab="Predicted mortality",xlab="Year", main = "Predicted mortality by species", 
cex.lab=1.6,yaxt="n") 
axis(1, at=c(1:17),labels=1999:2015,cex.axis=1.8) 
axis(2,las=2,at=seq(0,1,0.2),labels=seq(0,1,0.2),cex.axis=1.8)  
COLS = c("blue","red","purple","aquamarine3","orange") 
PCH=c(17,15,19,20,5) 
for(i in 1:length(unique(levels(dat$Species)))){ 
points((dat$Total_Dead[dat$Species == levels(dat$Species)[i]]/dat$Total_Collected[dat$Species == levels(dat$Species)[i]]) ~ dat$timeseries[dat$Species == levels(dat$Species)[i]], 
    pch=PCH[i],col=COLS[i]) 
lines(predict(glmm1, data.frame(Species=levels(dat$Species)[i],timeseries = dat$timeseries), type="response", re.form = NA) ~ 
     dat$timeseries,lty=4,col=COLS[i]) 
} 
bootstrap <-bootMer(x=glmm1, FUN= fixef, nsim=200) 

答えて

0

、あなたは私が使用する

library(merTools) 
preds <- predictInterval(glmm1, newdata = your.datarame, n.sims = 1000) 

mertoolsパッケージを使用する必要があり、その後、その後predsがプロットにdata.frame、結果data.frameを持ちますフィッティング、上限、下限を設定すると、geom_ribbonを使用してプロットすることができます。

私はあなたが実際にあなたのグラフのための新しい標準化されたデータセットを作りたいと思います。あなたはこのコードを使用している場合、それは動作します:

glmm1 <- glmer(cbind(Total_Dead, Total_Collected - Total_Dead) ~ 
      Species + timeseries + (1|Location), 
      data = dat,family= "binomial") 

を、あなたの新しいデータセットを作成し、これがあることに注意してください、あなたの最初の場所(アクロン)に、それぞれの種のために1から16まで、あなたの時系列を持つことになり、あなたのモデルを当てはめますあなたが場所ごとにグラフをしたい場合、あなたは自分の17箇所

new.data <-data.frame(timeseries = rep(1:16, times = 5), Species = rep(unique(dat$Species), each = 16), Location = rep(unique(dat$Location)[1], each = 80)) 

までの2まで、1から[]の数値を変更することにより、その後に予測することを行うことができ、各場所のためにこれを行う必要がありますそのようなデータセットの値および間隔

preds <- predictInterval(glmm1, newdata = new.data, n.sims = 1000) 

は今、求め続けることを躊躇しないで、あなたのnew.data

new.data <- cbind(new.data, preds) 

にこの予測に参加し、最終的にあなたが何かを理解していない場合はそれぞれの種ごとに異なる色で

ggplot(new.data, aes(x = timeseries, y = fit)) + geom_ribbon(aes(ymax=upr, ymin =lwr, fill=Species), alpha = 0.9)+ geom_line(aes(color=Species)) 

それをプロット現在の標準誤差はかなり大きいので、最初にそれが好きかどうかを確認してください。

ggplot(new.data, aes(x = timeseries, y = fit)) + geom_line(aes(color=Species)) 
+0

これは素晴らしいことです!助けてくれてありがとう。 geom_ribbon関数については、predictIntervalsをggplot2の外部で使用できますか?ちょうど私はGLMMを使用しており、GGPLOT2でそれらを実行することに非常に精通していません。私が達成しようとしているのは、問題の各種の予測確率であり、その線の周りにブートストラップされた信頼区間があります。しかし、私はRには全く新しいので、上記の間隔を各種の回帰直線にどのように統合できるかは不明です。 –

+0

@JamieMurphyデータセットを共有することができれば助けがさらに簡単になりますが、エッセンスでは各種の新しいデータセットを作成する必要がありますので、R –

+0

のサンプルデータセットを使用して試してみましょう申し訳ありません私はリンクを含めると思った。ここにあり、ありがとう! https://1drv.ms/u/s!Ao69751qWk2CglTZ04pyKGceq5BN –

関連する問題