三角分布的随机样本:R
Posted
技术标签:
【中文标题】三角分布的随机样本:R【英文标题】:A random sample from triangular distribution: 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,但b
和c
不是单个数字。我不清楚你是如何尝试采样的。
在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.
在这里是怎么限制的。
【参考方案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 种不同三角分布的随机样本。
【讨论】:
谢谢,现在我明白你的评论是关于什么的了。看起来答案有帮助。以上是关于三角分布的随机样本:R的主要内容,如果未能解决你的问题,请参考以下文章