r - 如何验证 R 中的函数是否为 PDF?

标签 r

我正在尝试验证函数是否是 pdf,即它具有以下属性: 1) f(x) 从负无穷大到无穷大的积分为 1, 2) 对于所有 x,f(x) > 0。 此外,我还尝试绘制 cdf 函数。

这是我在 R 脚本中的函数:

f <- function(x) ifelse(x>=-1 & x<=1, 1-abs(x), 0)
curve(f, -5, 5)

我尝试了各种方法来找到密度,但似乎无法编写一个脚本来告诉我 1)概率 X 等于 1,2)所有值都 > 0。我尝试编写一些此页面上的“d”函数 ( http://ww2.coastal.edu/kingw/statistics/R-tutorials/prob.html ),但无法正确格式化它们。有什么建议吗?

最佳答案

除少数特殊情况外,您将无法准确验证函数是否是 pdf。但是,如果您很清楚函数的支持是什么(即函数非零或接近非零的值集),则可以近似地执行此操作。

例如,采用dnorm函数,即标准普通pdf。在 -40 和 +40 之外,这实际上为零。您可以通过执行以下操作创建一个具有 10,000 个点的示例域

> 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 文件。

关于r - 如何验证 R 中的函数是否为 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19624595/

相关文章:

R:检查一组变量是否形成唯一索引

R:导出和导入列表到 .txt 文件

从文本中删除标点符号(符号 & 除外)

r - 在 R 中使用 dplyr 和摘要向每一行添加哈希

r - 为数据框的每一行生成一个图

r - 根据列索引向量选择 data.table 值

jquery - 防止列名在 Shiny 的数据表中换行

R 在空行上拆分文本

r - 如何在ggplot2中分离数据的年份而不将数据添加到框架中?

R Studio 随机化日期和时间