В качестве примера, предположим, что у вас есть упорядоченный набор, в котором каждая позиция имеет одинаковую вероятность быть любой из строчных букв в алфавите. В этом случае я сделаю упорядоченный набор, содержащий элементов.1000
# generate a possible sequence of letters
s <- sample(x = letters, size = 1000, replace = TRUE)
Оказывается, что если каждая из позиций упорядоченного множества следует равномерное распределение строчных букв алфавита, то расстояние между двумя вхождений одного и того же письма следует геометрическое распределение с параметром . В свете этой информации давайте вычислим расстояние между последовательными вхождениями одной и той же буквы.р = 1 / 26
# find the distance between occurences of the same letters
d <- vector(mode = 'list', length = length(unique(letters)))
for(i in 1:length(unique(letters))) {
d[[i]] <- diff(which(s == letters[i]))
}
d.flat <- unlist(x = d)
Давайте посмотрим на гистограмму расстояний между вхождениями одной и той же буквы и сравним ее с функцией массы вероятности, связанной с геометрическим распределением, упомянутым выше.
hist(x = d.flat, prob = TRUE, main = 'Histogram of Distances', xlab = 'Distance',
ylab = 'Probability')
x <- range(d.flat)
x <- x[1]:x[2]
y <- dgeom(x = x - 1, prob = 1/26)
points(x = x, y = y, pch = '.', col = 'red', cex = 2)
Красные точки представляют реальную функцию массы вероятности расстояния, которое мы ожидаем, если бы каждая из позиций упорядоченного набора следовала за равномерным распределением по буквам, а столбцы гистограммы представляют эмпирическую функцию массы вероятности расстояния, связанного с упорядоченным устанавливать.
Надеемся, что изображение выше убедительно, что геометрическое распределение является подходящим.
р = 1 / 260∞
Как d.flat
сверху сравнить с ожидаемым геометрическим распределением по расстоянию Бхаттачарья?
b.dist <- 0
for(i in x) {
b.dist <- b.dist + sqrt((sum(d.flat == i) / length(d.flat)) * dgeom(x = i - 1,
prob = 1/26))
}
b.dist <- -1 * log(x = b.dist)
0,0260
РЕДАКТИРОВАТЬ:
0,026010 , 000
gen.bhat <- function(set, size) {
new.seq <- sample(x = set, size = size, replace = TRUE)
d <- vector(mode = 'list', length = length(unique(set)))
for(i in 1:length(unique(set))) {
d[[i]] <- diff(which(new.seq == set[i]))
}
d.flat <- unlist(x = d)
x <- range(d.flat)
x <- x[1]:x[2]
b.dist <- 0
for(i in x) {
b.dist <- b.dist + sqrt((sum(d.flat == i) / length(d.flat)) * dgeom(x = i -1,
prob = 1/length(unique(set))))
}
b.dist <- -1 * log(x = b.dist)
return(b.dist)
}
dist.bhat <- replicate(n = 10000, expr = gen.bhat(set = letters, size = 1000))
Теперь мы можем вычислить вероятность наблюдения расстояния Бхаттачарьи, наблюдаемого выше, или еще одного экстремума, если упорядоченное множество было сгенерировано таким образом, что каждая из его позиций следует равномерному распределению по буквам.
p <- ifelse(b.dist <= mean(dist.bhat), sum(dist.bhat <= b.dist) / length(dist.bhat),
sum(dist.bhat > b.dist) / length(dist.bhat))
0,38
0999
Именно то, что вы описываете, было кодифицировано в процедуру, называемую Runs Test. Это не сложно освоить. Вы можете найти его во многих источниках по статистическим тестам, например, в Википедии или в Национальном институте. стандартов и технологий или YouTube .
источник
Если вас интересует несколько иная точка зрения на это, вы можете взглянуть на учебник по теории информации - область математики, представляющую интерес для вычислительной техники, обработки изображений / видео / аудио, теории связи и (возможно, что более удивительно) физики и космология (решающая для понимания черных дыр, а также классическая термодинамика) и даже биология.
Неофициально, мы можем сказать, что «комковатая» последовательность букв (в соответствии с вашим примером) будет более плотно сжата, когда подвергается алгоритму сжатия общего назначения - то есть zip-файл, содержащий необработанный текст, будет меньше. Аналогично, «комковатое» изображение (скажем, нескольких бильярдных шаров на простой зеленой байке) будет сжимать намного эффективнее - например, создавать файл JPEG меньшего размера - чем более разнообразное изображение (например, изображение группы людей). ). Конечно, информационный контент (он же отрицательная энтропия или «негэнтропия») таких данных имеет различные формальные определения, не зависящие от конкретных алгоритмов сжатия.
Один из примеров случая, когда теоретико-информационная мера может быть более показательной, чем более классический статистический анализ, приведенный выше, - это если вы заинтересованы в выявлении «комковатости» на нескольких (или на всех) уровнях разрешения. В примере вашей текстовой строки, если было много «А», сгруппированных в начале последовательности, то не так много «А», а затем периодически больше и меньше групп по мере продолжения последовательности, тогда можно сказать, что комковатость существует в разных разрешениях, что вполне естественно можно отразить в теоретических информационных методах.
(Правка) Мне кажется, что вы обеспокоены тем, что это может быть нелепым вопросом, когда на самом деле изучение «комковатости» - под видом информации и (нег) энтропии - жизненно информирует нас как о повседневной работе современной жизни. (Интернет, мобильная связь, сам язык) и природа вселенной (черные дыры, формирование галактик, интерпретация космического фонового излучения, определение того, что является «живым»), следует ответить пословицей, что «нет глупых вопросов , только глупые ответы "[неназванная цитата].
источник