【问题标题】:How to get the explicit form of an estimated density function如何获得估计密度函数的显式形式
【发布时间】:2020-02-07 14:31:27
【问题描述】:

我在 R 中做密度估计。

我正在尝试使用density() 进行核密度估计。在此之后,我想评估它的性能。但是,某些标准需要知道估计密度函数的显式形式,而我不知道如何获得它。

目前,我正在考虑使用数据点及其密度来近似表达估计的密度函数(如分段函数)。

有没有更好的方法来做到这一点?更一般地说,是否可以根据 R 中的图检索函数的显式形式?

更新:

考虑这个标准:

ISE=积分[(f_hat-f)^2]

其中 f_hat 是估计密度,f 是真实密度。

【问题讨论】:

  • 它并没有明确的形式;它在任何点 y 的值由数据集中各点的核加权和定义。 (对于 CrossValidated,这可能是一个更好的问题)。您能否更明确地说明您要评估的需要函数的显式形式的标准?
  • 这是否意味着我只能使用我上面提出的方法来接近估计的密度函数?@Ben Bolker
  • 如果您可以为您的问题添加更多详细信息,这将有所帮助。您要评估的标准是什么,它们是如何/在哪里实施的?原则上,您可以编写一个函数(或者某个地方已经存在一个函数),该函数接受一个向量并返回一个函数,该函数在指定点评估内核密度...
  • 我想使用的标准请参考更新。@Ben Bolker

标签: r kernel-density


【解决方案1】:

您可以使用 kde1d 包做到这一点。这个包的主要功能是kde1d。估计密度比density 好。

library(kde1d)

set.seed(666)
x <- rnorm(100) # simulate some data
fit <- kde1d(x) # estimate density
d <- dkde1d(0, fit) # evaluate density estimate at 0
d
# 0.383205
dnorm(0)
# 0.3989423

函数是矢量化的:

d <- dkde1d(c(-1,0,1), fit)
d
# 0.2675120 0.3832050 0.2213388

【讨论】:

  • 为什么它比基础 KDE 更好?与基础 KDE 提供的密度函数相比,这是一个显式的密度函数形式吗?
  • @alanocallaghan 尝试使用density 估计递减的密度,例如density(rbeta(100, 0.5, 3))。你会看到它被错误地估计了。 kde1d 不是这种情况。我看不出您的意思是“可从基本 KDE 获得”。
  • density 正如您在回答中提到的那样。它是 base 中可用的 1d KDE
  • @alanocallaghan density 返回两个数值向量 xy AFAIK,而不是函数。
  • 通过 2d 插值使其成为函数很简单,这与 kde1d 提供的显式形式一样多。我不怀疑 kde1d 比 density 有优势,但说明它们可能很有用,而不是仅仅声称通用优势
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 2011-08-11
  • 2015-01-29
  • 2018-12-11
  • 2014-04-30
  • 2020-06-09
  • 2015-09-23
相关资源
最近更新 更多