如何解决带有二项式回归的Python和R的不同GLM结果
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()
具有由Python equivalent to R poly() function?创建的多项式函数 那么结果是
解决方法
According to the documentation,statsmodels GLM
不会自动包含R模型所包含的拦截项。尝试在您作为exog
传递给sm.GLM
的矩阵中包括一列。文档指出,为此目的存在一个便捷功能:statsmodels.tools.add_constant
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。