J'essaye de créer un diagramme d'Euler avec le package R eulerr. J'utilise le code suivant:
original fitted residuals regionError A 15 15 0 0.004 B 0 0 0 0.000 C 19 19 0 0.005 D 13 13 0 0.003 A&B 4 4 0 0.001 A&C 14 14 0 0.003 A&D 4 4 0 0.001 B&C 2 0 2 0.022 B&D 0 0 0 0.000 C&D 3 3 0 0.001 A&B&C 11 11 0 0.003 A&B&D 2 2 0 0.000 A&C&D 1 1 0 0.000 B&C&D 0 0 0 0.000 A&B&C&D 3 3 0 0.001 diagError: 0.022 stress: 0.004
J'obtiens le résultat suivant:
Mais le tracé d'Euler qui en résulte est faux:
Comment puis-je résoudre ce problème ou s'agit-il d'une erreur de package?
Le diagramme d'erreur est le suivant:
Erreur de région:
Résidus:
Malheureusement, le diagramme résiduel ne montre pas les résidus.
Néanmoins, les observations manquantes sont indiquées dans la statistique résiduelle "normale" ci-dessous.
vd <- euler(c(A = 54, B = 22, C = 53, D= 26 ,"A&B" = 20, "A&C" = 29, "A&D"=10, "B&C" = 16, "B&D"=5, "C&D"=7,"A&B&C" = 14, "A&B&D"=5, "A&C&D"=4, "B&C&D"=3,"A&B&C&D"=3),input = c("union"), shape="ellipse")
plot(vd, labels = c("A", "B", "C","D"), main = "Databases",Count=TRUE, quantities = TRUE)
3 Réponses :
La raison pour laquelle certaines zones sont laissées de côté est simple: le diagramme est inexact et il manque certaines zones. Il n'y a pas de place pour mettre l'étiquette pour B&C , c'est pourquoi il manque 2 unités à B et C. Il n'y a probablement aucun moyen (ou du moins eulerr ne peut pas le trouver) de représenter parfaitement votre combinaison avec un diagramme d'Euler en utilisant des ellipses. Vous devez soit accepter que ce soit inexact, soit essayer une autre solution.
De même, le tracé des résidus ne peut pas afficher graphiquement les résidus manquants car aucune zone ne les représente. Je suis, en passant, l'auteur de ce paquet et j'ai quelque chose de mieux en tête pour le tracé résiduel qui afficherait également les zones manquantes, mais je n'ai pas encore eu le temps de l'implémenter.
En ce qui concerne la résolution du problème, cela dépend du niveau de précision souhaité. À partir de l'algorithme nVenn , j'ai créé le package nVennR pour créer diagrammes d'Euler quasi proportionnels. Avec les mises en garde mentionnées dans le lien, vous pouvez représenter un plus grand nombre d'ensembles et afficher la taille relative de chaque région. Dans votre exemple,
library(nVennR)
myV <- createVennObj(nSets = 4, sNames = c('A', 'B', 'C', 'D'), sSizes = c(0, 26, 53, 7, 22, 5, 16, 3, 54, 10, 29, 4, 20, 5, 14, 3))
myV <- plotVenn(nVennObj = myV)
En fonction de vos besoins, cela peut ne pas être satisfaisant. La proportionnalité est dans l'aire des cercles, pas des régions (vous pouvez voir que la région 1, 2, 3, 4 - A & B & C & D - a un espace vide. Cependant, cette stratégie surmonte les limitations des formes régulières dans ces représentations mentionnées par Johan Larsson. Si vous êtes intéressé, vous trouverez plus de détails dans la vignette .
Euler peut se tromper dans un certain nombre d'instances, par exemple:
vd <- euler(c(A=23578,B=30492,C=63610,"A&B"=563,"A&C"=624,"B&C"=1600,"A&B&C"=308))
plot(vd, labels = c("1", "2", "3"), main = "overlap", cex=2)
affiche un diagramme sans régions qui se chevauchent pour les trois catégories.
Je pense que c'est simplement un outil inexact à utiliser.
La documentation dit que "avec trois ensembles ou plus se croisant, exactement Euler les diagrammes sont souvent impossibles. Dans de tels cas, eulerr tente de fournir une bonne approximation en réglant numériquement les paramètres des ellipses ou des cercles pour minimiser l'erreur dans le diagramme résultant. " C'est peut-être l'un de ces cas impossibles. La documentation indique également que «les statistiques résiduelles et de qualité d'ajustement sont fournies pour évaluer si le diagramme résultant peut être fiable» - les avez-vous vérifiées?
Merci! Cela semble être l'un des cas imbossibles. Les statistiques sur les résidus et la qualité de l'ajustement montrent les résultats affichés dans mon premier message.