小编Nat*_*oor的帖子

OLS回归:Scikit与Statsmodels?

简短版本:我在某些数据上使用了scikit LinearRegression,但我习惯于p值,因此将数据放入statsmodels OLS中,尽管R ^ 2大致相同,但变量系数都大量不同.这让我很担心,因为最可能的问题是我在某个地方犯了错误,现在我对这两个输出都没有信心(因为我可能错误地制作了一个模型,但不知道哪个模型).

更长的版本:因为我不知道问题出在哪里,我不确切地知道要包括哪些细节,包括一切可能都太多了.我也不确定包含代码或数据.

我的印象是scikit的LR和statsmodels OLS都应该做OLS,据我所知OLS是OLS所以结果应该是相同的.

对于scikit的LR,结果是(统计上)相同,无论我是否设置normalize = True或= False,我觉得有点奇怪.

对于statsmodels OLS,我使用来自sklearn的StandardScaler来规范化数据.我添加了一列,所以它包含一个拦截(因为scikit的输出包括一个拦截).更多相关内容:http://statsmodels.sourceforge.net/devel/examples/generated/example_ols.html(添加此列并未将变量系数更改为任何显着程度,并且截距非常接近于零.)StandardScaler没有不喜欢我的整数不是浮点数,所以我尝试了这个:https://github.com/scikit-learn/scikit-learn/issues/1709 这使警告消失但结果完全相同.

当然,我使用5倍cv进行sklearn方法(每次R ^ 2对于测试和训练数据都是一致的),对于statsmodels我只是把它全部丢弃.

sklearn和statsmodels的R ^ 2约为0.41(这对社会科学有益).这可能是一个好兆头或只是巧合.

数据是对WoW中的化身的观察(来自http://mmnet.iis.sinica.edu.tw/dl/wowah/),我每周都会用一些不同的功能来制作它.最初这是一个数据科学课的课程项目.

独立变量包括一周中观察的数量(int),角色等级(int),如果在公会中(布尔),当看到时(工作日的布尔,平日前夕,工作日晚,周末相同的三个),对于字符类的虚拟(在数据收集时,在WoW中只有8个类,因此有7个虚拟变量并且原始字符串分类变量被删除),以及其他类.

因变量是每个字符在该周(int)中获得的级别数.

有趣的是,类似变量中的一些相对顺序在statsmodels和sklearn之间保持不变.因此,尽管负载非常不同,但"看到"的等级顺序是相同的,并且角色类假人的等级顺序是相同的,尽管负载是非常不同的.

我认为这个问题类似于这个问题:Python statsmodels OLS和R's lm的区别

我在Python和统计数据方面做得很好,但是还不够好,可以想出这样的东西.我试着阅读sklearn docs和statsmodels docs,但是如果答案就在那里,我不理解它.

我会很高兴知道:

  1. 哪个输出可能准确?(当然,如果我错过了一个小兵,他们可能都会.)
  2. 如果我弄错了,它是什么以及如何解决它?
  3. 我可以在没有问这里的情况下想出来,如果是这样的话怎么样?

我知道这个问题有一些相当模糊的部分(没有代码,没有数据,没有输出),但我认为它更多的是关于两个包的一般过程.当然,一个似乎更多的统计数据,似乎更多的机器学习,但他们都是OLS所以我不明白为什么输出不一样.

(我甚至尝试了一些其他的OLS调用三角测量,一个给了一个低得多的R ^ 2,一个循环了五分钟而我杀了它,一个崩溃了.)

谢谢!

python linear-regression scikit-learn statsmodels

23
推荐指数
1
解决办法
2万
查看次数