Python OLS计算

时间:2010-10-28 06:23:04

标签: python

在python中有没有好的库来计算线性最小二乘OLS(普通最小二乘法)?

感谢。

编辑:

感谢SciKits和Scipy。 @ars:X可以是矩阵吗?一个例子:

y(1) = a(1)*x(11) + a(2)*x(12) + a(3)*x(13)
y(2) = a(1)*x(21) + a(2)*x(22) + a(3)*x(23)
...........................................
y(n) = a(1)*x(n1) = a(2)*x(n2) + a(3)*x(n3)

那么如何在示例中传递Y和X矩阵的参数?

另外,我没有太多的代数背景,如果你们能让我知道这个问题的好教程,我将不胜感激。

非常感谢。

2 个答案:

答案 0 :(得分:9)

试用statsmodels包。这是一个简单的例子:

import pylab
import numpy as np
import statsmodels.api as sm

x = np.arange(-10, 10)
y = 2*x + np.random.normal(size=len(x))

# model matrix with intercept
X = sm.add_constant(x)

# least squares fit
model = sm.OLS(y, X)
fit = model.fit()

print fit.summary()

pylab.scatter(x, y)
pylab.plot(x, fit.fittedvalues)

更新为了回应更新的问题,是的,它适用于矩阵。请注意,上面的代码包含数组形式的x数据,但我们构建了一个矩阵X(大写X)以传递给OLSadd_constant函数只是构建矩阵,第一列初始化为拦截的列。在您的情况下,您只需传递X矩阵而无需中间步骤即可。

答案 1 :(得分:4)

你看过SciPy吗?我不知道是不是这样,但我想它会。