我尝试使用dist包创建一个随机变量,其中起点和终点具有一定程度的不确定性(测量到一秒钟内),但我无法绕过以下警告:
1:在.discretizeP(e1,lower,upper,h):
网格近似太宽,增加DefaultNrFFTGridPointsExponent
有时错误的第一个参数是e2而不是e1。
这是一个显示我的问题的MWE:
require ( distr )
require ( distrEx )
distroptions("DefaultNrFFTGridPointsExponent" = 12)
U <- Unif(Min = 0, Max = 1)
t1 <- 2*U + 53 + 2*U
t2 <- 1*U + 39 + 1*U
t3 <- 1*U + 40 + 1*U # Warning, e1 and e2
t4 <- convpow(U,2) + 39
t5 <- convpow(U,2) + 40
t6 <- 2*U + 39 + 1*U # Warning, e2 only
distroptions("DefaultNrFFTGridPointsExponent" = 18)
U <- Unif(Min = 0, Max = 1)
t7 <- 1*U + 40 + 1*U # Warning, e1 and e2
t8 <- 2*U + 39 + 1*U # Warning, e2 only
虽然 convpow 似乎效果更好,但如果我在t8中的任何一端有不同的不确定性,它就无济于事。更改 distroptions 似乎也没有效果。
我很惊讶转移分布(增加40而不是39)会产生这样的影响。难道我做错了什么?我可以用像convpow这样的东西修改它,或者通过更改不同的选项吗?或者我需要“滚动我自己的”分布近似值吗?分布似乎没有问题,但是知道准确性对于这个项目非常重要,即使我以某种方式增加了允许的错误。
我应该补充一点,我打算对结果做更多的事情,例如划分一个r.v.另一个r.v.,这是我的决定尝试发行而不是整合。
可能不必要的背景
我只在R中编程了几年。我正在尝试使用 distr 包来处理以下情况;在一定距离内,物体以已知速度(从试验到试验可能不同)移动的时间进行多次试验。多次试验用于改善距离的估计。
时间无法准确测量。为了论证,计时器具有1s精度。对象不会在时间0开始,因此时间可以在开始和结束时最多变化一秒。因此,如果物体通过起点,比如10s,然后结束于51s,那么它可能在40到42秒之间。
答案 0 :(得分:0)
虽然我仍然不知道为什么U+40+U
比U+39+U
更糟糕,但我已经找到了解决问题的方法。
与t4
和t5
与t2
和t3
相比,卷积效果更好。问题在于我无法对两个不同的统一分布进行卷积,因为convpow
仅适用于单个分布类型。
关键是+
运算符在distr
中过载以利用此功能。所以重新安排这些术语(并删除无用的系数,虽然我认为这可能是多余的)会产生不同的结果:
U + 40 + U # Generates warnings
U + U + 40 # No warnings
虽然它没有解释奇怪的行为,但至少它解决了这个问题。