我正在使用一个函数来计算似然密度。
我正在遍历两个长度为7的向量x
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的公式我不认为这是正确的。你知道这里出了什么问题吗?
如果dt
是(7,7)数组,(1-dt)
也是(7,7),(1-dt)*x0
中的*
运算符是元素的乘法,如果x0
是长度为7的向量,结果将是(7,7)数组。
我猜你的意思是使用矩阵乘法,你可以使用x0 - dt @ x0
(其中@
表示矩阵乘法运算符)。