我用一个函数来计算似然密度。
我正在运行两个x,它们是长度为7的向量。
def lhd(x0, x1, dt): #Define a function to calculate the likelihood density given two values.
d = len(x0) #Save the length of the inputs for the below pdf input.
print(d)
print(len(x1))
lh = multivariate_normal.pdf(x1, mean=(1-dt)*x0, cov=2*dt*np.identity(d)) #Take the pdf from a multivariate normal built from x0, given x1.
return lh #Return this pdf value.
这里的均值是一个长度为7的向量,协方差是一个(7,7)数组。
当我运行这个程序时,我得到了错误
ValueError: Array 'mean' must be a vector of length 49.
但是看着pdf的公式,我不认为这是正确的。知道这里出了什么问题吗?
1条答案
按热度按时间3hvapo4f1#
如果
dt
是(7,7)数组,(1-dt)
也是(7,7),(1-dt)*x0
中的*
运算符是元素级乘法,如果x0
是长度为7的向量,结果将是(7,7)数组。我猜你的意思是使用矩阵乘法,你可以使用
x0 - dt @ x0
(其中@
表示矩阵乘法运算符)。