问题描述
在 R 中,我们下面是加权 GLM 的代码:
glm(formula,weight)
R 文档:在拟合过程中使用的可选“先验权重”向量。应为 NULL 或数值向量
在 Python 中,使用 statsmodel.formula.api:
smf.glm(formula,data,freq_weight)
Python 文档:一维频率权重数组。默认值为无。如果选择 None 或空白值,则算法将替换为长度等于 endg 的 1 数组。
R 中的“权重”是否与 Python 中的“freq_weight”相同? (我在 Python 和 R 中得到了不同的 Beta 估计值。它们很接近但略有不同)
解决方法
据我所知,R glm 权重是 var_weights
而不是 freq_weights
。
statsmodels GLM 两者都有。在某些情况下,两种权重会产生相同的结果,但并非所有家庭链接组合都适用,并且标准误差通常会有所不同。
此笔记本说明了一些差异 https://www.statsmodels.org/stable/examples/notebooks/generated/glm_weights.html
var_weights
通常用于结果变量表示多个观测值的平均值,并且方差取决于平均值中使用的观测值数量。
freq_weights
主要是一条捷径。例如,如果我们只有分类解释变量,那么 freq_weights
可用于唯一观察的计数。
我没有使用过 Python,但它可能与 Python 和 R 相关,默认情况下为模型使用不同类型的平方和。以下是 R 不同类型的概述:http://www.dwoll.de/r/ssTypes.php