【问题标题】:Efficiently evaluate Multivariate Normal有效评估多元正态
【发布时间】:2018-11-06 14:15:25
【问题描述】:

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

基本上,我必须进行大量的多变量可能性评估,并且我正在寻找一种方法来更快地完成这项工作。这是一些示例代码(数据如下):

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 次迭代。

谢谢!

【问题讨论】:

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


    【解决方案1】:

    找到解决办法:

    mnormt::dmnorm 已矢量化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      • 2017-10-14
      • 1970-01-01
      • 2018-03-10
      相关资源
      最近更新 更多