例として、各位置がアルファベットの小文字のいずれかと等しい確率を持つ順序セットがあるとします。この場合、順序付きセットに要素が含まれるようにします。1000
# generate a possible sequence of letters
s <- sample(x = letters, size = 1000, replace = TRUE)
これは、順序付けられた集合の位置の各々は、アルファベットの小文字の文字にわたって均一な分布に従う場合には、同じ文字の2つの存在との間の距離は、パラメータと幾何分布は以下のことが判明し。この情報を考慮して、同じ文字が連続して出現する間の距離を計算しましょう。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)
同じ文字の出現間の距離のヒストグラムを見て、それを上記の幾何分布に関連付けられた確率質量関数と比較しましょう。
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)
赤い点は、順序付けられたセットの各位置が文字上の均一な分布に従う場合に予想される距離の実際の確率質量関数を表し、ヒストグラムのバーは順序付けられた距離に関連付けられた距離の経験的確率質量関数を表しますセットする。
うまくいけば、上の画像が幾何学的分布が適切であると納得させることです。
P = 1 / 260∞
d.flat
Bhattacharyya Distanceに関して、上記から予想される幾何学的分布と比較してどうですか?
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))
ここで、上記のBhattacharyya Distanceを観測する確率、またはその位置のそれぞれが文字上の均一な分布に従うように順序付けられたセットが生成された場合のもう1つの極端を観測する確率を計算できます。
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