我尝试使用family = "compois"
包构建Conway麦克斯韦Poisson模型,模型运行正常,但我无法从模型中找到任何表示Conway-麦克斯韦的Lambda
和Nu
参数的输出,这阻碍了我运行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")
,但我不确定这是否真的)。
1条答案
按热度按时间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值,然后再试一次。