加权 GLM:R 与 Python

Weighted GLM: R Vs Python

在 R 中,我们下面是加权 GLM 的代码:

glm(formula, weight)

R 文档:在拟合过程中使用的“先验权重”的可选向量。应为 NULL 或数值向量

在Python中,使用statsmodel.formula.api:

smf.glm(formula, data, freq_weight)

Python 文档:一维频率权重数组。默认值为 None。如果选择 None 或空白值,则算法将替换为长度等于 endog 的 1 数组。

R中的“权重”是否与Python中的“freq_weight”相同? (我在 Python 和 R 中得到不同的 Beta 估计值。它们很接近但略有不同)

我没有使用过 Python,但它可能与 Python 和 R 默认情况下对模型使用不同类型的平方和有关。以下是 R 的不同类型的概述:http://www.dwoll.de/r/ssTypes.php

据我所知,R glm 权重是 var_weights 而不是 freq_weights

statsmodels GLM 两者都有。在某些情况下,两种权重产生相同的结果,但并非对所有家族 link 组合,标准误差通常可能不同。

此笔记本说明了一些差异 https://www.statsmodels.org/stable/examples/notebooks/generated/glm_weights.html

var_weights 通常用于当结果变量表示多个观察值的平均值并且方差取决于平均值中已使用的观察值的数量时。

如果我们有几个相同的观察结果,

freq_weights 主要是一个捷径。例如,如果我们只有分类解释变量,那么 freq_weights 可用于唯一观察值的计数。