Ich bin neu in R und suchte nach einer Funktion, die JS Divergenz in R berechnet. Ich kann sehen, dass R KLdiv für die Berechnung der KL Divergenz hat, aber gibt es etwas für JS Divergenz?Jensen Shannon Divergenz in R
Antwort
Laut Wikipedia Jensen-Shannon Divergenz ist eine Transformation der KL-Divergenz. die Formel von der Definition der Anwendung sollten Sie die JS Divergenz dann geben ...
See: http://en.wikipedia.org/wiki/Jensen%E2%80%93Shannon_divergence
Falls jemand noch auf der Suche nach einer Antwort (ich war), gibt es eine Funktion dies in der zur Berechnung R Paket phyloseq: http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0061217
ich fand auch dieses Tutorial nützlich: http://enterotype.embl.de/enterotypes.html
ich war für eine einfache Implementierung der JS divergence eher als eine R-Bibliothek suchen. Da ich in keiner der Antworten eine Antwort gefunden habe, habe ich die folgende gefunden.
Angenommen, wir folgende Eingabeverteilungen haben:
# 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)
Die Jensen-Shannon Divergenz wäre:
m <- 0.5 * (p + q)
JS <- 0.5 * (sum(p * log(p/m)) + sum(q * log(q/m)))
> JS
[1] 0.6457538
Seit mehr als zwei Verteilungen (die bereits here diskutiert worden ist) wir brauchen Funktion zur Berechnung der Entropy:
H <- function(v) {
v <- v[v > 0]
return(sum(-v * log(v)))
}
Dann würde die JS Divergenz:
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
Wo w
ist ein Vektor von Gewichten, die zu 1 summieren müssen und m
ist eine Matrix mit den Eingangsverteilungen als Spalten.
- 1. Jensen-Shannon Divergenz
- 2. Verständnis Shannon Entropie eines Datensatzes
- 3. Klassische Vererbung Divergenz
- 4. MATLAB: Überprüfen Sie auf While-Schleife Divergenz
- 5. KL-Divergenz von t-SNE Einbettung
- 6. Divergenz in CUDA - Beenden eines Threads im Kernel
- 7. matplotlib stromlinienförmig mit dem Bereich der Divergenz und Konvergenz
- 8. In git, einen historischen vorge ziehen begeht Bearbeitung nach der Pull-Divergenz vom Ursprung
- 9. Fuzzy String Vergleich - Erkennen von Kurznamen
- 10. Interaktive Rebase eines Zweiges mit seinem Punkt der Divergenz von Master
- 11. In R
- 12. In R
- 13. Einschließlich R-Skripte in R-Paketen
- 14. Einfache Schleife in R "Ersatz hat Länge Null" in R
- 15. Erhöhung Vektorauflösung in R
- 16. Anzeigewerte in R Plot
- 17. dynamische regex in R
- 18. Lagging Variablen in R
- 19. R in SharePoint
- 20. Muster ersetzen in R
- 21. Linienfunktionen in R
- 22. Anpassen Graphen in R
- 23. Parallele Verarbeitung in R
- 24. Empty Plot in R
- 25. Teildatensätze in R
- 26. Sanitizing Strings in R
- 27. Korrelation in R
- 28. Bewegliche Abweichung in R
- 29. Gleitende FFT in R
- 30. Der R% in% Operator
Sehr schöne Arbeit! –