यहाँ मोड से निपटने के लिए दो कार्य कर रहे हैं। डीएमओडी फ़ंक्शन उच्चतम शिखर (हावी मोड) के साथ मोड पाता है और n.modes मोड की संख्या की पहचान करता है।
dmode <- function(x) {
den <- density(x, kernel=c("gaussian"))
(den$x[den$y==max(den$y)])
}
n.modes <- function(x) {
den <- density(x, kernel=c("gaussian"))
den.s <- smooth.spline(den$x, den$y, all.knots=TRUE, spar=0.8)
s.0 <- predict(den.s, den.s$x, deriv=0)
s.1 <- predict(den.s, den.s$x, deriv=1)
s.derv <- data.frame(s0=s.0$y, s1=s.1$y)
nmodes <- length(rle(den.sign <- sign(s.derv$s1))$values)/2
if ((nmodes > 10) == TRUE) { nmodes <- 10 }
if (is.na(nmodes) == TRUE) { nmodes <- 0 }
(nmodes)
}
# Example
x <- runif(1000,0,100)
plot(density(x))
abline(v=dmode(x))
स्रोत
2013-04-27 18:46:38
धन्यवाद! ;) यह बहुत सटीक काम करता प्रतीत होता है – 16per9