对于模拟,我需要计算两个离散随机变量乘积的分布。虽然我可以从头开始实现它,但我认为distr
包已经提供了此功能。
在包中实现的operatorsI似乎没有文档,但是,通过尝试,我已经弄清楚+
代表卷积运算(独立随机变量之和):
> X <- DiscreteDistribution(supp=c(-1,0,1), prob=c(0.25,0.5,0.25))
> Y <- X + X
> attr(Y, "support")
[1] -2 -1 0 1 2
> d(Y)(attr(Y, "support"))
[1] 0.0625 0.2500 0.3750 0.2500 0.0625
字符串
虽然似乎有一个乘法运算符(至少methods(class="DiscreteDistribution")
报告了一个),但它并不像预期的那样工作(实际上,它根本不工作):
> Y <- X * X
Error in apply(mixDistr.dfs, 1, all) : dim(X) must have a positive length
型
有没有人知道如何计算两个离散独立随机变量的乘积distr
的分布?或者这个包缺少这个功能?
2条答案
按热度按时间1hdlvixo1#
数学运算符 * 的方法 * 已记录在案。抬头看
字符串
你会发现一个关于操作符如何在包中的不同类上工作的描述。
*
只有一个签名,涉及“DiscreteDistribution”类:*
签名(e1 =“DiscreteDistribution”,e2 =“numeric”)“AffLinDiscreteDistribution”类的结果这可以通过执行以下操作来证明:
型
yi0zb3m42#
原来这是
distr
中的一个bug。正如@allan-cameron所指出的,发行版的操作符是用
?'operators-methods'
来记录的。对于任意分布(AcDcLcDistribution
类),列出了一个乘法运算符,这确实适用于大多数情况:字符串
由于
distr
中的一个bug,我的示例无法工作。我已经向distr
的维护者报告了这个问题,这个bug将在即将发布的2.9.3版本中得到修复。