来自 R 中自定义分布的示例
Sample from custom distribution in R
我已经在 R 中实现了负二项分布的替代参数化,就像这样(另见 here):
nb = function(n, l, a){
first = choose((n + a - 1), a-1)
second = (l/(l+a))^n
third = (a/(l+a))^a
return(first*second*third)
}
其中 n 是计数,lambda 是平均值,a 是过度离散项。
我想从此分布中抽取随机样本 以验证我对负二项式混合模型的实施,但我不确定如何去做。这个函数的 CDF 不容易定义,所以我考虑过 here 所讨论的尝试拒绝抽样,但这也不起作用(而且我不确定为什么 - 文章说首先从制服中抽取0 和 1 之间的分布,但我希望我的 NB 分布对整数计数建模...我不确定我是否完全理解这种方法。)
感谢您的帮助。
我建议你看看Uniform distribution和Universality of the Uniform。您可以通过将均匀分布的变量传递给 NB 二项式的逆 CDF 来做您想要的,您将得到的是从 NB 二项式分布中采样的一组点。
编辑:我看到负二项式的 CDF 没有封闭形式的逆。我的第二个建议是放弃你的功能并使用内置的:
library(MASS)
rnegbin(n, mu = n, theta = stop("'theta' must be specified"))
看来你可以:
1) 抽取0到1之间的均匀随机数
2) 对概率密度函数进行数值积分(这实际上只是求和,因为分布是离散的并且下界为零)。
3) 无论你积分中的哪个值使 cdf 超过你的随机数,这就是你的随机抽取。
大家一起做如下事情:
r <- runif(1,0,1)
cdf <- 0
i <- -1
while(cdf < r){
i <- i+1
p <- PMF(i)
cdf <- cdf + p
}
其中 PMF(i) 是由分布参数指定的 i 计数的概率质量。此 while 循环完成时 i 的值就是您的样本。
如果你真的只是想测试,速度不是问题,
正如其他人提到的那样,反转方法可能是要走的路。
对于离散随机变量,需要一个简单的while循环。看
Non-Uniform Random Variate Generation 作者:L. Devroye,第 3 章,第 3 页。 85.
我已经在 R 中实现了负二项分布的替代参数化,就像这样(另见 here):
nb = function(n, l, a){
first = choose((n + a - 1), a-1)
second = (l/(l+a))^n
third = (a/(l+a))^a
return(first*second*third)
}
其中 n 是计数,lambda 是平均值,a 是过度离散项。
我想从此分布中抽取随机样本 以验证我对负二项式混合模型的实施,但我不确定如何去做。这个函数的 CDF 不容易定义,所以我考虑过 here 所讨论的尝试拒绝抽样,但这也不起作用(而且我不确定为什么 - 文章说首先从制服中抽取0 和 1 之间的分布,但我希望我的 NB 分布对整数计数建模...我不确定我是否完全理解这种方法。)
感谢您的帮助。
我建议你看看Uniform distribution和Universality of the Uniform。您可以通过将均匀分布的变量传递给 NB 二项式的逆 CDF 来做您想要的,您将得到的是从 NB 二项式分布中采样的一组点。
编辑:我看到负二项式的 CDF 没有封闭形式的逆。我的第二个建议是放弃你的功能并使用内置的:
library(MASS)
rnegbin(n, mu = n, theta = stop("'theta' must be specified"))
看来你可以:
1) 抽取0到1之间的均匀随机数
2) 对概率密度函数进行数值积分(这实际上只是求和,因为分布是离散的并且下界为零)。
3) 无论你积分中的哪个值使 cdf 超过你的随机数,这就是你的随机抽取。
大家一起做如下事情:
r <- runif(1,0,1)
cdf <- 0
i <- -1
while(cdf < r){
i <- i+1
p <- PMF(i)
cdf <- cdf + p
}
其中 PMF(i) 是由分布参数指定的 i 计数的概率质量。此 while 循环完成时 i 的值就是您的样本。
如果你真的只是想测试,速度不是问题, 正如其他人提到的那样,反转方法可能是要走的路。
对于离散随机变量,需要一个简单的while循环。看 Non-Uniform Random Variate Generation 作者:L. Devroye,第 3 章,第 3 页。 85.