python - 具有二项式回归的 Python 和 R 的不同 GLM 结果
问题描述
我有以下带有二项式回归的 R 代码来拟合 x 的 y 和多项式
res = glm(df.mat ~ poly(x, deg=degree), family=binomial(link="logit"))
结果是
但是,当我在 Python 中使用statsmodels GLM 函数时
import statsmodels.api as sm
def poly(x, d):
x = np.array(x)
X = np.transpose(np.vstack((x**k for k in range(d+1))))
return np.linalg.qr(X)[0][:,1:]
res_m = sm.GLM(np.array(df_mat), poly(x, 7), family = sm.families.Binomial())
result = res_m.fit()
解决方案
根据文档, statsmodelsGLM
不会自动包含截距项,而 R 模型会这样做。尝试在传递exog
给sm.GLM
. 文档指出为此目的存在一个便利功能:statsmodels.tools.add_constant
.
推荐阅读
- mysql - 更正学生出勤条目的 mySQL 查询
- .net - 试图从 mp3 文件中读取元数据但得到 MetadataExtractor.ImageProcessingException: MPEG-2.5 not supported
- php - Azure appservice“'/home'之外的任何数据都不会持久化”
- python - 使用 Gensim 删除停用词
- amazon-web-services - CloudFront 不尊重行为路径 -> 起源
- jdbc - 开始工作时kettle会触发所有数据库连接吗?
- python - 如何根据列表的相似性自动将列表分组
- php - 在 dropzone 中上传后如何更改删除?
- r - 通过仅选择前几行中大于某个数字的递增值来设置子集
- javascript - 如何在 Vuejs 中防止Default()?