2017-07-09 41 views
2

我想整合一個核心密度估計以獲得cdf的核心估計。核心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)) 

其中以約18生成以下圖形

enter image description here

正如你所看到的,CDF下降到零,這顯然是不應該的。

爲什麼會發生這種情況,我該如何避免它?

+0

'plot(x,pnorm(x),type ='l')'is不是問題的答案,而是幾乎完全相同的事情。 – JAD

回答

4

對左集成端點使用大的有限數,而不是-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)) 

enter image description here

的原因是主要是因爲的r數值積分程序是不是複雜的,並且當提供無限的端點有時會失敗。 (該幫助指出,使用顯式無限區間可能比大有限終點更好,在這種情況下,該建議不起作用。)

+0

這有幫助!實際上,以估計密度的最小值開始積分就足夠了:積分(pdf,min(密度(z,bw =「SJ」)$ x),b)$ value' – BayerSe