[英]Statsmodels OLS function for multiple regression parameters
可以说我想找到一个方程的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。
追溯信息告诉您出了什么问题
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)
然后一切都会按预期进行。
这是上面的基本问题,您说您使用的是10个项目,但您的y的向量仅使用了9个项目。
>>> import numpy
>>> len(numpy.arange(1, 10))
9
这是因为Python中的分片和范围最多但不包括终止整数。 如果您已完成:
numpy.arange(10)
您将有10个项目的清单,从0开始,以9结尾。
对于回归,您需要为每组预测变量使用一个预测变量。 否则,预测变量将毫无用处。 您也可以丢弃没有预测变量的一组预测变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.