IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Package MClust pour l'algo EM


Sujet :

R

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Package MClust pour l'algo EM
    Bonjour,


    j'aimerais utiliser l'algo EM de mclust sur le cas le plus simple (mélange de 4 gaussiennes en 4 dimensions) et obtenir les 4 moyennes, les 4 variances et les 4 proportions.
    je suppose que la fonction "em" effectue l'algo sur un certain nombre d'itérations (combien ? ...). Mais lorsque je place le code suivant, il me dit que la parameters$pro est incorrect (j'ai mis rep(.25,4)...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    N=1000
    w=sample(1:4, N, replace=TRUE,prob=c(.1,.5,.15,.15) )
    echantillon=(w==1)*rnorm(N,-5,1)+(w==2)*rnorm(N,10,4)+(w==3)*rnorm(N,0,.5)+(w==4)*rnorm(N,5,10)
     
     
     ech=as.matrix(echantillon)
     par=data.frame(pro=rep(.25,4),mean=rep(1,4),variance=rep(1,4))
     em(modelName="EEE", data=ech,parameters=par)
     
     estep(modelName="EEE", data=ech,parameters=par)

    Si quelqu'un peut m'expliquer ce qui se passe, ce serait super.
    Merci par avance.

  2. #2
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Bonjour et bienvenue,

    Ça fait plaisir de voir une question accompagnée d'exemples exécutables !

    Malheureusement, je n'ai pas réussi à y voir plus clair mais je peux peut-être apporter une maigre contribution tout de même.



    Je ne peux pas t'aider davantage, ne connaissant pas ce type de modèle.
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,


    merci, pitipoisson. Je t'avoue que j'avais laissé un peu tomber pour m'activer sur les autres cours qui s'empilent, mais maintenant, je dois m'y remettre et achever la bête...

    Après recherches, j'obtiens ci-dessous un programme qui semble donner un résultat. Mais hélas, les variances sont très éloignées des valeurs d'origine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    #install.packages("mclust_3.4.10.zip", repos=NULL)
    library(mclust)
     
    N=1000
    w=sample(1:4, N, replace=TRUE,prob=c(.1,.5,.15,.25) )
    ech=(w==1)*rnorm(N,-5,1)+(w==2)*rnorm(N,10,4)+(w==3)*rnorm(N,0,.5)+(w==4)*rnorm(N,5,10)
    ech=as.matrix(ech)
     
    testt=Mclust(ech, G=4)#, control=userParam)    #CHOISIR userParam$eps plus petit eventuellement...
    testt$parameters$pro
    testt$parameters$mea
    testt$parameters$var$sig
     
    #A comparer avec le melange d'origine :
    #pro = .1  .5  .15  .25
    #mean = -5  10  0  5
    #sigma = 1  4  .5  10

    Pourtant, un copain a programmé l'algo EM en scilab, et le résultat me semblait meilleur. Enfin bon c'est mieux que rien. Les moyennes semblent bonnes...

    J'essaie de continuer là dessus... Et si quelqu'un sait pourquoi mes variances sont aussi aberantes, ça m'intéresse, bien sûr ...

    A bientôt.

  4. #4
    Membre averti
    Femme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Points : 417
    Points
    417
    Par défaut
    Bonjour,

    êtes-vous sûr d'avoir deux variances et non pas une variance et un écart-type?

    En effet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    > sqrt(testt$parameters$var$sig)
    [1]  1.2919960  0.4611853  4.2587119 11.4232176
     #sigma = 1  4  .5  10
    Est-ce une coïncidence?

    Bonne journée

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/04/2010, 13h38
  2. Aide pour un algo
    Par mic79 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 25/10/2006, 10h29
  3. [Oracle 8.1.7] Y-a-t-il un package spécifique pour XML ?
    Par Nounoursonne dans le forum Oracle
    Réponses: 4
    Dernier message: 09/02/2006, 14h57
  4. besoin d'aide pour des algos
    Par mathieu77 dans le forum Algorithmes et structures de données
    Réponses: 23
    Dernier message: 08/11/2005, 18h33
  5. package ambiguïté pour des classes de même nom
    Par soad dans le forum Langage
    Réponses: 2
    Dernier message: 10/06/2004, 19h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo