【问题标题】:A random sample from triangular distribution: R三角分布的随机样本:R
【发布时间】:2017-06-21 14:00:08
【问题描述】:

我想从具有三个参数的三角分布中生成数字:a、b、c,在我的例子中,c 定义为 (a+b)/2。 假设我有一个向量x:

x <- c(1,-1,2,-2,3,-3,4,-4,5,-5,11,-11,12,-12,13,-13)

我想生成与向量 x 中的负数一样多的新值。所以进一步我可以用三角分布生成的数字替换负值。

library(triangle)
c = abs(x[x<0])/2
sample <- rtriangle(length(a[which(a<0)]), 0, abs(x[x<0]),c)

显然这不起作用,因为我收到一条警告消息:

警告信息: 1:在 if (a > c | b 1 并且只使用第一个元素 2:在 if (a != c) { 中: 条件的长度 > 1 并且只使用第一个元素 3:在 p[i] * (b - a) 中: 较长的对象长度不是较短对象长度的倍数 4:在 p[i]

【问题讨论】:

  • 参数a为0,但bc不是单个数字。我不清楚你是如何尝试采样的。
  • rtriangle的帮助下:a, b, and c may be appropriate length vectors except in the case of rtriangle.
  • 我想得到一个从三角形分布中采样的数字的向量(向量长度对应于向量 x 中的多个负数)。我想在 a (a = 0) 到 b 的范围内进行采样(b 是负元素的绝对值在向量中x)和参数c是:c = b/2.
  • 我不明白 rtriangle: a, b, and c may be appropriate length vectors except in the case of rtriangle. 在这里是怎么限制的。

标签: r statistics simulation


【解决方案1】:

由于rtriangle 不将向量作为输入,您可以使用sapply 创建一个向量来评估向量的每个元素,如下所示:

x <- c(1,-1,2,-2,3,-3,4,-4,5,-5,11,-11,12,-12,13,-13)

library("triangle")

sample = sapply(abs(x[x<0]), function(x){ rtriangle(1,0,x,x/2) })

> sample
[1] 0.6514940 0.6366981 1.8598445 0.9866790 1.7517438 2.9444719 4.1537113 2.2315813

您将获得 8 种不同三角分布的随机样本。

【讨论】:

  • 谢谢,现在我明白你的评论是关于什么的了。看起来答案有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 1970-01-01
  • 2015-05-11
  • 1970-01-01
  • 2014-07-13
相关资源
最近更新 更多