有效评估多元正态

时间:2018-11-06 14:15:26

标签: r probability evaluation normal-distribution log-likelihood

我想评估由多元法线密度产生的数据点。我必须针对不同的均值和协方差矩阵评估每个数据点。对于每种观察,我都有两种方法来评估可能性。另外,我总体上有两个不同的方差协方差矩阵。目前,我仅考虑二维正态分布。

基本上,我必须进行很多多元似然评估,我正在寻找一种更快地进行此操作的方法。这是一些示例代码(下面的数据):

N <- 10 #number of observations
G <- 2  #number of means per observation / variance - covariance matrices

ll <- array(NA, c(N,G)) #shell for the log likelihoods

for(ii in 1:N){ #loop over data-points
  for(gg in 1:G){ #loop over groups of means / var-cov matrices

    ll[ii,gg] <- mixtools::logdmvnorm(data[ii,], #evaluate data by observation
                               mu = means[[gg]][ii,],  #mean by group by obs.
                               sigma = Sigma[[gg]])    #var-cov matrix by group

  }
}

我想要做的是:取第一个数据点,使用观察值1和协方差矩阵A的均值A对其进行评估。用观察值1和协方差矩阵B的均值B对其进行评估。取第二个数据-相对于属于观察值2 /协方差矩阵A的平均值A进行评估。然后,根据观察值2 /协方差矩阵B的平均值B进行评估。

我准备了10个数据点以及10 * 2个平均向量和2个方差协方差矩阵here。不必保留列表结构,它只是在编码过程中自然产生的。

在单变量设置中,可以通过使用dnorm()向量化的事实而具有足够快的性能。因此,在这种情况下,不需要N次迭代。

谢谢!

1 个答案:

答案 0 :(得分:0)

找到了解决方案:

mnormt::dmnorm是矢量化的。