Tôi mới dùng R và đang cố gắng tìm một hàm tính toán phân kỳ JS trong R. Tôi có thể thấy rằng R có KLdiv để tính toán phân kỳ KL, nhưng có điều gì có sẵn cho phân kỳ JS không?Phân kỳ Jensen Shannon trong R
Trả lời
Theo wikipedia Jensen-Shannon phân kỳ là một sự chuyển đổi của phân kỳ KL. Áp dụng công thức từ định nghĩa nên cung cấp cho bạn sự phân kỳ JS sau đó ...
Xem: http://en.wikipedia.org/wiki/Jensen%E2%80%93Shannon_divergence
Trong trường hợp bất cứ ai vẫn đang tìm kiếm một câu trả lời (tôi), có một chức năng để tính toán này trong R gói phyloseq: http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0061217
tôi cũng tìm thấy hướng dẫn này hữu ích: http://enterotype.embl.de/enterotypes.html
tôi đang tìm kiếm một việc thực hiện đơn giản của JS divergence chứ không phải là một thư viện R. Vì tôi không thấy một trong những câu trả lời, tôi đã đưa ra câu trả lời dưới đây.
Giả sử chúng ta có phân phối đầu vào sau:
# p & q are distributions so their elements should sum up to 1
p <- c(0.00029421, 0.42837957, 0.1371827, 0.00029419, 0.00029419,
0.40526004, 0.02741252, 0.00029422, 0.00029417, 0.00029418)
q <- c(0.00476199, 0.004762, 0.004762, 0.00476202, 0.95714168,
0.00476213, 0.00476212, 0.00476202, 0.00476202, 0.00476202)
Các Jensen-Shannon divergence sẽ là:
m <- 0.5 * (p + q)
JS <- 0.5 * (sum(p * log(p/m)) + sum(q * log(q/m)))
> JS
[1] 0.6457538
Trong hơn 2 phân phối (mà đã được thảo luận here) chúng ta cần một chức năng để tính toán Entropy:
H <- function(v) {
v <- v[v > 0]
return(sum(-v * log(v)))
}
Sau đó, sự phân kỳ JS sẽ là:
JSD <- function(w, m) {
return(H(m %*% w) - apply(m, 2, H) %*% w)
}
> JSD(w = c(1/3, 1/3, 1/3), m = cbind(p, q, m))
[,1]
[1,] 0.4305025
đâu w
là một vector của trọng mà nên tổng hợp 1 và m
là một ma trận với các bản phân phối đầu vào như cột.
- 1. Hiểu entropy shannon của tập dữ liệu
- 2. Phân loại tháng trong R
- 3. Tích phân vô hạn trong R
- 4. Chuyển đổi số thập phân thành nhị phân trong R?
- 5. Phân tích Agper Gompertz trong R
- 6. Phân cụm tương quan trong R
- 7. Thông tư phân công trong R
- 8. R randomForest để phân loại
- 9. dữ liệu Phân loại R
- 10. Phân tích thành phần chính trong màu dữ liệu R
- 11. R: Cách xếp các biểu đồ hình tròn trên 'chấm' trong ô phân tán trong R
- 12. Cách đặt ',' làm dấu phân cách thập phân với R
- 13. tính tích phân kép trong R nhanh chóng
- 14. Bất kỳ gói loại twitteR nào cho Facebook trong Lập trình R?
- 15. Bay phân cấp cho R hoặc Python
- 16. R biglm với các biến phân loại
- 17. Có kiểu dữ liệu "Thập phân" trong R không?
- 18. Bảng phân loại cho hồi quy hậu cần trong R
- 19. Sử dụng phân vùng trao đổi trong R
- 20. Làm một phân phối chuẩn tiêu chuẩn trong R
- 21. Cách tính BIC để phân cụm k trong R
- 22. cách mô phỏng phân phối lưỡng cực trong R?
- 23. Tạo các hình có độ phân giải cao trong R
- 24. phân cụm các giá trị NA trong R
- 25. R, đồ thị phân phối nhị thức
- 26. toán tử phân chia kỳ lạ trong Groovy
- 27. Bất kỳ Trình phân loại Naive Bayesian nào trong python?
- 28. Hợp nhất nhiều khung dữ liệu trong R
- 29. tạo diện tích tự tin cho phân tán phân bố bình thường trong ggplot2 và R
- 30. Tính AUC trong R?
Rất đẹp! –