1
我不知道为什么当我改变内核密度估计的带宽时,cdf有不同的值。在下面的代码中,我从高斯分布生成随机数并在选择不同带宽(h)时估计数据的内核密度。当我整合PDF时,我会得到不同的或多或少远离1的值。因此,似乎CDF取决于在核密度估计中使用的带宽。然而,我相信核心密度估计中的因子1/nh可以确保将pdf合并为1.如果带宽是问题,我如何确定它以确保得到的pdf与1相加?CDF取决于核密度估计中使用的带宽?
g<-1
n<-1000
set.seed(g)
df <- data.frame(x=sort(rnorm(n,0,1)))
library(functional)
gaussianKernel <- function(u) exp(-u^2/2)/(2*pi)^.5
densityFunction <- function(x, df, ker, h){
difference = t(t(df) - x)/h
W = sum(apply(difference, 1, ker))/(nrow(df)*h)
}
myDensityFunction <- Curry(densityFunction, df=df, ker=gaussianKernel, h=2)
vect<-vector()
for (i in 1:length(df$x)){
f<-myDensityFunction(df$x[i])
vect<-c(vect,f)
}
f <- approxfun(df$x, vect, yleft = 0, yright = 0)
integrate(f, -Inf, Inf)
6pool,非常感谢你。我所理解的是,我必须选择一个带宽,如CDF可以集成到1(是满足的唯一约束?)。所以,我也可以在这个约束下优化带宽。我对么? – Lio