我如何有条件地求和R中的潜在变量?

问题描述 投票:0回答:1
我要在R中计算以下总和:

$ \ sum ^ K_ {k = 1} [(1-z_i)log [y_i | \ lambda_0] + z_ilog [y_i | \ lambda_1]] $

其中

$ [y_i | \ lambda_ {1/2}] \ equiv Poisson(\ lambda_ {1/2})$

潜在指示符变量

$ 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

在这种情况下,我不认为这确实是我的问题。我只是不知道如何限制我的总和。 

我也尝试了以下方法:

for(i in 1:length(y)){ if(z[i]==0){ Davg=Davg-2*sum(dpois(y,lambda0,log=TRUE))/(n.mcmc-n.burn) } if(z[i]==1){ Davg=Davg-2*sum(dpois(y,lambda1,log=TRUE))/(n.mcmc-n.burn) } }

我在这里获得结果。但是我在运行MCMC算法时在另一个for循环内实现了这个for循环,并且花费的时间太长了。 

此外,我想扩展此问题,以便如果我采样

$ z_i \ in [0,1] $

,其中$ z_i $可能不必为0或1,我仍然可以计算这个和。因为这是我的主要目标,所以我觉得我目前的方法行不通,因为我仅以0或1为条件。
r mcmc
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.