larmarange / analyse-R

Introduction à l'analyse d'enquêtes avec R et RStudio
https://larmarange.github.io/analyse-R/
53 stars 40 forks source link

analyse-R/classification-ascendante-hierarchique #109

Closed utterances-bot closed 2 years ago

utterances-bot commented 4 years ago

Classification ascendante hiérarchique (CAH)

undefined

http://larmarange.github.io/analyse-R/classification-ascendante-hierarchique.html

MaximeDmnt commented 4 years ago

Bonjour ! Une fois la classification faite, (HCPC avec FactomineR dans mon cas), j'ai bien accès à tous les graphique présentés ci-dessus. Dans mon étude, chaque individu correspond à une commune, et je dois pouvoir afficher sur une carte le cluster de chacune des communes. Ainsi, pour chaque individu, j’aimerais connaitre le cluster auquel il appartient (par exemple en ayant une colonne en plus dans mon dataset indiquant le numéro du cluster de l'individu). Savez-vous si c'est possible ? (J'ai écumé les forums, et le fonctionnement des fonction hclust, hcpc, mais je ne trouve rien)

larmarange commented 4 years ago

L’objet renvoyé par HCPC() contient de nombreuses informations. La partition peut notamment être récupérée avec cah$data.clust$clust. Il y a également diverses statistiques pour décrire les catégories.

Donc, si votre fichier de données s'appelle communes et le résultat de HCPC() s'appelle cah :

communes$cluster <- cah$data.clust$clust
Lea-WS commented 4 years ago

Bonjour, J'ai exactement la même question que Maxime, mais j'ai fait ma classification avec hclust à partir d'une matrice des distance de gower (construite avec la fonction daisy). Je ne trouve pas comment faire pour associer les catégories aux individus. Est-ce que c'est possible ? Merci !

larmarange commented 4 years ago

si on appelle arbre le résultat de hclust() et que l'on veut 4 caétgories :

df$typo <- cutree(arbre, 4)
Lea-WS commented 4 years ago

Top ! Merci !

----- Mail original -----

De: "Joseph" notifications@github.com À: "larmarange/analyse-R" analyse-R@noreply.github.com Cc: "Lea-WS" lea.wester@laposte.net, "Comment" comment@noreply.github.com Envoyé: Lundi 27 Janvier 2020 19:13:14 Objet: Re: [larmarange/analyse-R] analyse-R/classification-ascendante-hierarchique (#109)

si on appelle arbre le résultat de hclust() et que l'on veut 4 caétgories : df $ typo <- cutree( arbre , 4 )

— You are receiving this because you commented. Reply to this email directly, view it on GitHub , or unsubscribe .

pollito77 commented 4 years ago

Bonjour, lorsque j'utilise A2Rplot, cela me donne : Erreur : pile de noeuds débordée vers le haut Erreur pendant l'emballage (wrapup) : pile de noeuds débordée vers le haut Qu'est-ce que cela signifie ? Merci d'avance.

larmarange commented 4 years ago

A2Rplot() est une fonction un peu ancienne récupérée sur le net et qui ne fonctionne pas toujours. Je ne sais d'où peut venir le bug mentionné.

Dans ce genre de situation, je vous invite à vous tourner vers des fonctions de représentations de dendrogrammes plus classiques, même si moins esthétiques.

Vous pouvez en particulier regarder du côté de dendextend : http://talgalili.github.io/dendextend/articles/dendextend.html

ibonheme commented 4 years ago

Bonjour, J'ai réalisé une CAH sur un tableau de contingence espèces x points d'inventaire, j'ai utilisé la fonction daisy pour pouvoir calculer la matrice de distance avec l'indice de gover. J'ai ensuite réalisé le dendrogramme par la méthode "ward.D2" de hclust et réalisé par typologie ne utilisant cutree().

En utilisant une autre méthode, c'est-à-dire HCPC() pour faire une CAH, un dendrogramme et une partition, je parviens à récupérer une liste d'espèces qui sont bien caractéristiques (ou au contraire absentes) de mes groupes via $desc.var$quanti, je me demandais comment accéder à cette information lorsque j'utilise la première méthode indiquée?

Merci pour votre aide,

larmarange commented 4 years ago

Il vous faut regarder du côté des fonctions catdes() et descfred() de FactoMineR qui procède à une description des classes.

ibonheme commented 4 years ago

Entendu, je vous remercie, C’est tellement agréable de lire vos pages en français (on trouve beaucoup de choses en anglais et avec de termes un peu trop techniques…) Merci pour tout ce travail, Ingrid

[IGN-RVB.wmf]

Ingrid Bonhême


Ingénieur d’études Département Ecosystèmes Forestiers, Pôle national en écologie forestière DIRECTION TERRITORIALE SUD-OUEST T + 33 (0)5 56 16 60 86 - M + 33 (0)6 72 96 12 96 Rue Pierre Ramond-Caupian, BP 60104 33166 SAINT-MÉDARD-EN-JALLES CEDEX ign.fr - geoportail.fr

De : Joseph [mailto:notifications@github.com] Envoyé : mercredi 27 mai 2020 15:11 À : larmarange/analyse-R Cc : Ingrid Bonheme; Comment Objet : Re: [larmarange/analyse-R] analyse-R/classification-ascendante-hierarchique (#109)

Il vous faut regarder du côté des fonctions catdes() et descfred() de FactoMineR qui procède à une description des classes.

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/larmarange/analyse-R/issues/109#issuecomment-634649599, or unsubscribehttps://github.com/notifications/unsubscribe-auth/APXU3W26YXFUKZA2MQ7SYTDRTUGP3ANCNFSM4I7KBCTA.

EL-O2 commented 3 years ago

Bonjour,

Pour réaliser une ACM avec dudi.acm, comment faire pour différencier les variables et les variables supplémentaires, s'il vous plaît ? Si je reprends votre exemple, toutes les variables spécifiées dans la première ligne de code sont des variables actives.

d2 <- d[, c("grpage", "sexe", "etud", "peche.chasse", "cinema", "cuisine", "bricol", "sport", "lecture.bd")] library(ade4) acm <- dudi.acm(d2, scannf = FALSE, nf = 5)

Vous les stockez dans un objet (ici d2) et vous réalisez l'ACM sur ces variables à l'aide de dudi.acm. Mais comment faire si notre jeu de données comporte des variables actives et des variables supplémentaires ? N'existe-t-il pas un moyen de spécifier dans la commande dudi.acm que telles variables sont actives et les autres supplémentaires.

Merci pour votre aide !

larmarange commented 3 years ago

Les variables supplémentaires ne participent pas au calcul de l'ACM mais sont projetées dans l'espace de l'ACM déjà calculé.

Avec ade4, vous utiliserez la fonction supcol().

Cordialement

PinaSimone commented 3 years ago

Bonjour,

Existe-t'il une fonction pour avoir la description des classes avec le package "ade4" ?

larmarange commented 3 years ago

La commande ?dudi permets d'avoir une description des objets produits par ade4:

tab a data frame with n rows and p columns

cw
column weights, a vector with n components

lw
row (lines) weights, a vector with p components

eig eigenvalues, a vector with min(n,p) components

nf
integer, number of kept axes

c1
principal axes, data frame with p rows and nf columns

l1
principal components, data frame with n rows and nf columns

co
column coordinates, data frame with p rows and nf columns

li
row coordinates, data frame with n rows and nf columns

call
original call

GB49 commented 3 years ago

Bonjour,

Merci pour le tuto bien complet ! A l'issue d'une CAH, je souhaite changer l'ordre de mes individus sur le graphique du dendrogramme (tout en respectant la classification bien sur). Faire pivoter une "branche" de 180° par exemple. Avez-vous idée pour le faire directement dans R ?

Merci bcp

larmarange commented 3 years ago

Manipuler un dendrogramme n'est pas très simple à ma connaissance.

Vous pouvez éventuellement regarder du côté de dendextend : https://cran.r-project.org/web/packages/dendextend/vignettes/dendextend.html

GB49 commented 3 years ago

Merci pour la réponse très rapide ! J'ai réussi à réarranger mon dendrogramme (34 individus pour 10 groupes) comme je le souhaitais. "https://www.biostars.org/p/309913/" En m'inspirant de ce poste, j'ai forcer l'arrangement de chaque individu. A partir de l'arbre du dendrogramme, on peut obtenir le nom de chaque individu avec arbre$labels et leur ordre avec arbre$order. Il suffit ensuite de changer l'ordre de chaque individu avec la fonction reorder et le paramètre agglo.FUN=mean. Un peu fastidieux mais une fois le raisonnement compris ça se fait et le résultat est propre. En tous cas merci !

Pau974 commented 3 years ago

Merci pour ce tuto très complet. Tout fonctionne très bien mais impossible d'utiliser tbl_summary.. On me renvoie un message d'erreur : impossible de trouver la fonction "tbl_summary"

Le package gtsummary est pourtant bien installé...

larmarange commented 3 years ago

Le package a-t-il bien été chargé en mémoire avec library(gtsummary) ?

Pau974 commented 3 years ago

Oui installé et chargé...

larmarange commented 3 years ago

Quelle est la commande précise ? et le message d'erreur exact ?

Pau974 commented 3 years ago

Oui, pardon j'aurais du le préciser dès le début ..

library(gtsummary) cl %>% tbl_summary(by = typo)

cl étant mon jeu de données
data_cl

Le message d'erreur que l'on me renvoie : Error in tbl_summary(., by = typo) : impossible de trouver la fonction "tbl_summary"

J'ai essayé de lancer votre script avec les données hdv2003 du package questionr mais on me renvoie le même message d'erreur

larmarange commented 3 years ago

Essayez de réinstaller gtsummary. Pour cela, faites le à partir d'une nouvelle session R vierge, et n'ayant rien fait ni chargé un quelconque package.

Pau974 commented 3 years ago

J'ai été trop vite en disant que le package était bien chargé.. en réalité le problème vient du chargement qui ne se fait pas ..

library(gtsummary) Erreur : package or namespace load failed for ‘gtsummary’ in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]): l'espace de noms ‘htmltools’ 0.4.0 est en train de charger, mais >= 0.5.0 est requis De plus : Warning message: le package ‘gtsummary’ a été compilé avec la version R 3.6.3

larmarange commented 3 years ago

Vous avez quelle version de R ? Est-ce que le package est bien à jour ?

Je vosu invite à mettre à jour tous vos packages

Pau974 commented 3 years ago

Milles merci ! C'était bien une histoire de mise à jour ! Merci pour votre réactivité!