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 :

Question Rstudio : PLS regression


Sujet :

R

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Bioingénieur
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Bioingénieur

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Question Rstudio : PLS regression
    Bonjour à tous,

    Je suis débutant en Rstudio et j'aimerai faire une Partial Least Square regression. Cependant, j'ai un problème avec cette fonction. J'ai fait l'exemple proposé par R avec les données de "gasoline" et tout marchait. Mais, une fois que je veux faire les mêmes manipulations avec mes données, cela ne fonctionne plus.

    J'ai donc plusieurs questions concernant cette fonction.

    QUESTION 1

    Mes données que vous trouverez en pièce jointes sont composés de 4 variables avec 2200 observations. J'aimerai construire un modèle permettant de prédire la "nitrogenConcentration" en fonction de la "reflectance" des différentes "lettreFiltres" ET de savoir quels "filtres" sont les plus pertinents dans ce modèle.

    Mon code R est le suivant :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    # 1. importation donnée
    # -------------------------
    data1 <- read.table("tableReflec.txt", header = TRUE)
     
    # 2. unstack data
    # -----------------
    #unstack nitrogen content
    unstack_Nc <- unstack(data1,nitrogenContent ~ lettreFiltre)
    Nc <- unstack_Nc[,1]
    remove(unstack_Nc)
    #unstack reflectance
    unstack_reflec <- unstack(data1, reflectance ~ lettreFiltre)
    myName <- paste("reflectance",names(unstack_reflec),sep = ".")
    names(unstack_reflec)<-myName
    remove(myName)
     
    # 3. Données comprenant Nc et la reflectance pour les différents filtres
    # ------------------------------------------------------------------------------
    #ré-organisation des données
    dataReflec <- data.frame(Nc)
    dataReflec <-cbind(dataReflec, unstack_reflec)
     
    # 4. PLS
    # -------
    # tools -> install package -> PLS
    library(pls)
    model1 <-plsr(Nc ~ reflectance, ncomp = 10, data = dataReflec, validation = "LOO")
    Cependant, quand je lance la dernière ligne, j'ai une erreur qui est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Error in eval(expr, envir, enclos) : object 'reflectance' not found
    Je ne comprends pas pourquoi cette fonction fonctionne avec "gasoline" et pas avec mes data. Quelqu'un peut-il m'aider ? Qu'est ce que je dois faire pour que cela fonctionne ?


    QUESTION 2

    En faisant des recherches sur internet pour mon problème, je suis tombé sur une autre fonction qui est la plsreg1 qu'il est possible d'obtenir avec le package "plsdepot". Quelqu'un peut m'expliquer la différence entre cette fonction et la fonction plsr ? De plus, j'ai l'impression qu'il y a peu d'information sur la plsreg1. Je n'ai pas trouvé d'exemple utilisant cette fonction sur le net. Si quelqu'un a des infos, je suis preneur !


    QUESTION 3

    Je cherche à connaitre les filtres les plus pertinents à partir de la PLS. Quelle serait la fonction me permettant de savoir cela ?


    Voila, je sais que cela fait beaucoup de question et je vous remercie d'avance pour le temps que vous consacrerez pour y répondre.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut PLS regression
    Bonjour,

    Pour la question 1, regardez les variables de votre dataframe :

    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
    19
    20
    21
    22
    23
    24
    25
    > str(dataReflec)
    'data.frame':   100 obs. of  23 variables:
     $ Nc           : Factor w/ 20 levels "1,517652909",..: 6 6 6 6 16 16 16 16 16 5 ...
     $ reflectance.C: chr  "0,202671843" "0,165985539" "0,173286093" "0,169737653" ...
     $ reflectance.D: chr  "0,747592317" "0,72951367" "0,746762618" "0,798906662" ...
     $ reflectance.E: chr  "0,685135927" "0,681837985" "0,641565542" "0,701946705" ...
     $ reflectance.F: chr  "0,112163732" "0,106268533" "0,113702118" "0,141888272" ...
     $ reflectance.G: chr  "0,6960181" "0,74570945" "0,733342551" "0,787896104" ...
     $ reflectance.H: chr  "0,786357694" "0,783463668" "0,746364103" "0,827268237" ...
     $ reflectance.I: chr  "0,82179844" "0,818998806" "0,773832905" "0,870556139" ...
     $ reflectance.J: chr  "0,152798078" "0,147347286" "0,158615086" "0,155012075" ...
     $ reflectance.K: chr  "0,19408357" "0,184442954" "0,193900458" "0,19890541" ...
     $ reflectance.L: chr  "0,341029819" "0,329576688" "0,330063025" "0,341601525" ...
     $ reflectance.M: chr  "0,78255731" "0,774544918" "0,748626076" "0,809571834" ...
     $ reflectance.N: chr  "0,734007496" "0,722985112" "0,709600438" "0,781156204" ...
     $ reflectance.O: chr  "0,13775839" "0,137410699" "0,139899526" "0,139151141" ...
     $ reflectance.P: chr  "0,730689094" "0,74376731" "0,727342791" "0,79828918" ...
     $ reflectance.Q: chr  "0,217262358" "0,20012315" "0,212368801" "0,220672568" ...
     $ reflectance.R: chr  "0,135845476" "0,131859859" "0,139920352" "0,135856372" ...
     $ reflectance.S: chr  "0,101905775" "0,102918888" "0,102723908" "0,098420588" ...
     $ reflectance.T: chr  "0,173348915" "0,168110266" "0,176966688" "0,175772202" ...
     $ reflectance.U: chr  "0,104756954" "0,105194447" "0,106940128" "0,105765752" ...
     $ reflectance.V: chr  "0,108046515" "0,108311626" "0,112239316" "0,111808309" ...
     $ reflectance.W: chr  "0,706650459" "0,709110088" "0,686123813" "0,749089015" ...
     $ reflectance.X: chr  "0,626906058" "0,621217274" "0,623974779" "0,67256695" ...
    Remarque : RStudio est une surcouche de R. Votre question n'est pas spécifique à RStudio.

    Cordialement,

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Bioingénieur
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Bioingénieur

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Merci d'avoir répondu.
    Je ne suis pas sûr de pas bien comprendre votre remarque. Grâce à votre commentaire, je comprends que les variables de mon dataframe ne sont pas les mêmes que celles obtenues avec l'exemple de "gasoline". Et du coup, je veux bien comprendre pourquoi la fonction ne fonctionnait pas. Mais comment je fais pour que mon dataFrame fonctionne avec le fonction plsr ? Avez-vous une idée de la manière dont je dois m'y prendre pour que le fonction marche avec mes données ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    str(gasoline)
    'data.frame':	50 obs. of  2 variables:
     $ octane: num  85.3 85.2 88.5 83.4 87.9 ...
     $ NIR   : AsIs [1:50, 1:401] -0.050193 -0.044227 -0.046867 -0.046705 -0.050859 ...
      ..- attr(*, "dimnames")=List of 2
      .. ..$ : chr  "1" "2" "3" "4" ...
      .. ..$ : chr  "900 nm" "902 nm" "904 nm" "906 nm" ...
    Merci d'avance,

    Bien à vous,

  4. #4
    Membre éprouvé

    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
    Points : 1 189
    Points
    1 189
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Code R : Sélectionner tout - Visualiser dans une fenêtre à part
    model1 <-plsr(Nc ~ ., ncomp = 10, data = dataReflec, validation = "LOO")

    Au plaisir de vous lire

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Bioingénieur
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Bioingénieur

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Super, ça a l'air de fonctionner. Mais comment savez-vous tout cela ... ? Juste changer le "reflectance" par un point, il faut le savoir...

    Un tout grand merci.

    Bonne journée.

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

Discussions similaires

  1. aide library(pls) question sur data(yarn) plz
    Par redando dans le forum R
    Réponses: 3
    Dernier message: 20/09/2016, 11h28
  2. Réponses: 3
    Dernier message: 31/08/2016, 10h58
  3. Réponses: 6
    Dernier message: 17/06/2013, 15h23
  4. Question de faisabilité
    Par lisarasu dans le forum CORBA
    Réponses: 3
    Dernier message: 14/05/2002, 11h26
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

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