微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有二项式回归的Python和R的不同GLM结果

如何解决带有二项式回归的Python和R的不同GLM结果

我有以下带有二项式回归的R代码适合x的y和多项式

res = glm(df.mat ~ poly(x,deg=degree),family=binomial(link="logit"))

结果是

R code result

但是,当我在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()

具有由Python equivalent to R poly() function?创建的多项式函数 那么结果是

Python result

解决方法

According to the documentation,statsmodels GLM不会自动包含R模型所包含的拦截项。尝试在您作为exog传递给sm.GLM的矩阵中包括一列。文档指出,为此目的存在一个便捷功能:statsmodels.tools.add_constant

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。