创建一个新的概率分布 R

Create a new probability distribution R

我想在 R 中创建一个新的概率密度函数,如下所示:

P{X=x} = p

P{X=/=x} 服从具有一些参数 lambda 但已归一化 s.t 的泊松分布。所有概率的总和等于 (1-p)

我怎样才能让 R 将其识别为新的概率分布并让它创建所有相应的函数 (r, d, p, q)?

您实质上是在创建狄拉克分布和离散泊松分布的混合 class。 distr 包确实允许对分布进行符号操作,它允许定义 Dirac、各种 Discrete-classed 函数,包括 Pois,以及相同与UnivarMixingDistribution-class.

require(distr)
 x=5;lambda=4; p=0.3
 mylist <- UnivarMixingDistribution(Pois(4), Dirac(x) ,
           mixCoeff=c(p, 1-p))
 plot(mylist)
#NULL

您应该查看完整的包文档,因为它为以这种方式定义的分发提供了 [rdpq]* 方法。

下面是如何使用 p()r() 方法来实现 function/class 定义:

> p(mylist)(4)
[1] 0.1886511
> p(mylist)(5)
[1] 0.9355392
> p(mylist)(0:10)
 [1] 0.005494692 0.027473460 0.071430997 0.130041046 0.188651095
 [6] 0.935539186 0.966797878 0.984659989 0.993591044 0.997560401
[11] 0.999148145
> r(mylist, 10)
Error in r(mylist, 10) : unused argument (10)
> r(mylist)( 10)
 [1] 5 2 5 5 5 5 5 3 5 5

您还可以在 ?family 找到有用的信息,其中为 R 模型的链接和错误结构定义了函数列表。