如何手动计算Gamma与逆高斯分布GLM的predict.glm响应值?
手动计算glm(Gamma/逆高斯族)响应值的正确方法
你的问题核心是误用了二项分布的logit逆变换逻辑,Gamma和逆高斯族的glm有自己的链接函数规则,而且计算响应值(均值)时不需要纳入离散参数——离散参数只影响预测的方差,不影响点估计的响应值。
一、Gamma族模型的正确计算
Gamma族glm默认使用逆链接函数(inverse link),即线性预测值η与响应值μ的关系是:η = 1/μ → 反推得 μ = 1/η
你已经正确算出了线性预测值x(也就是η),但错误用了二项分布的转换逻辑,正确操作是对x取倒数:
# 你的线性预测值计算 x = 0.108221470842499 - 0.00122165587689519 * 13.2 - 9.47425665022909e-05 * 236 - 0.000467789606041651 * 58 # 正确转换:取倒数 1/x # 结果约为26.02872,和predict输出一致
二、逆高斯族模型的正确计算
你指定了link="log",线性预测值η与响应值μ的关系是:η = log(μ) → 反推得 μ = exp(η)
直接对线性预测值x取指数即可,无需二项分布的转换:
# 你的线性预测值计算 x = 1.70049202188329 - 0.0326196928618521 * 13.2 - 0.00234379099421488 * 236 - 0.00991369000675323 * 58 # 正确转换:取指数 exp(x) # 结果约为26.02872,和predict输出一致
关于离散参数的说明
离散参数(dispersion)用于模型的方差计算(比如predict(..., type="link", se.fit=TRUE)中的标准误),但计算响应值的点估计时完全不需要用到它——predict(type="response")输出的是基于链接函数逆变换的均值估计,和离散参数无关。
内容的提问来源于stack exchange,提问作者Lis
相关产品推荐
相关产品推荐

