Como un ejemplo, suponga que tiene un conjunto ordenado en el que cada posición tiene una probabilidad igual de ser alguna de las letras minúsculas del alfabeto. En este caso voy a hacer que el conjunto ordenado contener $1000$ elementos.
# generate a possible sequence of letters
s <- sample(x = letters, size = 1000, replace = TRUE)
Resulta que si cada una de las posiciones del conjunto ordenado sigue una distribución uniforme sobre las letras minúsculas del alfabeto, entonces la distancia entre dos ocurrencias de la misma carta, sigue una distribución geométrica con parámetro de $p=1/26$. A la luz de esta información, vamos a calcular la distancia entre repeticiones consecutivas de la misma carta.
# 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)
Veamos un histograma de las distancias entre las ocurrencias de la misma carta, y compararlo con la función de masa de probabilidad asociada con la distribución geométrica se mencionó anteriormente.
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)
Los puntos rojos representan la real función de masa de probabilidad de la distancia sería de esperar si cada una de las posiciones del conjunto ordenado seguido una distribución uniforme sobre las letras y las barras del histograma representan empírica de la función de masa de probabilidad de la distancia asociada con el conjunto ordenado.
Esperemos que la imagen de arriba es convincente que la distribución geométrica es la adecuada.
De nuevo, si la posición de cada uno de los conjunto ordenado sigue una distribución uniforme sobre las letras, sería de esperar que la distancia entre las ocurrencias de la misma letra que sigue una distribución geométrica con parámetro de $p=1/26$. Así lo similares que se espera que la distribución de las distancias y la distribución empírica de las diferencias? El Bhattacharyya Distancia entre dos distribuciones discretas es $0$ cuando las distribuciones son exactamente de la misma y tiende a $\infty$ como las distribuciones vuelto cada vez más diferentes.
¿Cómo d.flat
de arriba comparar a la esperada distribución geométrica en términos de la Distancia 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)
El Bhattacharyya Distancia entre la espera geométrica de la distribución y de la emprirical distribución de las distancias es acerca de $0.026$, que es bastante cerca de a $0$.
EDITAR:
En lugar de simplemente indica que el Bhattacharyya Distancia observada anteriormente ($0.026$) está bastante cerca de a $0$, creo que este es un buen ejemplo de cuando la simulación es útil. La pregunta ahora es la siguiente: ¿Cómo funciona el Bhattacharyya Distancia observada por encima de comparar los típicos Bhattacharyya Distancias a observar si la posición de cada uno de los conjunto ordenado es uniforme sobre las letras? Vamos a generar $10,000$ tales conjuntos ordenados y calcular cada uno de sus Bhattacharyya Distancias de la esperada distribución geométrica.
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))
Ahora podemos calcular la probabilidad de observar el Bhattacharyya Distancia observado más arriba, o uno más extremo, si el conjunto ordenado fue generado de tal manera que cada una de sus posiciones sigue una distribución uniforme sobre las letras.
p <- ifelse(b.dist <= mean(dist.bhat), sum(dist.bhat <= b.dist) / length(dist.bhat),
sum(dist.bhat > b.dist) / length(dist.bhat))
En este caso, la probabilidad resulta ser de alrededor de $0.38$.
La integridad, la siguiente imagen es de un histograma de la simulación Bhattacharyya Distancias. Creo que es importante darse cuenta de que usted nunca va a observar una Distancia de Bhattacharyya $0$ debido a que el conjunto ordenado tiene longitud finita. Anteriormente, la distancia máxima entre dos ocurrencias de una carta en la mayoría de las $999$.