【发布时间】:2020-03-21 19:50:44
【问题描述】:
我想在 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 比较陌生,非常感谢您的帮助。
【问题讨论】:
-
似乎 z 中等于 0 的元素数量与 z 中等于 1 的元素数量不同。因此,您试图将不同长度的向量相加。尝试这将产生您报告的错误。但是,由于您只需要两个向量的所有元素的总和,因此不需要将它们添加到 sum 函数中。您只需将
dpois参数之间的+替换为逗号,即可得到您正在寻找的答案。 -
@AllanCameron 我明白你在说什么。是的,z 中等于 0 的元素数量与等于 1 的元素数量不同。我把逗号和加号交换了,我得到了答案。谢谢你!但是,奇怪的是,我仍然收到相同的警告。这是一个值得关注的理由吗?
标签: r statistics sum conditional-statements poisson