如何从glm.nb()模型中恢复用户指定的init.theta值?
如何找回glm.nb()中手动指定的init.theta初始值
当未指定init.theta时,MASS::glm.nb()会自动计算该参数值。但手动指定init.theta为10^6后,查询模型对象的$call$init.theta得到的却是自动计算的5.028696(与未指定时的结果一致),如何找回自己指定的初始init.theta值?
复现代码
set.seed(54321) n <- 500 initial_theta <- 10^6 input_data <- data.frame( group = sample(letters[1:4], size = n, replace = TRUE), y = rnbinom(n, size = 5, mu = 2) ) user_model <- MASS::glm.nb( formula = y ~ group, data = input_data, init.theta = initial_theta ) auto_model <- MASS::glm.nb( formula = y ~ group, data = input_data )
问题验证代码
user_model$call$init.theta #> [1] 5.028696
auto_model$call$init.theta #> [1] 5.028696
原因说明
glm.nb()在拟合模型时,会将call对象中的init.theta替换为最终估计得到的theta值,而非保留你手动指定的初始值,因此无法从模型的$call属性中获取最初设定的初始值。
解决方法
方法一:直接使用预先定义的变量
如果你在指定init.theta时用了一个变量(比如代码中的initial_theta),直接调用该变量即可获取初始值:initial_theta #> [1] 1000000方法二:给模型对象添加自定义属性
可以手动给模型对象添加一个属性来存储初始值,方便后续关联查询:# 给模型添加自定义属性 user_model$specified_init_theta <- initial_theta # 查看指定的初始值 user_model$specified_init_theta #> [1] 1000000
内容的提问来源于stack exchange,提问作者jcken
相关产品推荐
相关产品推荐

