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

如何使用R包在Tweedie GLM模型中将离散参数设置为phi=1

固定离散参数phi=1的Tweedie GLM拟合方案

核心原理

Tweedie GLM属于指数分散族模型,其回归系数的极大似然点估计本身不依赖离散参数phi的取值,只有标准误、p值、置信区间等推断结果会受phi取值影响。固定phi=1、其余参数用极大似然估计的需求可通过主流统计工具直接实现。

实现示例

R语言

使用statmod和tweedie包实现:

  • 依赖安装加载
install.packages(c("statmod", "tweedie"))
library(statmod)
library(tweedie)
  • 固定Tweedie幂参数p的场景(如复合泊松伽马场景常用p=1.5)
# 定义Tweedie分布族,link.power=0对应对数链接
tweedie_fam <- tweedie(var.power = 1.5, link.power = 0)
# 拟合模型
glm_fit <- glm(y ~ x1 + x2 + x3, family = tweedie_fam, data = your_data)
# 输出固定phi=1的推断结果
summary(glm_fit, dispersion = 1)
  • 需同时估计幂参数p的场景
# 自定义p的搜索范围
p_seq <- seq(1.2, 1.8, 0.05)
# 固定phi=1做剖面似然估计
prof <- tweedie.profile(y ~ x1 + x2 + x3, p.vec = p_seq, data = your_data, phi.true = 1)
# 取似然最大的p值
p_est <- prof$p.max
# 用最优p重新拟合模型输出结果
tweedie_fam_final <- tweedie(var.power = p_est, link.power = 0)
glm_fit_final <- glm(y ~ x1 + x2 + x3, family = tweedie_fam_final, data = your_data)
summary(glm_fit_final, dispersion = 1)

Python

使用statsmodels库实现,拟合时指定scale=1即可固定phi=1:

import statsmodels.api as sm
import pandas as pd

# 加载并预处理数据,需手动添加截距项
your_data = pd.read_csv("your_data_path.csv")
X = sm.add_constant(your_data[["x1", "x2", "x3"]])
y = your_data["response_col"]

# 定义Tweedie分布族,固定p=1.5,使用对数链接
tweedie_fam = sm.families.Tweedie(link=sm.families.links.log(), var_power=1.5)
# 拟合模型,scale=1即固定phi=1,其余参数用MLE估计
glm_fit = sm.GLM(y, X, family=tweedie_fam).fit(scale=1)

# 输出拟合结果
print(glm_fit.summary())

如果需要估计幂参数p,固定phi=1的前提下可对p做网格搜索,遍历不同var_power取值拟合模型,取对数似然最大的取值即可。

内容的提问来源于stack exchange,提问作者Sara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:45:07