创建新的概率分布R.

时间:2015-03-31 23:54:12

标签: r probability probability-density

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

P {X = x} = p

P {X = / = x}遵循具有一些参数lambda的泊松分布,但是标准化的s.t.所有概率的总和等于(1-p)

我怎样才能让R认识到这是一个新的概率分布并让它创建所有相应的函数(r,d,p,q)?

1 个答案:

答案 0 :(得分:4)

您实际上是在创建狄拉克分布和离散泊松分布的混合类。 distr包允许对分布进行符号操作,并允许Dirac,各种Discrete - 类别函数的定义,包括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]*方法。

enter image description here

以下是如何对该函数/类定义使用p()r()方法:

> 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模型的链接和错误结构定义了函数列表。