R语言 如何从glmmTMB Conway-Maxwell Poisson回归模型中提取Lambda和Nu参数

yk9xbfzb  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(70)

我尝试使用family = "compois"包构建Conway麦克斯韦Poisson模型,模型运行正常,但我无法从模型中找到任何表示Conway-麦克斯韦的LambdaNu参数的输出,这阻碍了我运行Conway-麦克斯韦随机数生成器进行模拟
一些简单的代码来说明这一点

install.packages("COMPoissonReg")
install.packages("glmmTMB")
library(COMPoissonReg)
library(glmmTMB)

#Create artificial COM poisson count data as response variable
data <- data.frame(Response = rcmp(5000, lambda = 3, nu = 2))
#Create artificial poisson count data as explanatory variable
data$Covariate <- rpois(5000, lambda = 1)*data$Response

#Run ConwayMaxwellPois glmmTMB regression model
Mod <- glmmTMB(Response ~ Covariate, 
               family = "compois",
               data = data)
summary(Mod)

#Check Models structure
str(Mod)

#Predict mu
predict(Mod, type = "response")
#Predict dispersion parameters
predict(Mod, type = "disp")

字符串
predict(Mod, type = "response")返回实际的平均值,而不是lambda,predict(Mod, type = "disp")返回小的十进制值,我认为这些不是Nu(我从一些来源中读到实际的Nu是1/predict(Mod, type = "disp"),但我不确定这是否真的)。

tjrkku2a

tjrkku2a1#

1/predict(Mod, type = "disp")是nu。您的模拟数据不具有nu=2,因为此data$Covariate <- rpois(5000, lambda = 1)*data$Response不遵循具有对数链接的GLM的方程。
您是否考虑过使用glmmTMB内置的simulate()函数?它可以从您的拟合模型进行模拟。在第392页here上有一个示例
否则,Huang 2017中的方程2.2 here定义了lambda。您可以使用uniroot()函数来求解给定每个mu值的lambda方程。求和到一个较高的y值,而不是无穷大;然后尝试一个较高的y值,以确认解不会改变。如果它改变了,然后求和到一个较高的y值,然后再试一次。

相关问题