簡體   English   中英

如何改進零膨脹負二項式回歸模型?

[英]How to improve a Zero-Inflated Negative Binomial regression model?

大家!

計數數據的分布

我有一個響應變量,它計算一個月中成功的天數,並以特殊的形狀分布(見上文)。 大約 50% 是零,並且有一個沉重的尾巴。 由於過度分散和過多的零,我被建議用零膨脹負二項式回歸模型來預測它。

然而,無論我獲得的模型有多么重要,它都幾乎沒有反映那些分布特征(見下文)。 例如,峰值始終在 4 左右,並且沒有預測低於 20。

預測分布

這通常用於擬合過度分散的重尾計數數據嗎? 還有其他方法可以改善擬合嗎? 任何建議,將不勝感激。 謝謝!


PS我也嘗試過邏輯回歸來預測零/非零。 但是,沒有一個擬合模型的性能比在所有情況下簡單地猜測零更好。

我想你做了一個擬合值的直方圖,所以這只會反映擬合的平均值,並且可能乘以零的比率,這取決於你使用的模型。 不應該重新創建該分布,因為您的數據的傳播方式已嵌入到離散參數中。

我們可以使用pscl包中的示例:

library(pscl)
data("bioChemists")
fit <- hurdle(art ~ ., data = bioChemists,dist="negbin",zero.dist="binomial")
par(mfrow=c(1,2))

hist(fit$y,main="Observed")
hist(fit$fitted.values,main="Fitted")

在此處輸入圖片說明

如前所述,在此障礙模型中,您看到的擬合值是預測均值乘以為零的比率(請參閱此處的更多信息):

head(fit$fitted.values)
        1         2         3         4         5         6 
1.9642025 1.2887343 1.3033753 1.3995826 2.4560884 0.8783207 

head(predict(fit,type="zero")*predict(fit,type="count"))
        1         2         3         4         5         6 
1.9642025 1.2887343 1.3033753 1.3995826 2.4560884 0.8783207 

為了基於擬合模型模擬數據,我們提取參數:

Theta=fit$theta
Means=predict(fit,type="count")
Zero_p = predict(fit,type="prob")[,1]

具有模擬計數的功能:

simulateCounts = function(mu,theta,zero_p){
N = length(mu)
x = rnbinom(N,mu=mu,size=THETA)
x[runif(x)<zero_p] = 0
x
}

因此,多次運行此模擬以獲得值的范圍:

set.seed(100)
simulated = replicate(10,simulateCounts(Means,Theta,Zero_p))
simulated = unlist(simulated)

par(mfrow=c(1,2))
hist(bioChemists$art,main="Observed")
hist(simulated,main="simulated")

在此處輸入圖片說明

暫無
暫無

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

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