Valeurs Manquantes dans analyse par cluster

Aller en bas

Valeurs Manquantes dans analyse par cluster

Message par Didine34790 le Mer 19 Mar 2014 - 10:14

Bonjour,
dans le cadre de mon stage, je dois déterminer des profils sur des bases de données de clients.
Ces bases de données sont pleines de valeurs manquantes, et donc les fonctions kmeans, mclust et cie ne fonctionnent pas

J'ai une BDD de 10 000 individus (avec les NAs)

J'ai utilisé ces lignes de code pour enlever les NAs
Code:
nutris=na.omit(nutris)

et

Code:
mvc = sapply(nutris[vars], function(x) sum(is.na(x)))
mvn = names(which(mvc == nrow(nutris)))

après ces étapes, j'ai une bdd avec 8701 individus

Mais quand je lance le kmeans, j'ai en réponse:

Code:
> nutrik=kmeans(nutrim, 3)
Error in do_one(nmeth) : NA/NaN/Inf in foreign function call (arg 1)
In addition: Warning message:
In kmeans(nutrim, 3) : NAs introduced by coercion


Que faut il que je fasse pour vraiment enlever les NAs puisque R semble toujours les voir?

Merci d'avance.

Didine34790

Nombre de messages : 7
Age : 29
Date d'inscription : 18/03/2014

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Valeurs Manquantes dans analyse par cluster

Message par Nik le Mer 19 Mar 2014 - 12:49

Bonjour,

Ce n'est pas un problème lié aux NA initiaux qui sont parfaitement supprimés par la fonction na.omit.
Il est probable que tu essaies de faire un clustering sur des variables de type "character". La fonction kmeans n'arrive pas à convertir ces valeurs en numérique comme dans l'exemple ci-dessous
Code:
as.numeric(LETTERS[1:3])
[1] NA NA NA
Message d'avis :
NAs introduits lors de la conversion automatique

Si ce n'est pas ça le problème il faut fournir un exemple des données.

Nik


Nik

Nombre de messages : 1588
Date d'inscription : 23/05/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Valeurs Manquantes dans analyse par cluster

Message par Didine34790 le Mer 19 Mar 2014 - 13:01

Bonjour,

Je n'ai pas de variables de type character, mais quelques de type factor :

Code:
> sapply(nutris, class)
          age  idinfoperso      civilite        prenom        codep        taille
    "numeric"    "integer"      "factor"      "factor"    "integer"    "integer"
        poids          sexe      objectif      ossature  impedance_5  impedance_50
    "factor"      "factor"      "factor"      "factor"    "integer"    "integer"
impedance_100            Vt            Ve            Vi          MNG            MG
    "integer"      "factor"      "factor"      "factor"      "factor"      "factor"
          Mu  tour_taille  tour_hanche          IMC
    "factor"    "integer"    "integer"      "factor"

Faut il que je change les types "factor" en "integer"?

Didine34790

Nombre de messages : 7
Age : 29
Date d'inscription : 18/03/2014

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Valeurs Manquantes dans analyse par cluster

Message par Nik le Mer 19 Mar 2014 - 13:15

Non les facteurs sont convertis automatiquement en numeric sans problème.
Est-ce normal que le poids soit un facteur ?

Nik

Nombre de messages : 1588
Date d'inscription : 23/05/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Valeurs Manquantes dans analyse par cluster

Message par Didine34790 le Mer 19 Mar 2014 - 14:03

J'ai changé dans le csv les "," séparateurs des décimales en "." (je pense que le formatage d'excel posait problème)


J'ai pu lancer le kmeans sans problème.
Merci.

Par contre, est ce qu'il existe une fonction dans R qui permette de distinguer des groupes (ou profils) d'individus en fonction de variables pas forcément numériques?

Didine34790

Nombre de messages : 7
Age : 29
Date d'inscription : 18/03/2014

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Valeurs Manquantes dans analyse par cluster

Message par zezima le Mer 19 Mar 2014 - 14:31

Didine34790 a écrit:
Par contre, est ce qu'il existe une fonction dans R qui permette de distinguer des groupes (ou profils) d'individus en fonction de variables pas forcément numériques?

Le clustering devrait te sortir des "groupes d'individus" normalement éloignés.

Tu as une autre méthode FAMD ou ACM en fonction des variables que tu choisis qui te permet d'obtenir tes cluster si tu n'as pas de données manquantes.

Un statisticien explique dans des vidéos comment faire :

https://www.youtube.com/playlist?list=PLnZgp6epRBbQu2QtCyqYL80In1P-A_Iud&feature=view_all
avatar
zezima

Nombre de messages : 808
Date d'inscription : 26/02/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Valeurs Manquantes dans analyse par cluster

Message par Nik le Mer 19 Mar 2014 - 15:49

le kmeans est une méthode de classification comme une autre qui peut tout à fait se faire sur des variables nominales.
Il faut faire la distinction entre le type de variable et comment on gère numériquement la variable en elle-même.

Du coup, je ne vois pas bien ce que tu entends par "distinguer des groupes en fonction de variables non numériques"

Nik

Nombre de messages : 1588
Date d'inscription : 23/05/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Valeurs Manquantes dans analyse par cluster

Message par Didine34790 le Jeu 20 Mar 2014 - 7:40

Par exemple une chaine de caractère comme le prénom, ou l'hébergeur email

Didine34790

Nombre de messages : 7
Age : 29
Date d'inscription : 18/03/2014

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Valeurs Manquantes dans analyse par cluster

Message par Nik le Jeu 20 Mar 2014 - 9:18

oui je vois bien les valeurs des variables mais je ne vois pas bien ce que tu fais comme différence avec ce que tu as fait précédemment.
Tes variables non numériques pourront être traitée comme des facteurs. Chaque modalité sera alors prise sous forme d'une indicatrice.


Nik

Nombre de messages : 1588
Date d'inscription : 23/05/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Valeurs Manquantes dans analyse par cluster

Message par Didine34790 le Jeu 20 Mar 2014 - 9:59

J'ai

Code:
> sapply(part, class)
                      age                    prénom civilité_1_m_2_mme_3_mlle
                "numeric"                  "factor"                "integer"
        nom_de_domaine_2          nom_de_domaine_3
                "factor"                  "factor"
> dim(part)
[1] 1000    5

j'ai réduit la dimension de la matrice initiale à 1000 pour réduire le temps d'attente

Quand j'applique la fonction kmeans de base de R, j'ai
Code:
> km=kmeans(part, 3)
Error in do_one(nmeth) : NA/NaN/Inf in foreign function call (arg 1)
In addition: Warning message:
In kmeans(part, 3) : NAs introduced by coercion

je suis passée par la package ClustOfVar, et la fonction kmeansvar qui m'a bien fait des groupes.

Didine34790

Nombre de messages : 7
Age : 29
Date d'inscription : 18/03/2014

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Valeurs Manquantes dans analyse par cluster

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum