广义伽玛 GLM

机器算法验证 广义线性模型 伽马分布
2022-03-13 19:43:13

广义 gamma 分布是二参数 gamma 分布的概括:https ://en.wikipedia.org/wiki/Generalized_gamma_distribution

但是我在 R(或 python)中找不到让我在 GLM 框架中使用它的实现,比如 glm(y ~ x, family(GenGamma)).

我只能在 flexsurv 包中找到分发定义,但仅用于生存用途。

有没有办法在 GLM 设置中使用广义伽玛?

更新:

@Glen_b 建议的方法1.效果很好:

library(flexsurv)
df <- data.frame(y = runif(100, 1, 10), x1 = rnorm(100))
flexsurvreg(Surv(y) ~ x1, data = df, dist = "gengamma")
1个回答

有几个相当明确的选择。

  1. 您可以使用生存模型。将响应值视为所有未经审查的生存时间。例如,我使用这种策略来拟合 Weibull 模型;它通常工作得很好。

    这里有一个例子,展示了使用 Weibull 模型来处理非生存数据。[这里有第二个例子fitdistr在通常的方法遇到问题的情况下,使用它来简单地拟合 Weibull 分布。]

    这两个例子应该足以传达一般思想,并将其应用于广义伽马。

  2. 如果您知道“功率”参数(p在 Wikipedia 链接中)您可以将数据转换为 Gamma 并使用 GLM。

  3. 如果p是未知的,你可以使用条件p您可以拟合 GLM(然后对比例参数进行 ML 估计,例如通过 MASS 中的相关函数 - 它使用类似的想法)以获得轮廓似然性p, 以获得整体 MLEp和伽马参数。

  4. 或者,您可以尝试使用可能性的直接优化。