在给定潜在指标的情况下,如何有条件地求和?

How can I conditionally sum given a latent indicator?

我想在 R 中计算以下总和:

$\sum^K_{k=1} [(1-z_i) * log[y_i|\lambda_0] + z_i * log[y_i|\lambda_1]]$, where [y_i|\lambda_{1/2}] follows a Poisson(\lambda_{1/2}) distribution.

潜在指示变量 z_i 等于 0 或 1,在向量 z 中提供。

目前我的 R 脚本中有这段代码:

sum(dpois(y,lambda0,log=TRUE)[z==0]+dpois(y,lambda1,log=TRUE)[z==1])

我收到以下错误,

longer object length is not a multiple of shorter object length

在这种情况下,我认为这不是我的问题。我只是不知道如何调整我的总结。我是 R 的新手,非常感谢您的帮助。

如果你的 yz 长度相等,那么你可以试试下面的代码,我相信它在数学上等同于你的 objective

sum(dpois(y,lambda0,log=TRUE)*(1-z)+dpois(y,lambda1,log=TRUE)*z)