scipy.stats.linregress、numpy.polynomial.polynomial.polyfit 和 statsmodels.api.OLS 之间的差异
Difference(s) between scipy.stats.linregress, numpy.polynomial.polynomial.polyfit and statsmodels.api.OLS
好像这三个函数都可以做简单的线性回归,例如
scipy.stats.linregress(x, y)
numpy.polynomial.polynomial.polyfit(x, y, 1)
x = statsmodels.api.add_constant(x)
statsmodels.api.OLS(y, x)
请问这三种方法有什么本质上的区别吗?我知道 statsmodels
是建立在 scipy
之上的,而 scipy
在很多方面有点依赖于 numpy
,所以我希望它们不会有太大差异,但是魔鬼总是在细节中。
更具体地说,如果我们使用上面的numpy
方法,我们如何获得其他两种方法默认给出的斜率p-value
?
我在 Python 3 中使用它们,如果有任何不同的话。
Scipy 似乎快了很多——顺便说一下,这实际上与我的预期相反!
x = np.random.random(100000)
y = np.random.random(100000)
%timeit numpy.polynomial.polynomial.polyfit(x, y, 1)
100 loops, best of 3: 8.89 ms per loop
%timeit scipy.stats.linregress(x,y)
100 loops, best of 3: 1.67 ms per loop
这三者非常不同,但对于只有一个解释变量的非常简单的例子的参数估计有重叠。
通过增加通用性:
scipy.stats.linregress
仅处理具有专用代码的单个解释变量的情况,并计算一些额外的统计数据。
numpy.polynomial.polynomial.polyfit
估计单个变量的多项式的回归,但在额外统计方面return 并不多。
statsmodels
OLS
是一般线性模型 (OLS) 估计 class。它不预先指定解释变量是什么,并且可以处理任何解释变量的多元数组,或公式和 pandas DataFrame。它不仅是return估计的参数,还有大量的结果统计和统计推断与预测的方法。
为了在 Python(贝叶斯分析之外)中估计线性模型的选项的完整性,我们还应该考虑 scikit-learn
LinearRegression
和类似的线性模型,这对于选择很有用在大量解释变量中,但没有 statsmodels 提供的大量结果。
好像这三个函数都可以做简单的线性回归,例如
scipy.stats.linregress(x, y)
numpy.polynomial.polynomial.polyfit(x, y, 1)
x = statsmodels.api.add_constant(x)
statsmodels.api.OLS(y, x)
请问这三种方法有什么本质上的区别吗?我知道 statsmodels
是建立在 scipy
之上的,而 scipy
在很多方面有点依赖于 numpy
,所以我希望它们不会有太大差异,但是魔鬼总是在细节中。
更具体地说,如果我们使用上面的numpy
方法,我们如何获得其他两种方法默认给出的斜率p-value
?
我在 Python 3 中使用它们,如果有任何不同的话。
Scipy 似乎快了很多——顺便说一下,这实际上与我的预期相反!
x = np.random.random(100000)
y = np.random.random(100000)
%timeit numpy.polynomial.polynomial.polyfit(x, y, 1)
100 loops, best of 3: 8.89 ms per loop
%timeit scipy.stats.linregress(x,y)
100 loops, best of 3: 1.67 ms per loop
这三者非常不同,但对于只有一个解释变量的非常简单的例子的参数估计有重叠。
通过增加通用性:
scipy.stats.linregress
仅处理具有专用代码的单个解释变量的情况,并计算一些额外的统计数据。
numpy.polynomial.polynomial.polyfit
估计单个变量的多项式的回归,但在额外统计方面return 并不多。
statsmodels
OLS
是一般线性模型 (OLS) 估计 class。它不预先指定解释变量是什么,并且可以处理任何解释变量的多元数组,或公式和 pandas DataFrame。它不仅是return估计的参数,还有大量的结果统计和统计推断与预测的方法。
为了在 Python(贝叶斯分析之外)中估计线性模型的选项的完整性,我们还应该考虑 scikit-learn
LinearRegression
和类似的线性模型,这对于选择很有用在大量解释变量中,但没有 statsmodels 提供的大量结果。