非参数 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)
很明显Fn2
是Fn
的平滑版本。因为我需要在集成中使用它,所以我希望将(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)
我在 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)
很明显Fn2
是Fn
的平滑版本。因为我需要在集成中使用它,所以我希望将(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)