Я считаю, что ваши наблюдения составляют классы из Действительные числа , и вы ожидаете, что режим будет равен 2,5, когда ваши наблюдения составляют 2, 2, 3 и 3, тогда вы можете оценить режим с помощью mode = l1 + i * (f1-f0) / (2f1 - f0 - f2)
, где l1 .. нижний предел наиболее частого класса, f1 .. частота наиболее частого класса, f0 ..частота классов перед самым частым классом, f2 .. частота классов после самого частого класса и i .. Интервал класса, как указано, например в 1 , 2 , 3 :
#Small Example
x <- c(2,2,3,3) #Observations
i <- 1 #Class interval
z <- hist(x, breaks = seq(min(x)-1.5*i, max(x)+1.5*i, i), plot=F) #Calculate frequency of classes
mf <- which.max(z$counts) #index of most frequent class
zc <- z$counts
z$breaks[mf] + i * (zc[mf] - zc[mf-1]) / (2*zc[mf] - zc[mf-1] - zc[mf+1]) #gives you the mode of 2.5
#Larger Example
set.seed(0)
i <- 5 #Class interval
x <- round(rnorm(100,mean=100,sd=10)/i)*i #Observations
z <- hist(x, breaks = seq(min(x)-1.5*i, max(x)+1.5*i, i), plot=F)
mf <- which.max(z$counts)
zc <- z$counts
z$breaks[mf] + i * (zc[mf] - zc[mf-1]) / (2*zc[mf] - zc[mf-1] - zc[mf+1]) #gives you the mode of 99.5
Если вам нужен самый частый уровень и у вас есть более одного наиболее частого уровня, вы можете получить все из них, например. с:
x <- c(2,2,3,5,5)
names(which(max(table(x))==table(x)))
#"2" "5"