簡體   English   中英

使用零膨脹模型估算所有因子水平的SE

[英]Estimate SE for all factor levels with zero-inflated model

我有一個相當復雜的ZINB模型。 我嘗試復制我要執行的操作的基本結構:

MyDat<-cbind.data.frame(fac1 = rep(c("A","B","C","D"),10), 
       fac2=c(rep("X",20),rep("Y",20)), 
       offset=c(runif(20, 50,60),runif(20,150,165)), 
       fac3=rep(c(rep("a1",4),rep("a2",4),rep("a3",4),rep("a4",4),rep("a5",4)),2),
       Y=c(0,0,0,1,0,0,11,10,0,0,0,5,0,0,0,35,60,0,0,0,0,2,0,0,16,0,0,0,0,0,3,88,0,0,0,0,0,0,27,0))

f<-formula(Y~fac1+ offset(log(offset))|fac3+ fac2) 
ZINB <-zeroinfl(f, dist = "negbin",link = "logit", data = MyDat)
summary(ZINB)

該模型的主要目標是研究fac1在四個級別上的作用。 其他變量更像是采樣過程的產物。

這是輸出:

Call:
zeroinfl(formula = f, data = MyDat, dist = "negbin", link = "logit")

Pearson residuals:
      Min        1Q    Median        3Q       Max 
-0.418748 -0.338875 -0.265109 -0.001566  2.682920 

Count model coefficients (negbin with log link):
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  -1.7192     0.9220  -1.865 0.062239 .  
fac1B        -4.4161     1.4700  -3.004 0.002663 ** 
fac1C        -1.2008     1.2896  -0.931 0.351778    
fac1D         0.1928     1.3003   0.148 0.882157    
Log(theta)   -1.7349     0.4558  -3.806 0.000141 ***

Zero-inflation model coefficients (binomial with logit link):
            Estimate Std. Error z value Pr(>|z|)
(Intercept) -11.5899   210.8434  -0.055    0.956
fac3a2       -0.4775     2.4608  -0.194    0.846
fac3a3      -11.2284   427.5200  -0.026    0.979
fac3a4       10.7771   210.8056   0.051    0.959
fac3a5       -0.3135     2.3358  -0.134    0.893
fac2Y        11.8292   210.8298   0.056    0.955
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Theta = 0.1764 
Number of iterations in BFGS optimization: 76 
Log-likelihood: -63.82 on 11 Df

我已經查閱過文件和統計資料書籍以及論壇,但是我仍然不確定如何顯示此信息。 我真正想要的是一個條形圖,顯示了Y軸上的效果和X軸上的4個等級。

如果我理解正確,則fac1的A級當前設置為0,並且是我的參考級(如果我在這里錯了,請更正我)。 因此,我可以繪制4個級別的圖形(包括A級為零)。 這似乎並不理想。 我真的很想在所有級別上擁有95%的CI。

我也可以使用預測函數,但是predict.zeroinfl不會給出誤差估計,並且我不確定如何解釋偏移量的影響。

類似的論文只是將原始數據的箱圖放在預測的箱圖旁邊,然后進行比較。 我覺得我應該能夠做得更好。

下面是創建預測值的代碼和圖:

MyDat$phat<-predict(ZINB, type="response")
MyDat$phat_os<-MyDat$phat/MyDat$offset

plot(phat~fac1, MyDat)

預測圖

是引導方式嗎? 我已經嘗試過了,由於不確定的事情遇到了種種麻煩。

在此先感謝您,如果我要進行愚蠢的監督/假設,請對我放輕松。 我仍在學習,但是這些統計數據讓我感覺有些遙不可及。

對於初學者,您可以繪制模型系數及其置信區間。 arm軟件包具有coefplot函數,但是它沒有用於zeroinfl模型的方法,因此我在下面使用ggplot2創建了一個簡單的系數圖。 zeroinfl模型的predict方法沒有提供預測的置信區間,但是對CrossValidated的一個問題的答案顯示了如何為zeroinfl模型構造自舉的置信區間。

關於fac1的級別: A是參考級別,因此其他級別的系數相對於fac1 = "A"

library(pscl)
library(ggplot2)

MyDat<-cbind.data.frame(fac1 = rep(c("A","B","C","D"),10), 
                       fac2=c(rep("X",20),rep("Y",20)), 
                       offset=c(runif(20, 50,60),runif(20,150,165)), 
                       fac3=rep(c(rep("a1",4),rep("a2",4),rep("a3",4),rep("a4",4),rep("a5",4)),2),
                       Y=c(0,0,0,1,0,0,11,10,0,0,0,5,0,0,0,35,60,0,0,0,0,2,0,0,16,0,0,0,0,0,3,88,0,0,0,0,0,0,27,0))

f<-formula(Y ~ fac1 + offset(log(offset))|fac3 + fac2) 
ZINB <-zeroinfl(f, dist = "negbin",link = "logit", data = MyDat)

# Extract coefficients and standard errors from model summary
coefs = as.data.frame(summary(ZINB)$coefficients$count[,1:2])
names(coefs)[2] = "se" 
coefs$vars = rownames(coefs)

# Coefficient plot
ggplot(coefs, aes(vars, Estimate)) + 
  geom_hline(yintercept=0, lty=2, lwd=1, colour="grey50") +
  geom_errorbar(aes(ymin=Estimate - 1.96*se, ymax=Estimate + 1.96*se), 
                lwd=1, colour="red", width=0) +
  geom_errorbar(aes(ymin=Estimate - se, ymax=Estimate + se), 
                lwd=2.5, colour="blue", width=0) +
  geom_point(size=4, pch=21, fill="yellow") +
  theme_bw()

這就是情節的樣子。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM