【问题标题】:Generating random variables from a mixture of Weibull(0,1) and Uniform(0,1)从 Weibull(0,1) 和 Uniform(0,1) 的混合生成随机变量
【发布时间】:2017-02-12 03:27:00
【问题描述】:

我将如何创建一个 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))}

【问题讨论】:

    标签: r


    【解决方案1】:

    统一编号由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 的形状参数为零吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多