带有distr包的警告; “网格大约过宽”

时间:2016-07-11 06:03:27

标签: r statistics packages

我尝试使用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秒之间。

1 个答案:

答案 0 :(得分:0)

虽然我仍然不知道为什么U+40+UU+39+U更糟糕,但我已经找到了解决问题的方法。

t4t5t2t3相比,卷积效果更好。问题在于我无法对两个不同的统一分布进行卷积,因为convpow仅适用于单个分布类型。

关键是+运算符在distr中过载以利用此功能。所以重新安排这些术语(并删除无用的系数,虽然我认为这可能是多余的)会产生不同的结果:

U + 40 + U      # Generates warnings
U + U + 40      # No warnings

虽然它没有解释奇怪的行为,但至少它解决了这个问题。