【问题标题】:Plotting a PDF of a custom function that does not integrate to 1 using R使用 R 绘制未集成到 1 的自定义函数的 PDF
【发布时间】:2020-10-14 21:34:03
【问题描述】:

我想为自定义函数绘制 PDF(与预定义函数相反,例如正态分布或伽马分布,建议作为类似问题的答案 here),例如 -1 <= x <= 1fX(x) = 1 - x。根据定义,PDF 应该集成到 1。

f <- function(x) 1 - x

integrate(f, lower = -1, upper = 1)$value

[1] 2

因此,例如使用 curve(f, -1, 1) 建议 here 仅绘制函数而不是 PDF,因为它没有集成到 1。

可以进行数学变换并获得要绘制的函数,但是有没有可以自动执行此操作的包?

【问题讨论】:

  • “自定义函数的 PDF”是什么意思? PDF 是为随机变量定义的,而不是函数。您是否有 CDF 并想绘制其对应的 PDF?
  • @slava-kohut 一定有什么让我很困惑的东西,所以我需要在这里长篇大论。我有一个带有 PDF fX(x)=1-|x| 的随机变量 X对于 -1

标签: r function plot


【解决方案1】:

听起来您希望能够采用具有特定上限和下限的函数,然后对其进行归一化,使其定积分等于 1。这样做的方法如下:

pseudo_pdf <- function(func, lower = -1, upper = 1)
{
  m <- integrate(func, lower = lower, upper = upper)$value
  func2 <- function(x) func(x)/m
  curve(func2, lower, upper, ylab = "Density")
  invisible(func2)
}

f <- function(x) 1 - x

pseudo_pdf(f, lower = -2, upper = 1)

或者假设我们想要转换一个函数,使其返回一个“生成pdf”的函数:

f2 <- function(x) x^2 + 3
f3 <- pseudo_pdf(f2, 1, 3)

因此我们可以看到,即使我们的原始函数在区间内没有积分为 1,但我们的新函数却可以:


integrate(f2, lower = 1, upper = 3)
#> 14.66667 with absolute error < 1.6e-13
integrate(f3, lower = 1, upper = 3)
#> 1 with absolute error < 1.1e-14

reprex package (v0.3.0) 于 2020 年 6 月 24 日创建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2010-12-04
    • 2021-06-22
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 2014-01-06
    相关资源
    最近更新 更多