Sebagai contoh, misalkan Anda memiliki set yang dipesan di mana setiap posisi memiliki probabilitas yang sama untuk menjadi salah satu huruf kecil dalam alfabet. Dalam hal ini saya akan membuat set yang diurutkan berisi elemen.1000
# generate a possible sequence of letters
s <- sample(x = letters, size = 1000, replace = TRUE)
Ternyata jika masing-masing posisi dari himpunan yang diperintahkan mengikuti distribusi seragam di atas huruf kecil alfabet, maka jarak antara dua kemunculan huruf yang sama mengikuti distribusi geometris dengan parameter . Mengingat informasi ini, mari kita hitung jarak antara kemunculan berurutan dari huruf yang sama.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)
Mari kita lihat histogram jarak antara kemunculan huruf yang sama dan bandingkan dengan fungsi massa probabilitas yang terkait dengan distribusi geometris yang disebutkan di atas.
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)
Titik-titik merah mewakili fungsi massa probabilitas aktual dari jarak yang kita harapkan jika masing-masing posisi himpunan yang diperintahkan mengikuti distribusi seragam pada huruf-huruf dan palang histogram mewakili fungsi massa probabilitas empiris dari jarak yang terkait dengan yang dipesan. set.
Semoga gambar di atas meyakinkan bahwa distribusi geometrik sesuai.
Sekali lagi, jika setiap posisi set memerintahkan mengikuti distribusi seragam atas surat-surat, kita akan mengharapkan jarak antara kejadian dari surat yang sama untuk mengikuti distribusi geometrik dengan parameter . Jadi seberapa miripkah distribusi jarak yang diharapkan dan distribusi perbedaan empiris? The Bhattacharyya Jarak antara dua distribusi diskrit adalah 0p = 1 / 260∞ sebagai distribusi menjadi semakin berbeda.
Bagaimana d.flat
dari atas dibandingkan dengan distribusi geometris yang diharapkan dalam hal 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
EDIT:
0,026010 , 000 set yang dipesan tersebut dan menghitung masing-masing Jarak Bhattacharyya mereka dari distribusi geometris yang diharapkan.
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))
Sekarang kita dapat menghitung probabilitas mengamati Jarak Bhattacharyya yang diamati di atas, atau satu yang lebih ekstrem, jika himpunan yang diperintahkan dibuat sedemikian rupa sehingga masing-masing posisinya mengikuti distribusi yang seragam atas huruf-huruf tersebut.
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