首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将proc logistic SAS复制到Python中的logistic回归存在问题(Intercept和变量系数之一不匹配)

将proc logistic SAS复制到Python中的logistic回归存在问题(Intercept和变量系数之一不匹配)
EN

Stack Overflow用户
提问于 2022-08-24 14:29:43
回答 1查看 151关注 0票数 0

我研究了如何用Python将proc logistic从SAS复制到Logistic回归,并提出了以下观察:

  1. SAS使用未受惩罚的回归,而python默认使用penalty=l2。所以我把它改成了penalty=none.
  2. SAS,它有默认的收敛准则GCONV=1E-8。Python对于tol= 1e-4的收敛条件有默认值。我已将其更新为1e-8.
  3. ,我使用了solver=lbfgs (在Python中的默认值).

根据我在网上发现的文章,参数变化1和2应该得到所有模型变量的截距和系数输出,这些变量在SAS和Python实现中几乎没有小数点。

SAS代码:

代码语言:javascript
复制
proc logistic DESCENDING data=dataset_name;
model target_var=&modelvariables/ selection = none CLPARM=WALD lackfit RSQ STB ;
output out=result p=pred;
run;

Python代码:

代码语言:javascript
复制
clf=LogisticRegression(penalty='none',solver='lbfgs',tol=0.00000001)
clf.fit(X, y)

当我比较SAS和Python输出时,我遇到了一个问题,因为拦截器的差值为2,其中一个变量的系数与符号相反。

示例:

拦截: SAS (-7.03),Python (-5.21)系数中的一个变量: SAS (2.56),Python (-2.45)

如果我把剩余的变量系数相加到小数点以下,那么剩下的变量系数就匹配了。

有人能建议Python中是否需要其他参数更改吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-08-29 12:50:23

我使用了以下代码,SAS和Python回归的结果是匹配的。

代码语言:javascript
复制
clf=LogisticRegression(penalty='none',solver='newton-cg',tol=0.00000001)
clf.fit(X, y)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73474962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档