perl中的随机二项分布式数据集

时间:2016-03-10 08:03:16

标签: perl distribution random-sample

我尝试用Perl做我在R中成功但很难与下游需求结合。

在R中我做了以下

library("MASS")
d <- rnegbin(100000, mu = 250, theta = 2)
hist(d, breaks=1000, xlim=c(0,1000))

生成我需要的漂亮图形,峰值为180-200,右侧为尾部。

enter image description here

有人可以帮我用 Math :: Random

编写perl等效代码

我尝试了这个,但没有得到正确的形状

use Math::Random qw(random_negative_binomial);

# random_negative_binomial($n, $ne, $p)
# When called in an array context, returns an array of $n outcomes 
# generated from the negative binomial distribution with number of 
# events $ne and probability of an event in each trial $p. 
# When called in a scalar context, generates and returns only one 
# such outcome as a scalar, regardless of the value of $n.
# Argument restrictions: $ne is rounded using int(), the result must be positive. 
# $p must be between 0 and 1 exclusive.

# I tried different variable values but never got the right shape
my @dist = random_negative_binomial($n, $ne, $p);

我需要什么值来模仿R结果? 我需要X上相同的值范围和相同的一般形状

感谢您的帮助,我没有找到该软件包的插图示例

的Stephane

1 个答案:

答案 0 :(得分:1)

我对统计数据知之甚少,但由于没有其他人出现:我会使用Perl数据语言PDL(我用于其他事情)并获取PDL :: Stats :: Distr模块。您可以在http://pdl-stats.sourceforge.net/Distr.htm找到与您的相似的示例。该模块包括pmf_binomial(质量函数)和mme_binomial(分布)。您还需要PGPLOT模块。

您需要一些随机数据:

    $data = pdl  1..100000;    ## generate linear 1 - 100000
    $data = $data->random;     ## make them random between 0..1