加权 GLM:R 与 Python

问题描述

在 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