![](/img/trans.png)
[英]In R, plot emmeans of glmmTMB linear model. Error in linkinv(summ$the.emmean) : could not find function "linkinv"
[英]GlmmTMB model and emmeans
我是 glmmtmb 模型的新手,所以遇到了問題。 我構建了一個 model,然后基於 AICtab 和 DHARMa,這是最好的:
Insecticide_2<- glmmTMB(Insect_abundace~field_element+land_distance+sampling_time+year+treatment_day+(1|field_id),
data=Insect_002,
family= nbinom2)
在 glmmTMB 之后,我運行了 Anova(來自 Car),然后是 emmeans,但是 emmeans 中 p 值的結果是相同的(不是 lower.CL 或 upper.CL)。 可能是什么問題? model 是否過擬合? 我做 emmeans 的方式是錯誤的嗎?
Anova 還顯示 land_distance、sampling_time、treatment_day 顯着,年份幾乎顯着 (p= 0.07)
comp_emmeans1<-emmeans(Insect_002, pairwise ~ land_distance|year , type = "response")
> comp_emmeans1
$emmeans
Year = 2018:
land_distance response SE df lower.CL upper.CL
30m 2.46 0.492 474 1.658 3.64
50m 1.84 0.369 474 1.241 2.73
80m 1.36 0.283 474 0.906 2.05
110m 1.25 0.259 474 0.836 1.88
Year = 2019:
land_distance response SE df lower.CL upper.CL
30m 3.42 0.593 474 2.434 4.81
50m 2.56 0.461 474 1.799 3.65
80m 1.90 0.335 474 1.343 2.68
110m 1.75 0.317 474 1.222 2.49
Results are averaged over the levels of: field_element, sampling_time, treatment_day
Confidence level used: 0.95
Intervals are back-transformed from the log scale
$contrasts
year = 2018:
contrast ratio SE df null t.ratio p.value
30m / 50m 1.34 0.203 474 1 1.906 0.2268
30m / 80m 1.80 0.279 474 1 3.798 0.0009
30m / 110m 1.96 0.311 474 1 4.239 0.0002
50m / 80m 1.35 0.213 474 1 1.896 0.2311
50m / 110m 1.47 0.234 474 1 2.405 0.0776
80m / 110m 1.09 0.176 474 1 0.516 0.9552
year = 2019:
contrast ratio SE df null t.ratio p.value
30m / 50m 1.34 0.203 474 1 1.906 0.2268
30m / 80m 1.80 0.279 474 1 3.798 0.0009
30m / 110m 1.96 0.311 474 1 4.239 0.0002
50m / 80m 1.35 0.213 474 1 1.896 0.2311
50m / 110m 1.47 0.234 474 1 2.405 0.0776
80m / 110m 1.09 0.176 474 1 0.516 0.9552
Results are averaged over the levels of: field_element, sampling_time, treatment_day
P value adjustment: tukey method for comparing a family of 4 estimates
Tests are performed on the log scale
我應該使用不同的比較方式嗎? 我看到有的用poly~,我試了一下,結果圖片是一樣的。 我也在比較正確的東西嗎?
最后一個也是重要的問題是我應該如何報告 glmmTMB、Anova 和 emmeans 結果?
我不記得以前見過這個問題,但已經 8 個月了,也許我只是忘記了。
無論如何,我不確定到底是什么問題,但是發生的三件事可能會引起一些混亂:
emmeans()
調用具有規范pairwise ~ land_distance|year
,這導致它計算均值和成對比較。 我認為將這些步驟分開幾乎總是能更好地為用戶服務,因為估計均值和估計對比是兩件不同的事情。
默認的均值匯總方式(估計值、SE 和置信區間)不同於比較或其他對比的默認方式(估計值、SE、t 比率和調整后的 P 值)。 這是因為,正如我之前所說,有兩種不同的東西,通常人們想要 CI 表示均值,而 P 值表示對比。 見下文。
這個 model 中有一個對數鏈接,在對比方面具有特殊屬性,因為對數刻度的差異是比率的對數。 因此,當我們有type = "response"
時,我們會顯示一個比率。 (對於大多數其他鏈接函數,無法反向轉換轉換值的差異。)
根據 (1),我的建議是首先獲取方法(而不是比較):
EMM <- emmeans(Insect_002, ~ land_distance|year , type = "response")
EMM # see the estimates
接下來可以進行成對比較:
CON <- pairs(EMM) # or contrast(EMM, "pairwise")
CON # see the ratios as shown in the OP
confint(CON) # see confidence intervals instead of tests
confint(CON, type = "link") # See the pairwise differences on the log scale
如果您真的想要響應尺度上的差異而不是比率,那也是可能的:
pairs(regrid(EMM)) # tests
confint(pairs(regrid(EMM)) # CIs
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.