Statsmodels OLS函数用于多个回归参数

时间:2014-01-20 12:45:39

标签: python numpy statistics statsmodels

假设我想找到类似

的等式的alpha(a)值
y=a+ax1+ax2+...+axi

使用OLS可以说我们从i = 2的基本情况的10个值开始

#y=a+ax1+ax2

y = np.arange(1, 10)
x = np.array([[ 5, 10], [10,  5], [ 5, 15],
       [15, 20], [20, 25], [25, 30],[30, 35],
       [35,  5], [ 5, 10], [10, 15]])

使用statsmodel我通常会用以下代码来获取nx1 x和y数组的根:

import numpy as np
import statsmodels.api as sm

X = sm.add_constant(x)

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

但是当x不等于y时,这不起作用。如果你不知道OLS是什么,那么第一页上的等式为here

2 个答案:

答案 0 :(得分:1)

追溯告诉你出了什么问题

    raise ValueError("endog and exog matrices are different sizes")
ValueError: endog and exog matrices are different sizes

你的x有10个值,你的y有9个值。仅当两者具有相同数量的观察值时,回归才有效。

endog是y,exog是x,这些是statsmodels中用于独立和解释变量的名称。

如果您将y替换为

y = np.arange(1, 11)

然后一切都按预期工作。

答案 1 :(得分:0)

以上是上面的基本问题,你说你正在使用10个项目,但是你只使用了9个你的y矢量。

>>> import numpy
>>> len(numpy.arange(1, 10))
9

这是因为Python中的切片和范围可以达到但不包括停止整数。如果你做了:

numpy.arange(10)

您将拥有10个项目的列表,从0开始,以9结尾。

对于回归,您需要为每组预测变量预测变量。否则,预测变量就没用了。您也可以放弃没有预测变量的预测变量集。