内核 CDF 估计:积分降为零
Kernel CDF estimate: integral drops to zero
我想积分核密度估计以获得 cdf 的核估计。
这是我的代码:
set.seed(1)
z <- rnorm(250)
pdf <- approxfun(density(z, bw = "SJ"), yleft = 0, yright = 0)
cdf <- function(b) {
integrate(pdf, -Inf, b)$value
}
x <- seq(-20, 20, 0.1)
plot(x, sapply(x, cdf), type = "l", xlab = "x", ylab = "density", ylim= c(0, 1))
产生以下情节
如您所见,cdf 在 ~18 处降至零,这显然不应该发生。
为什么会发生这种情况,我该如何避免?
为左积分端点使用较大的有限数,而不是 -infinity。
cdf <- function(b)
{
integrate(pdf, -20, b)$value
}
x <- seq(-20, 20, 0.1)
plot(x, sapply(x, cdf), type="l", xlab="x", ylab="density", ylim=c(0, 1))
原因主要是因为 R 的数值积分例程没有那么复杂,有时在提供无限端点时会失败。 (帮助说使用显式无限间隔比大的有限端点更好。在这种情况下,该建议不起作用。)
我想积分核密度估计以获得 cdf 的核估计。
这是我的代码:
set.seed(1)
z <- rnorm(250)
pdf <- approxfun(density(z, bw = "SJ"), yleft = 0, yright = 0)
cdf <- function(b) {
integrate(pdf, -Inf, b)$value
}
x <- seq(-20, 20, 0.1)
plot(x, sapply(x, cdf), type = "l", xlab = "x", ylab = "density", ylim= c(0, 1))
产生以下情节
如您所见,cdf 在 ~18 处降至零,这显然不应该发生。
为什么会发生这种情况,我该如何避免?
为左积分端点使用较大的有限数,而不是 -infinity。
cdf <- function(b)
{
integrate(pdf, -20, b)$value
}
x <- seq(-20, 20, 0.1)
plot(x, sapply(x, cdf), type="l", xlab="x", ylab="density", ylim=c(0, 1))
原因主要是因为 R 的数值积分例程没有那么复杂,有时在提供无限端点时会失败。 (帮助说使用显式无限间隔比大的有限端点更好。在这种情况下,该建议不起作用。)