三角分布的随机样本: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,但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. 在这里是怎么限制的。 【参考方案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的主要内容,如果未能解决你的问题,请参考以下文章

来自给定双变量离散分布的随机样本

S&P_03_随机变量

R语言基础-统计函数

R语言基础-统计函数

R语言分布的卡方拟合优度检验

在EXCEL中生成服从三角分布随机数的方法