好吧,所以这让我难以忍受超过3天,在离解决方案还有一步之后,我会在这里试试运气.
在过去,我已经为特定的一个已排序数据集编写了一些代码,它是这样的:
n <- length(data)
maxobs <- max(data)
minobs <- min(data)
FG <- function(m=NULL, h = NULL){
n<- length(data) #Number of observations
if (m<minobs){FG = 0} else {
if (m >maxobs){FG = 1} else {
FG = sum(pnorm((m - data)/h)-pnorm((minobs-data)/h))/sum(pnorm((maxobs - data)/h)-pnorm((minobs-data)/h))
}}
return(FG)
}
f<- function(m,h){
f<- FG(m,h)^n
return(f)
}
##Integration
max <- NULL
delta<- function(h,max=maxobs){
delta <- integrate(Vectorize(f), minobs, max, h)$value
return (delta)
}
Run Code Online (Sandbox Code Playgroud)
它完美地工作.例如,如果选择数据:= c(1,2,3,4,5),则获得正确的结果
> delta(0.1, maxobs)
[1] 0.6300001
Run Code Online (Sandbox Code Playgroud)
但是,现在我正在尝试为每个已排序的数据集推广它,所以我做的是(要清楚:数据集x 在执行所有这些函数之前已经排序)
FG <- …Run Code Online (Sandbox Code Playgroud)