Je cherche une méthode pour calculer la zone de chevauchement entre deux estimations de densité de noyau dans R, comme mesure de similitude entre deux échantillons. Pour clarifier, dans l'exemple suivant, il me faudrait quantifier l'aire de la région de chevauchement violacé:
library(ggplot2)
set.seed(1234)
d <- data.frame(variable=c(rep("a", 50), rep("b", 30)), value=c(rnorm(50), runif(30, 0, 3)))
ggplot(d, aes(value, fill=variable)) + geom_density(alpha=.4, color=NA)
Une question similaire a été discutée ici , la différence étant que je dois le faire pour des données empiriques arbitraires plutôt que pour des distributions normales prédéfinies. Le overlap
package répond à cette question, mais apparemment uniquement pour les données d'horodatage, ce qui ne fonctionne pas pour moi. L'indice Bray-Curtis (tel qu'implémenté dans vegan
la vegdist(method="bray")
fonction du package ) semble également pertinent mais là encore pour des données quelque peu différentes.
Je m'intéresse à la fois à l'approche théorique et aux fonctions R que je pourrais utiliser pour l'implémenter.
Réponses:
La zone de chevauchement de deux estimations de densité de noyau peut être approximée à tout degré de précision souhaité.
Si les deux sont sur des grilles différentes et ne peuvent pas être facilement recalculés sur la même grille, une interpolation pourrait être utilisée.
Cependant , les commentaires de whuber ci-dessus doivent être clairement gardés à l'esprit - ce n'est pas nécessairement une chose très significative à faire.
la source
Par souci d'exhaustivité, voici comment j'ai fini par le faire dans R:
Comme indiqué, il existe une incertitude et une subjectivité inhérentes à la génération de KDE ainsi qu'à l'intégration.
la source
overlapping
qui estime l'aire du chevauchement de 2 (ou plus) distributions empiriques. Consultez la documentation ici: rdocumentation.org/packages/overlapping/versions/1.5.0/topics/…Tout d'abord, je peux me tromper, mais je pense que votre solution ne fonctionnerait pas dans le cas où il existe plusieurs points où les estimations de densité de noyau (KDE) se croisent. Deuxièmement, bien que le
overlap
package ait été créé pour être utilisé avec des données d'horodatage, vous pouvez toujours l'utiliser pour estimer la zone de chevauchement de deux KDE. Vous devez simplement redimensionner vos données afin qu'elles s'étendent de 0 à 2π.Par exemple :
la source