R中的功能Integrated提供异常输出

问题描述

我正在生成两个分布(例如,均值1,sd1和均值2,sd2),对它们进行卷积,然后计算从给定阈值(给定最大值)到Inf的新生成分布的积分。在这里,我正在使用库distr中的函数

有趣的是,在积分时,如果我的原始分布呈现的值远大于阈值,则积分的输出= 0(应为= 100,表示整个分布落在阈值之后)

MWE

library(distr)

# Two distributions
mean1 <- 560 
sd1   <- 4.1

mean2 <- 1570  # values to be tested: # 1570 # 1571 # 1970
sd2   <- 3.219

# Getting normal distribution for both groups
Np1  <- norm(mean = mean1,sd = sd1)  
Np2  <- norm(mean = mean2,sd = sd2) 

# Convolution of distributions
conv <- convpow(Np1 + Np2,1) 

# Sanity check
plot(conv)

# distribution function
f.Z  <- d(conv) 

# This works well with any values. 
min_threshold <- 1925.3
integrate(f.Z,min_threshold,abs.tol = 0L)$value * 100   

# The statement below provides abnormal output depending on the tested value presented above for mean2:
max_threshold <- 1968.9
integrate(f.Z,max_threshold,Inf,abs.tol = 0L)$value * 100   

在这里,我希望mean2> 1570的任何值都将有100作为输出,这表明分布在max_threshold之后的可能性为100%。取而代之的是,输出在1570之后急剧下降,直到达到0。有人能理解这种行为吗?我在这里想念东西吗?

我的机器具有Windows 10、64,R版本4.0.3和库distr 2.8.0。

代码基于此处提供的代码integrate() in R gives terribly wrong answer

非常感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)