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 :

Communication VBA & R, pour regression


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Par défaut Communication VBA & R, pour regression
    Bonjour à toute la communauté R !

    Je suis actuellement en train de développer un outil de régression multilinéaire, afin d'expliquer les variations d'une variable en fonction de plusieurs autres.

    Pour ce faire, je souhaite utiliser R, que je piloterais par VBA. C'est-à-dire que j'extrais mes données dans VBA, je les traite (de façon à ce qu'elles soient homogènes en termes de date, d'unité, etc..) et je les envoie (à l'aide d'un variant) dans R.
    Puis R me retourne mes coefficients.

    Premier problème, pour envoyer le variant dans R grace a la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RInterface.PutArrayFromVBA("DatasReg", var_datas)
    En effet, si je set le variant comme un Range("A1").CurrentRegion, alors là pas de problème. Seulement, quand je "fabrique" moi-même le variant, en determinant moi-même toutes les données, j'ai un message d'erreur par la suite dans mon tableau de retour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Var_Coefficients = RInterface.GetArrayToVBA("lm(REG~A16+A17+A18+A19+A20+A21+A22,data=DatasReg)$coefficients")
    -->"#RError"
    A priori, le variant que je fabrique est exactement le même ! Savez-vous d'où vient le problème?

    2ème probleme :
    Comment faire pour extraire le R2 de mes coefficients retournés par R?

    Merci infiniment de votre aide !

    Georges

  2. #2
    Membre du Club
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Par défaut
    Bonjour,

    Juste pour faire simple, j'aimerai exécuter les lignes de codes suivantes dans R, de facon automatique / pilotee par VBA:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    > table=read.csv("Y:\\Admin\\DataReg.csv",header=TRUE,sep=",")
    > fct=lm(REG~A16+A17+A18+A19+A20+A21+A22,data=table)
    > summary(fct)
    et récuperer les données renvoyées par idéalement dans un variant / csv produit par R.

    Quelqu'un aurait il une petite idee?

    Merci

  3. #3
    Membre émérite

    Homme Profil pro
    Cyber Security & AI
    Inscrit en
    Février 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Cyber Security & AI

    Informations forums :
    Inscription : Février 2009
    Messages : 506
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Tu peux exécuter un fichier .exe avec VBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RetVal = Shell("C:\Program Files\R\R-2.15.2\bin\Rscript.exe", 1)
    et il existe sous R dans le repertoire bin un fichier exe Rscript.exe que tu peux lancer et exécuter du code R à partir d'un fichier.

    Cela répond a ta question ?

    Pour la création d'un cvs tu peux avoir ce type de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    write.table(MyData, "out.dat", sep = ";")
    Cordialement.

  4. #4
    Membre du Club
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Par défaut
    Merci beaucoup pour ta reponse dev_ggy,

    en fait, en exécutant le .exe, j'ai une fenêtre ms-dos qui s'ouvre, puis qui se ferme immediatement.

    En cherchant une alternative, je suis tombé sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RInterface.RunRFile "Y:\\Admin\\Test.txt"
    Dans le fichier Test.txt en question, dois-je mettre exactement le code que je souhaite exécuter comme ceci, brut?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    table=read.csv("Y:\\Admin\\DataReg.csv",header=TRUE,sep=",")
    fct=lm(REG~A16+A17+A18+A19+A20+A21+A22,data=table)
    summary(fct)
    Ensuite, pour la génération du CSV, j'ai essayé à partir de la console R, mais j'ai le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    > write.table(summary(fct), "Y:\\Admin\\DataOut.csv", sep = ";")
    Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) : 
      cannot coerce class '"summary.lm"' into a data.frame
    Je pense que je ne suis pas trop loin...

    Merci

    Georges

  5. #5
    Membre émérite

    Homme Profil pro
    Cyber Security & AI
    Inscrit en
    Février 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Cyber Security & AI

    Informations forums :
    Inscription : Février 2009
    Messages : 506
    Billets dans le blog
    2
    Par défaut
    Tu ne peux pas exécuter ce type de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    write.table(summary(fct), "Y:\\Admin\\DataOut.csv", sep = ";")
    La raison en est que la fonction summary ne renvoie pas un tableau. Tu dois extraire les données que tu souhaites de ta régression et faire un fichier par tableau extrait.

    Pour connaitre tous les paramètres que tu peux extraire de la fonction lm tu peux taper :

    Cordialement.

  6. #6
    Membre du Club
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Par défaut
    Super, merci infiniment.

    Ca marche très bien quand effectivement, je génère / récupère le tableau de données.

    Cependant, en essayant d'extraire tous les paramètres de ma régression names(fct), je n'ai rien trouvé qui ressemble de près ou de loin a mon R2.

    Saurais-tu quelle est la commande à exécuter pour extraire cette data?

    Merci encore.

    Georges

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E] controle pour afficher une feuille excel
    Par SpaceFrog dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 08/02/2006, 11h17
  2. [VBA-Excel]Problème pour remplir une listview
    Par Le Djé dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/01/2006, 16h27
  3. [VBA-E] Problème pour enregistrer en csv (; et non ,) par macro
    Par bounette dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/12/2005, 09h34
  4. [Livre] Débuts sur VBA 6.3 pour EXCEL 2002
    Par thulvar dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/12/2005, 10h45
  5. [VBA-A] Condition pour boucle if
    Par ptitegrenouille dans le forum Access
    Réponses: 6
    Dernier message: 23/11/2005, 09h33

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