我正在尝试验证函数是否为pdf,即它具有以下属性: 1)f(x)从-infinity到infinity的积分是1, 2)f(x)>所有x都为0。 另外,我也试图绘制一个cdf函数。
这是我在R脚本中的功能:
f <- function(x) ifelse(x>=-1 & x<=1, 1-abs(x), 0)
curve(f, -5, 5)
我已经尝试了各种方法来找到密度,但似乎无法编写一个脚本来告诉我1)概率X等于1,2)所有值都是> 1。 0.我尝试在此页面上编写一些“d”函数(http://ww2.coastal.edu/kingw/statistics/R-tutorials/prob.html),但无法正确格式化它们。有什么建议吗?
答案 0 :(得分:4)
除少数特殊情况外,您无法确切地验证函数是否为pdf。但是,如果你很清楚函数的支持是什么(即函数非零或几乎非零的值集合),你可以大致做到。
例如,取dnorm
函数,即标准正常pdf。这在-40和+40之外实际上为零。您可以通过
> xs <- seq(-40, 40, len=10000)
然后检查所有值是否大于或等于零就像
一样简单> all(dnorm(xs) >= 0)
TRUE
要检查功能是否集成到(大约)1,您可以执行
> integral <- integrate(dnorm, lower=-40, upper=40)
> abs(integral$value - 1) < 1e-10
TRUE
所以你可以确信函数dnorm
描述了范围内的概率分布(-40,40)。
要检查您在问题中定义的功能,显然范围是(-1,1),以便您可以
> xs <- seq(-1, 1, len=10000)
> all(f(xs) >= 0)
TRUE
> integral <- integrate(f, lower=-1, upper=1)
> abs(integral$value - 1) < 1e-10
TRUE
所以你的功能看起来可能是一个pdf。