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 :

Obtenir l'algorithme de la fonction vglm de R


Sujet :

R

  1. #1
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 28
    Par défaut Obtenir l'algorithme de la fonction vglm de R
    Bonjour,

    Quentin, étudiant en informatique. je suis actuellement à la recherche de l'algorithme qu'utilise le créateur du vglm car je souhaite la programmer en C++. Le vglm est une fonction de R (package VGAM) permettant de faire de la régression logistique.
    Est-ce que quelqu'un pourrait m'indiquer comment obtenir l'algorithme en question s'il vous plait?

    Bonne journée,
    Quentin

  2. #2
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Bonjour,

    Je ne suis pas très familière avec la fonction "vglm" mais dans l'aide de R concernant cette fonction j'ai trouvé le lien suivant qui pourrait vous intéresser (mais peut-être l'avez-vous déjà exploré...) : http://www.stat.auckland.ac.nz/~yee/VGAM/.

    Sinon, une fois le package "VGAM" chargé, en tapant directement dans R : vous obtenez le code correspondant à cette fonction.

    Voilà, en espérant que ceci vous aide un peu, bonne continuation


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  3. #3
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 28
    Par défaut
    Je vous remercie beaucoup, c'est à peu près ça que je cherche.
    Par contre en tapant sur la console R "vglm", j'ai un code de la fonction vglm. Je sais que la régression logistique est en générale, la maximisation de la vraisemblance et l'optimisation par la méthode de Newton-Raphson. En lisant rapidement ce code, je n'ai pas vu quelque chose qui ressemblait à cela.
    Je souhaiterais juste avoir un algorithme détaillé, et non pas un programme.

    Néanmoins, je tenais à te remercier d'avoir cherché.

    Merci beaucoup.

  4. #4
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 28
    Par défaut
    J'ai cherché sur une autre piste.
    En allant sur ce lien :http://cran.r-project.org/web/packages/VGAM/index.html
    Je télécharge le "Package source", puis je dézippe le fichier. Dans ce fichier, on trouve des codes de toutes sortes, et dans un fichier qui s'appelle "src" où on y trouve des codes en C++. Pensez-vous que ces codes sont les codes en C++ de la fonction VGLM de R.

    Bonne journée

  5. #5
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Citation Envoyé par Quentin15 Voir le message
    J'ai cherché sur une autre piste.
    En allant sur ce lien :http://cran.r-project.org/web/packages/VGAM/index.html
    Je télécharge le "Package source", puis je dézippe le fichier. Dans ce fichier, on trouve des codes de toutes sortes, et dans un fichier qui s'appelle "src" où on y trouve des codes en C++. Pensez-vous que ces codes sont les codes en C++ de la fonction VGLM de R.

    Bonne journée
    Malheureusement, c'est pas aussi simple. Le fonction vglm est un script R, qui appelle plein de fonction (provenant d'autres libs R, de fortran et de C). La conversion d'un algorithme de R en C++ peut être relativement complexe et long (je l'avais fait pour une fonction de transformée en ondelette). Il est plus facile de repartir d'un algorithme publié par ailleurs que du code.

  6. #6
    Membre éprouvé
    Inscrit en
    Mai 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 74
    Par défaut
    Essaye ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    require(VGAM)
     
    get("vglm.fit")

  7. #7
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Bonjour,

    Citation Envoyé par dickoa Voir le message
    Essaye ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    require(VGAM)
     
    get("vglm.fit")
    Qu'est censé renvoyer ce code? Le code de la fonction? Personnellement, si je tape tel quel ce que vous indiquez ici, cela ne fonctionne pas...


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  8. #8
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 28
    Par défaut
    Effectivement, c'est censé renvoyer quoi?
    En faisant aussi ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    > library(VGAM)
    > vglm
    on obtient aussi un code propre à R. Est-il identique au tien ?

    Merci.

  9. #9
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 28
    Par défaut
    @gbdivers:
    Comment as tu fait pour obtenir l'algorithme de ta fonction de transformée de l'ondelette? Où l'as tu trouvé pour faire simple?
    Et comment as tu fait pour la recoder? T'es tu servis des intégrateurs de codes R dans un programme de C++?

  10. #10
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Mon objectif était d'implémenter la fonction peakDetectionCWT du paquet MassSpecWavelet, en particulier pour garder les mêmes paramètres (pour comparer le résultat de différentes implémentation du traitement par ondelettes) de façon à profiter des performances du C++. J'ai décortiqué le code de la fonction (simplement en tapant le nom de la fonction dans R, sans ? ou parenthèses) et des fonctions appelées par cette fonction (cwt, getRidge, identifyMajorPeak, getLocalMaximumCWT, etc.). J'ai étudié le principe de l'algorithme pour comprendre le code (wikipédia + recherche internet + Numerical Recipes). Ca m'a pris plusieurs mois (mais ce n'était pas mon activité principale, quelqu'un pourrait le faire en quelques semaines, à condition de connaitre le C++ et R)

    J'ai également utilisé RInside pour appeler directement la fonction R pour comparer mon implémentation avec la version d'origine à chaque étape du calcul (donc pour chaque variable intermédiaire générée)

    En fait, j'avais un besoin particulier (performance) qui m'ont obligé à convertir le code. Mais en général, c'est un travail trop compliquer et trop lourd si tu n'as pas un besoin particulier.
    Il est largement préférable d'utiliser une implémentation en C++ existante ou rester sur du code R (dans R ou avec RInside)

    Pourquoi ce besoin de convertir l'algorithme en C++ ?

  11. #11
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 28
    Par défaut
    En fait, je souhaite créer un outil de prédiction sur des variables qualitatives. Mais je ne souhaite pas que mon outil dépende de R, il faudrait que l'utilisateur en ramenant sa Base de données, puisse en un clic avoir un résultat.

  12. #12
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    gestion de base de données, calcul statistique, interface utilisateur je suppose, apprentissage du C++... cela fait beaucoup de chose à apprendre

    Si ton but est d'apprendre le C++, commence par des projets plus simple (Hello world). Je te conseille dans ce cas d'apprendre aussi un framework graphique pour l'interface (Qt par exemple, qui peut gérer aussi les bases de données). Tu as la possibilité d'utiliser un bibliothèque C ou C++ pour la partie calcul ou d'implémenter par toi même la régression (l'algorithme n'est pas très compliqué à implémenter, surtout si tu utilises des libs d'algèble linéaire telque BLAS ou la GSL)

    Si ton but est de réaliser ces analyses, le C++ n'est pas un bon choix de langage : le temps de développement sera très (trop ?) important. De plus R peut accéder directement aux bases de données et faire une interface graphique (avec tcl/tk je crois). De plus, c'est toujours intéressant de connaitre un langage de script tel que R pour tester rapidement un algorithme.

    La solution de RInside est intéressant du fait que tu apprends le C++ et que tu pourras utiliser les outils de R directement.

    Bref, continue d'utiliser R sauf si tu veux apprendre le C++ (mais c'est bien 2

  13. #13
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 28
    Par défaut
    J'ai un niveau débutant en C++.
    De formation statisticienne, je comprends bien ce que fait la fonction vglm. Mais par contre le coder en C++ est un peu difficile.
    Pour le moment je recherche activement des tutoriels en français sur l'utilisation du RInside, qui m'a l'air pas mal. En gros, à partir de mon interface C++, je vais appeler les codes R qui permettent la réalisation de la régression.

  14. #14
    Invité de passage
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2014
    Messages : 1
    Par défaut Code C++ de cwt, getRidge, etc. de la bibliothèque massSpecWavelet
    Bonjour,
    J'ai été très intéressé de voir que vous vous étiez préoccupé de transcrire il y a quelques années le code R des fonctions cwt, getRidge, identifyMajorPeak, getLocalMaximumCWT, etc. présentes dans la bibliothèque MassSpecWavelet pour des problèmes de rapidité d'exécution du code. Je rencontre le même problème pour des fichiers contenant plusieurs centaines de millions de lignes dans les fichiers de données. Avez-vous réussi à faire exécuter ce code dans Rinside ou avec Rcpp ? Si oui, ce code est-il disponible en particulier pour une utilisation en recherche ?
    Merci par avance pour votre réponse.
    Alain


    Citation Envoyé par gbdivers Voir le message
    Mon objectif était d'implémenter la fonction peakDetectionCWT du paquet MassSpecWavelet, en particulier pour garder les mêmes paramètres (pour comparer le résultat de différentes implémentation du traitement par ondelettes) de façon à profiter des performances du C++. J'ai décortiqué le code de la fonction (simplement en tapant le nom de la fonction dans R, sans ? ou parenthèses) et des fonctions appelées par cette fonction (cwt, getRidge, identifyMajorPeak, getLocalMaximumCWT, etc.). J'ai étudié le principe de l'algorithme pour comprendre le code (wikipédia + recherche internet + Numerical Recipes). Ca m'a pris plusieurs mois (mais ce n'était pas mon activité principale, quelqu'un pourrait le faire en quelques semaines, à condition de connaitre le C++ et R)

    J'ai également utilisé RInside pour appeler directement la fonction R pour comparer mon implémentation avec la version d'origine à chaque étape du calcul (donc pour chaque variable intermédiaire générée)

    En fait, j'avais un besoin particulier (performance) qui m'ont obligé à convertir le code. Mais en général, c'est un travail trop compliquer et trop lourd si tu n'as pas un besoin particulier.
    Il est largement préférable d'utiliser une implémentation en C++ existante ou rester sur du code R (dans R ou avec RInside)

    Pourquoi ce besoin de convertir l'algorithme en C++ ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/06/2009, 12h40
  2. Obtenir nom de fichier en fonction de l'URL
    Par smarties dans le forum Réseau
    Réponses: 0
    Dernier message: 02/04/2008, 20h04
  3. algorithme comportant une fonction récursive
    Par TraxX dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/02/2008, 17h09
  4. Obtenir le nom de la fonction en cours
    Par vilcoy dans le forum VB.NET
    Réponses: 2
    Dernier message: 12/03/2007, 16h42
  5. Algorithme de la fonction rand()
    Par Tellmarch dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 02/03/2007, 21h07

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