为啥当我使用 statsmodels 进行 OLS 和使用 scikit 进行 PooledOLS 时得到相同的结果?
Posted
技术标签:
【中文标题】为啥当我使用 statsmodels 进行 OLS 和使用 scikit 进行 PooledOLS 时得到相同的结果?【英文标题】:Why do I get the same results when I do OLS using statsmodels and PooledOLS using scikit?为什么当我使用 statsmodels 进行 OLS 和使用 scikit 进行 PooledOLS 时得到相同的结果? 【发布时间】:2020-01-28 06:33:59 【问题描述】:我目前正在使用 python 做一个机器学习项目(这里是初学者,从头开始学习一切)。
只是想知道使用我拥有的相同面板数据集的 statsmodels 的 OLS 和 scikit 的 PooledOlS 有什么区别。我都试过了,他们给了我同样的结果。这是否意味着他们本质上是在做同样的事情,但来自不同的包?我应该得到相同的结果吗?还是我做错了什么?
我的数据集如下所示:
exces-s-returnlag1m ROA ... momentum6m momentum12m
bank date ...
bankA 2019-06-30 -14.564600 0.9795 ... 0.14 -0.24
2019-05-31 7.522300 0.9795 ... -0.69 -1.97
2019-04-30 -2.020400 0.9795 ... 1.36 -1.70
bankB 2019-06-30 -5.969600 0.9915 ... -0.39 -1.77
2019-05-31 0.220200 0.9915 ... -0.24 -2.00
2019-04-30 -1.900000 0.9915 ... -0.06 -1.42
bankC 2019-06-30 2.721700 0.9763 ... -0.38 -1.13
2019-05-31 -8.418900 0.9763 ... -1.28 -1.19
2019-04-30 -1.001100 0.9763 ... -3.06 -1.16
我的数据框中目前有一个 MultiIndex(银行和日期)。我应该用它来做面板回归吗?
编辑:据我了解,PooledOLS 是多元线性回归的“特殊”情况,所以它会给出与 statsmodels 的 OLS 相同的结果?如果我错了,请纠正我!
【问题讨论】:
OLS Regression: Scikit vs. Statsmodels?的可能重复 stats.stackexchange.com/questions/146804/… becominghuman.ai/… 嗯,但这些是 OLS 与线性回归。这是否意味着面板数据的 PooledOLS 与线性回归相同? pypi.org/project/linearmodels 【参考方案1】:OLS: 普通最小二乘法 只是一种简单的计算方法。 根据正规方程的求解方式,实现可能会有所不同,但由于计算量存在差异,因此测量执行时间可能会更好。
【讨论】:
以上是关于为啥当我使用 statsmodels 进行 OLS 和使用 scikit 进行 PooledOLS 时得到相同的结果?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Statsmodels OLS 不支持在包含多个单词的列中读取?
为啥我只能从 statsmodels OLS 拟合中获得一个参数
使用 statsmodels.formula.api 中的 ols - 如何删除常数项?
AttributeError:模块“statsmodels.formula.api”没有属性“OLS”