从`glm.nb()`恢复`init.theta`

问题描述 投票:0回答:1

不是

用户指定时,
glm.nb()
会自动计算init.theta

但是我似乎无法恢复用户指定的

init.theta
。当查询
model
对象时,我获得
init.theta
作为
5.028696
。这与用户指定
init.theta
时使用的值一致。

如何恢复自己指定的值?在这种情况下,它是

10^6

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

创建于 2024-07-16,使用 reprex v2.1.0

r glm
1个回答
0
投票

查看源代码,这似乎不可能,

init.theta
参数只是被覆盖:

Call$init.theta <- signif(as.vector(th), 10)

其中

th
是最初估计的 theta,由
theta.ml()

提供

init.theta
用于初始拟合,并且可以跟踪整个迭代过程,但令人烦恼的是,返回的
Initial value for 'theta': 
又是
th
。这对我来说似乎很奇怪,但我不是专家。如果这里没有其他人可以判断这是否是故意的,以及在这种情况下为什么,您可以尝试一下 R-devel 邮件列表。

user_model2 <- MASS::glm.nb(
    formula = y ~ group,
    data = input_data,
    init.theta = initial_theta,
    control = glm.control(trace=2)
  )
# Initial fit:
# Deviance = 870.37355 Iterations - 1
# Deviance = 756.80908 Iterations - 2
# Deviance = 754.42813 Iterations - 3
# Deviance = 754.42665 Iterations - 4
# Deviance = 754.42665 Iterations - 5
# Initial value for 'theta': 4.929440
# Deviance = 578.94259 Iterations - 1
# Theta(1) = 4.929440, 2(Ls - Lm) = 578.943000

(您可以设置

trace=3
以获得更详细的信息,但这对我们没有帮助)

© www.soinside.com 2019 - 2024. All rights reserved.