从Weibull(0,1)和Uniform(0,1)

时间:2017-02-12 03:27:00

标签: r

如何创建R代码算法来对截断的 Weibull(0,1) Uniform(2,4)的混合分布进行采样。给我带来困难的主要部分是截断的威布尔分布。通常,Weibull分布在正实线上定义,因此我不能使用R提供的内置函数。混合物分布如下:

  

f(x)= 0.3×Weibull(0,1)+ 0.7×U(2,4)

注意:截断的Weibull分布如下:

  

f(x; k,λ)= c(k /λ)[(x /λ)^(k-1)] exp { - (x /λ)^ k},x∈(0,1)

其中

  

c = 1 / {1 - exp(-1 /(λ^ k))}

1 个答案:

答案 0 :(得分:0)

统一编号由runif(100,2,4)生成。鉴于截断的Weibull已经以某种方式生成,您可以按如下方式混合它们:

u <- runif(100,2,4)
w <- ... # truncated weibull, see below
s <- runif(100)            # s <- rbinom(n,2,0.3)
x <- ifelse(s<0.3, w, u)   # x <- ifelse(s==1,w,u)

对于截断的Weibull,请参阅Google搜索找到的https://www.jstatsoft.org/article/view/v016c02/v16c02.pdf的第6页。或者,我只生成Weibull随机数(使用rweibull)然后截断。注意:您确定weibull的形状参数是零吗?