You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 01:40:01