Par exemple, supposons que vous ayez un ensemble ordonné dans lequel chaque position a une probabilité égale d'être l'une des lettres minuscules de l'alphabet. Dans ce cas, je ferai en sorte que l'ensemble commandé contienne éléments.1000
# generate a possible sequence of letters
s <- sample(x = letters, size = 1000, replace = TRUE)
Il se trouve que si chacune des positions de l'ensemble ordonné suit une distribution uniforme sur les lettres minuscules de l'alphabet, la distance entre deux occurrences de la même lettre suit une loi géométrique de paramètre . À la lumière de ces informations, calculons la distance entre les occurrences consécutives de la même lettre.p = 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)
Regardons un histogramme des distances entre les occurrences de la même lettre et comparons-le à la fonction de masse de probabilité associée à la distribution géométrique mentionnée ci-dessus.
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)
Les points rouges représentent la fonction de masse de probabilité réelle de la distance à laquelle nous nous attendrions si chacune des positions de l'ensemble ordonné suivait une distribution uniforme sur les lettres et les barres de l'histogramme représentent la fonction de masse de probabilité empirique de la distance associée à l'ordre ensemble.
J'espère que l'image ci-dessus est convaincante que la distribution géométrique est appropriée.
p = 1 / 260∞
Comment se d.flat
compare-t-on à la distribution géométrique attendue en termes de distance de Bhattacharyya?
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
ÉDITER:
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))
Maintenant, nous pouvons calculer la probabilité d'observer la distance de Bhattacharyya observée ci-dessus, ou une autre extrême, si l'ensemble ordonné a été généré de telle manière que chacune de ses positions suit une distribution uniforme sur les lettres.
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
Exactement ce que vous décrivez a été codifié dans une procédure appelée Runs Test. Ce n'est pas compliqué à maîtriser. Vous pouvez le trouver dans de nombreuses sources sur les tests statistiques, par exemple, wikipedia ou le Nat'l Instit. des normes et de la technologie ou YouTube .
la source
Si vous êtes intéressé par une perspective légèrement différente à ce sujet, vous voudrez peut-être regarder une introduction à la théorie de l'information - un domaine des mathématiques intéressant l'informatique, le traitement d'image / vidéo / audio, la théorie de la communication et (peut-être plus surprenant) la physique et la cosmologie (cruciale pour la compréhension des trous noirs, ainsi que la thermodynamique classique) et même la biologie.
De manière informelle, nous pouvons dire qu'une séquence de lettres "plus dense" (selon votre exemple) sera compressée plus densément lorsqu'elle sera soumise à un algorithme de compression à usage général - c'est-à-dire qu'un fichier zip contenant le texte brut sera plus petit. De même, une image "grumeleuse" (par exemple, de quelques boules de billard sur un tapis vert uni) se compressera beaucoup plus efficacement - par exemple, crée un fichier jpeg plus petit - qu'une image plus variée (comme une image d'un groupe de personnes ). Bien sûr, le contenu de l'information (aka entropie négative ou "néguentropie") de ces données a diverses définitions formelles indépendantes d'algorithmes de compression particuliers.
Un exemple de cas dans lequel une mesure théorique de l'information pourrait être plus révélatrice que les analyses statistiques plus classiques ci-dessus est si vous êtes intéressé à identifier la "grosseur" à plusieurs (ou tous) niveaux de résolution. Dans l'exemple de votre chaîne de texte, s'il y avait beaucoup de "A" regroupés au début de la séquence, alors pas beaucoup de regroupements de "A", puis périodiquement plus de regroupements et moins de regroupements à mesure que la séquence se poursuit, alors on pourrait dire que la lourdeur existe à plusieurs résolutions - quelque chose qui peut être très naturellement saisi par des mesures théoriques de l'information.
(Edit) Il me vient à l'esprit que votre préoccupation que cela pourrait être une question ridicule, alors qu'en fait l'étude de la "masse" - sous forme d'informations et d'entropie (nég) - nous informe de façon vitale sur le fonctionnement quotidien de la vie moderne (Internet, communications mobiles, langage lui-même) et la nature de l'univers (trous noirs, formation de galaxies, interprétation du rayonnement de fond cosmique, détermination de ce qui est "vivant") devraient recevoir une réponse avec l'adage selon lequel "il n'y a pas de questions stupides , seulement des réponses stupides "[citation non attribuée].
la source