Tamam, bu bana 3 gün boyunca daha fazla güldü ve hala çözüme bir adım daha yaklaşmamaya başladı, burada şansımı deneyeceğim. Geçmişte R: Entegrasyon/İntegral R: Bulmak
, ben belirli bir sıralı veri kümesi için bazı kodlar yazdım ve böyle gider: MÜKEMMEL çalışırn <- 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)
}
. bir veri seçer Örneğin: (1,2,3,4,5) = c, tek Ancak
> delta(0.1, maxobs)
[1] 0.6300001
için doğru sonuç alır, şimdi her sıralanmış veri kümesi için genelleme çalışıyorum, bu yüzden Yaptığımın (açık olmak: Veri kümesi x önce egzersiz tüm bu işlevleri sıralanır)
FG <- function(x, m=NULL, h = NULL){
n<- length(x) #Number of observations
maxobs <- max(x)
minobs <- min(x)
if (m<minobs){FG = 0} else {
if (m >maxobs){FG = 1} else {
FG = sum(pnorm((m - x)/h)-pnorm((minobs-x)/h))/sum(pnorm((maxobs - x)/h)-pnorm((minobs-x)/h))
}}
return(FG)
}
f<- function(x,m,h){
n <- length(x)
f<- FG(x,m,h)^n
return(f)
}
##Integration
delta<- function(x,h,maxu= max(x)){
minobs <- min(x)
delta <- integrate(Vectorize(f), minobs, maxu, h)$value
return (delta)
}
Ama şimdi, delta(data,0.1)
etmiyor
delta(data,0.1)
[1] 0.
verir Bana hiç mantıklı gelmiyor. Aynı işlev, aynı veri kümesi, ancak şimdi yanlış bir değerle. Neyi yanlış yapıyorum?
Herhangi bir yardım, değerli bir şekilde takdir edilecektir.
DÜZENLEME: Vectorize işlevine daha yakından incelemek ve işlevini entegre sonra, şimdi benim delta fonksiyonu kaydetmiştiniz:
delta<- function(x,h,maxu= max(x)){
minobs <- min(x)
delta <- integrate(Vectorize(f, vectorize.args= c("m","h")), minobs, maxu, h)$value
return (delta)
}
ama bu artık sadece başka hata ile sonuçlanır:
Error in integrate(Vectorize(f, vectorize.args = c("m", "h")), lower = minobs, : evaluation of function gave a result of wrong length
Vectorize'in bu tür hataları önlemesi gerektiğini düşünmüştüm?