我想在R中创建一个新的概率密度函数,如下所示:
P {X = x} = p
P {X = / = x}遵循具有一些参数lambda的泊松分布,但是标准化的s.t.所有概率的总和等于(1-p)
我怎样才能让R认识到这是一个新的概率分布并让它创建所有相应的函数(r,d,p,q)?
答案 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]*
方法。
以下是如何对该函数/类定义使用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模型的链接和错误结构定义了函数列表。