【发布时间】:2011-12-27 10:00:36
【问题描述】:
下面的代码按预期工作,但这不是我所需要的。我想将 c[1] 更改为 c[1:] 以便我回归所有 x 变量而不仅仅是一个。当我进行更改(并添加适当的 x 标签)时,我收到以下错误:ValueError: matrices are not aligned。有人可以解释为什么会发生这种情况并建议修改代码吗?谢谢。
from numpy import *
from ols import *
a = [[.001,.05,-.003,.014,.035,-.01,.032,-.0013,.0224,.005],[-.011,.012,.0013,.014,-.0015,.019,-.032,.013,-.04,-.05608],
[.0021,.02,-.023,.0024,.025,-.081,.032,-.0513,.00014,-.00015],[.001,.02,-.003,.014,.035,-.001,.032,-.003,.0224,-.005],
[.0021,-.002,-.023,.0024,.025,.01,.032,-.0513,.00014,-.00015],[-.0311,.012,.0013,.014,-.0015,.019,-.032,.013,-.014,-.008],
[.001,.02,-.0203,.014,.035,-.001,.00032,-.0013,.0224,.05],[.0021,-.022,-.0213,.0024,.025,.081,.032,.05313,.00014,-.00015],
[-.01331,.012,.0013,.014,.01015,.019,-.032,.013,-.014,-.012208],[.01021,-.022,-.023,.0024,.025,.081,.032,.0513,.00014,-.020015]]
c = column_stack(a)
y = c[0]
m = ols(y, c[1], y_varnm='y', x_varnm=['x1'])
print m.summary()
编辑:我想出了一个部分解决方案,但仍然有问题。下面的代码适用于 9 个解释变量中的 8 个。
c = column_stack(a)
y = c[0]
x = column_stack([c[i] for i in range(1, 9)])
m = ols(y, x, y_varnm='y', x_varnm=['x1','x2','x3','x4','x5','x6','x7','x8'])
print m.summary()
但是,当我尝试包含第 9 个 x 变量时,我收到以下错误:RuntimeWarning: divide by zero encountered in double_scalars。知道为什么吗?这是代码(注意len(a) = 10):
c = column_stack(a)
y = c[0]
x = column_stack([c[i] for i in range(1, len(a))])
m = ols(y, x, y_varnm='y', x_varnm=['x1','x2','x3','x4','x5','x6','x7','x8','x9'])
print m.summary()
【问题讨论】:
-
什么是
ols?对我来说,这意味着“普通最小二乘法”,但是您不会使用单独的库吗? -
OLS 是一个适用于 Numpy 的类。它估计一个多元回归模型并提供拟合统计数据。