Ví dụ: giả sử bạn có một bộ được đặt hàng trong đó mỗi vị trí có xác suất bằng nhau là bất kỳ chữ cái viết thường nào trong bảng chữ cái. Trong trường hợp này tôi sẽ làm cho tập hợp có thứ tự chứa phần tử.1000
# generate a possible sequence of letters
s <- sample(x = letters, size = 1000, replace = TRUE)
Nó chỉ ra rằng nếu mỗi vị trí của tập hợp được sắp xếp theo phân phối đồng đều trên các chữ cái viết thường của bảng chữ cái, thì khoảng cách giữa hai lần xuất hiện của cùng một chữ cái theo phân phối hình học với tham số . Trước thông tin này, hãy tính khoảng cách giữa các lần xuất hiện liên tiếp của cùng một chữ cái.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)
Chúng ta hãy xem biểu đồ khoảng cách giữa các lần xuất hiện của cùng một chữ cái và so sánh nó với hàm khối lượng xác suất liên quan đến phân phối hình học được đề cập ở trên.
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)
Các chấm màu đỏ biểu thị hàm khối lượng xác suất thực tế của khoảng cách mà chúng ta mong đợi nếu mỗi vị trí của tập hợp được sắp xếp theo phân phối đồng đều trên các chữ cái và các thanh của biểu đồ biểu thị hàm khối lượng xác suất theo kinh nghiệm của khoảng cách được liên kết với lệnh bộ.
Hy vọng rằng hình ảnh trên là thuyết phục rằng phân phối hình học là phù hợp.
Một lần nữa, nếu mỗi vị trí của tập hợp được sắp xếp tuân theo phân phối đồng đều trên các chữ cái, chúng ta sẽ mong đợi khoảng cách giữa các lần xuất hiện của cùng một chữ cái theo phân phối hình học với tham số . Vì vậy, làm thế nào tương tự như phân phối dự kiến của khoảng cách và phân phối theo kinh nghiệm của sự khác biệt? Các Bhattacharyya Khỏang cách giữa hai phân bố rời rạc là khi phân phối là giống hệt nhau và có xu hướng như các bản phân phối ngày càng trở nên khác nhau.p = 1 / 260∞
Làm thế nào để d.flat
từ trên so sánh với phân phối hình học dự kiến về khoảng cách 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)
Khoảng cách Bhattacharyya giữa phân phối hình học dự kiến và phân phối biểu tượng của khoảng cách là khoảng , khá gần với .0,0260
BIÊN TẬP:
Thay vì chỉ đơn giản nói rằng Khoảng cách Bhattacharyya được quan sát ở trên ( ) khá gần với , tôi nghĩ đây là một ví dụ điển hình khi mô phỏng có ích. Câu hỏi bây giờ là như sau: Khoảng cách Bhattacharyya được quan sát ở trên so với Khoảng cách Bhattacharyya điển hình được quan sát như thế nào nếu mỗi vị trí của tập hợp được sắp xếp đồng nhất trên các chữ cái? Chúng ta hãy tạo ra bộ được đặt hàng như vậy và tính toán từng Khoảng cách Bhattacharyya của chúng từ phân phối hình học dự kiến.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))
Bây giờ chúng ta có thể tính xác suất quan sát Khoảng cách Bhattacharyya được quan sát ở trên, hoặc một cực trị nữa, nếu tập hợp được sắp xếp được tạo theo cách sao cho mỗi vị trí của nó tuân theo phân phối đồng đều trên các chữ cái.
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