【问题标题】:Generating a failure based on the exponential distribution基于指数分布生成故障
【发布时间】:2020-08-20 19:42:42
【问题描述】:

我需要根据其他 3 个参数(A、B 和 C)的行为生成故障数据。例如:如果 A > 10、B > 10 和 C > 10,则失败的概率为 0.99。否则,如果 A 10 和 C > 10,则概率为 0.30。如何在知道它们遵循指数分布的情况下生成这些故障?

我想生成 100 个周期的数据,即,对于每个周期,我都想获得有关是否存在故障的信息。

任何帮助将不胜感激。

【问题讨论】:

  • 您的问题未定义各种状态,例如A > 10 & B > 10 & C < 10 呢?指数分布从何而来? @Jakob 在其中进行了函数调用以引用指数分布,但这些仅相当于使用具有给定成功概率的伯努利试验(例如,rexp(n, rate=0.99) 只是成功概率约为 0.63)并且可能会得到更好的解释并这样编码

标签: r random probability sample


【解决方案1】:

您需要指定在其他情况下会发生什么,但您想使用 rexp() 函数,然后编写一个函数或使用 if else 语句,如下所示:

if (A>10 & B>10 & C>10) {
  rexp(100, rate=0.99)
} else {
  rexp(100, rate=0.30)
}

更新: 听起来你想要这样的东西:

if (A>10 & B>10 & C>10) {
  p = rpois(100, rate=0.99)
} else {
  p = rpois(100, rate=0.30)
}
p[p>0]=1

if-else 创建一个向量p,其中包含每个周期的估计故障数。最后一行将所有失败的期间编码为1,否则将0

【讨论】:

  • 函数 rexp 将生成连续值。但是,我需要指定期间是否有失败(1)或没有(0)。
  • 您想知道每个周期的失败次数还是仅仅知道是否有任何失败?对于前者,只需将上面的rexp 替换为rpois。否则做类似p = rpois(100, 0.99); p[p>0]=1
  • 如果有任何失败。
  • 更新了我的答案
  • 尝试一个一个地运行这些并查看每个之后的输出:p = rpois(100, 0.99) 将从 lambda=0.99 的泊松分布中抽取 100 个随机变量。这将创建一个包含 100 个条目的向量 p,每个条目都会告诉您该时间段内的失败次数。然后p[p>0]=1 选择该向量中大于零的值并为其分配 1。假设在一个周期内有 2 次失败,这将被编码为 1。
猜你喜欢
  • 2015-02-26
  • 2017-05-17
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
  • 2014-03-03
  • 1970-01-01
相关资源
最近更新 更多