import statsmodels.api as sm
x = [[1,2,3]]*100
y = [1,2]*50
model = sm.OLS(x, y).fit() # <---- ValueError
model.summary()
# ValueError: shapes (100,3) and (100,3) not aligned: 3 (dim 1) != 100 (dim 0)
字符串 按正确顺序传递参数可解决此错误:
model = sm.OLS(y, x).fit() # <---- OK
# ^^^^ <---- change the order of `y` and `x`
model.summary()
6条答案
按热度按时间p4rjhz4m1#
将矩阵转换为数组
字符串
解决了这个问题
2fjabf4q2#
第一个矩阵的列和第二个矩阵的行应该是相等的,顺序应该只像这样
字符串
并且不遵循以下步骤
型
它将抛出错误
atmip9wb3#
与标准算术不同,它需要匹配的维度,点积要求维度是以下之一:
(X..., A, B) dot (Y..., B, C) -> (X..., Y..., A, C)
,其中...
表示“0个或多个不同的值(B,) dot (B, C) -> (C,)
个(A, B) dot (B,) -> (A,)
个(B,) dot (B,) -> ()
个你的问题是你正在使用
np.matrix
,这在你的代码中是完全不必要的--np.matrix
的主要目的是将a * b
转换为np.dot(a, b)
。一般来说,np.matrix
可能不是一个好的选择。ckocjqey4#
字符串
两个数组的点积。
对于N维,它是
a
的最后一个轴和b
的倒数第二个轴的和积。文件:numpy.dot的数据。
acruukt95#
解:将n2的转置输入点积:
第一个月
要使点积有效,输入矩阵的维数必须满足一定的条件:第一矩阵的列的大小=第二矩阵的行的大小。
你有两个维度为(1,3)的矩阵:
x1.shape => (1,3), n2.shape => (1,3)
。按照上面的规则,您需要x1.shape => (1,3), n2.shape => (3,1)
。这很容易通过取n2的转置来实现,如上所示。jdg4fx2g6#
使用
statsmodels
时也可能出现此错误。内生变量是statsmodels.api.OLS
中的第一个位置参数,因此打乱顺序会显示此错误。比如说,字符串
按正确顺序传递参数可解决此错误:
型