非参数 CDF 和 pdf 通过 R 中的 np 包

Nonparametric CDF and pdf through the np package in R

我在 R 中使用 np 包,我想使用非参数分布函数 npudist,例如我们通常使用 ecdf功能。

set.seet(123)
x <- rnorm(100)
Fn <- ecdf(x)
Fn(.4)
# [1] 0.78
library(np)
Fn2 <- npudist(x)
Fn2(.4)
# Error in Fn2(.4) : could not find function "Fn2"

如您所见,npudist 计算每个 x 点的分布,它不是 return 函数。但是,必要的信息存储在 Fn2 中,因为当我们比较

plot(Fn)
plot(Fn2)

很明显Fn2Fn的平滑版本。因为我需要在集成中使用它,所以我希望将(pdf 和)CDF 作为函数而不是 data.frames。有什么帮助吗?非常感谢。

以下应该适合您:

dist = npudist(x)
cdf <- function(x) predict(dist, edat = x)
dens = npudens(x)
pdf <- function(x) predict(dens, edat = x)

获得:

cdf(0.4)
pdf(0.4)

获得了正确的值。您可以通过以下方式查看:

plot(cdf); abline(v = 0.4, lty = 2); abline(h = cdf(0.4), lty = 2)
plot(pdf); abline(v = 0.4, lty = 2); abline(h = pdf(0.4), lty = 2)

如果需要,您也可以与此设置集成:

integrate(f = pdf, lower = -Inf, upper = 0.4)
cdf(0.4)