Utilisiation package PLS sur R

a marqué ce sujet comme résolu.

Bonjour,

Dans le cadre de mon stage, je réalise une étude sur la densité de nymphes en relation avec la fréquentation de faune sur des transects. Je dispose d’un petit jeu de données comportant 11 colonnes (10 avec des fréquentations de diverses espèces, et une avec le nombre de nymphes) et 18 lignes, correspondant aux observations sur les 18 transects. J’aimerai expliquer l’abondance de nymphes par les variables de fréquentations. J’ai donc une variable dépendante, le nombre de nymphes, et plusieurs variables explicatives. Ce sont des données de comptage (loi de Poisson). J’aimerai réaliser une PLS mais je rencontre quelques difficultés et je ne sais pas vraiment comment m’y prendre. J’ai essayé de suivre « Introduction to the pls Package » avec le manual PLS de Bjorn-Helge Mevik.

J’ai utilisé la library « pls ». Voici mon modèle : Mod_manual=plsr(Nombre.nymphes ~ Chevreuil + Blaireau + Martre + Lievre + Renard + Sanglier + Chat + Mulot + Oiseau + Chien + Genette, data = data_trans, scale=TRUE, validation="LOO") 1- Tout d’abord, je ne sais pas s’il est nécessaire d’utiliser une méthode de validation ou non (none, CV ou LOO). Je pense que la validation LOO est plus adaptée au vu de mon petit jeu de données mais je ne suis pas sûre ?

2- Dans l’exemple du package, ils ont divisé le data set en train et test data sets. Je ne sais pas comment faire pour savoir comment découper mon jeu de données. Est-ce subjectif ? Je parviens tout de même à faire une PLS sans découper le jeu de données mais je pense que cela est nécessaire pour aller plus loin dans l’analyse et pouvoir le comparer avec des prédictions. Je crois que cela permet de prédire la réponse avec de nouvelles observations. Peut-être que mon jeu de données est trop petit pour le faire, mais voici leur exemple :

In this section, we will do a PLSR on the gasoline data to illustrate the use of pls. The spectra are shown in Figure 1. We first divide the data set into train and test data sets:

gasTrain <- gasoline[1:50,] gasTest <- gasoline[51:60,]

Le plot RMSEP (Figure 2 : Cross validated RMSEP curves) permet de choisir le nombre de composantes, et donne une donnée de RMSEP en regardant l’axe des ordonnées avec le nombre de composantes choisies en abscisse. Cette valeur est comparée avec la valeur de RMSEP du test set : Because we know the true response values for these samples, we can calculate the test set RMSEP:

RMSEP(gas1,newdata =gasTest) For two components, we get 0.244, which is quite close to the cross-validated estimate above (0.297).

Ne sachant pas comment découper mon data set, je ne peux pas suivre les exemples qui sont données dans le manual et donc je ne parviens pas à obtenir cette valeur.

3- J’aimerai également illustrer ma PLS dans mon rapport, pour le moment j’ai réussi à avoir : plot(RMSEP(mod_manual), legendpos = "topright") plot(mod_manual, plottype = "scores", comps = 1:3) plot(mod_manual, "loadings", comps = 1:2, legendpos = "topleft", xlab = "nm") et un corrplot Y aurait-il d’autres figures plus pertinentes ?

4- Pour finir, j’aimerai dans un deuxième temps extraire les coordonnées des variables et les insérer dans mon jeu de donnée pour ensuite pouvoir faire un GLM, est-ce que ce sont les scores que je dois extraire ?

En vous remerciant, Bonne soirée, Tilicia

Bonjour,

Je me permets de répondre mais que ce n’est absolument pas mon domaine d’expertise, donc à prendre avec des pincettes.

1) LOO, CV ou rien du tout. En effet, LOO me semble plus adapté quand on a un nombre si faible d’éléments (11 colonnes 18 observations avec des données sans doute éparses) => il y a de la chance qu’une de ces variables contribuent particulièrement au phénomène. Sur des grands ensembles, cela a tendance à produire de l'overfitting* et il vaudrait mieux effectuer une cross-validation.

2) Il est d’usage de diviser les jeux de données en 3 ensembles: les données d’entraînement, de validation et de test. Celles d’entraînement servent à entraîner ton modèle. Certains modèles ont une phase d’apprentissage où ils vont recalibrer les différents paramètres en effectuant d’abord un entraînement et puis en 'validant' les résultats sur les données de validation. Ici, c’est ce qui est appelé avec CV (générale 0.8N d’entraînement et 0.2N de validation) ou LOO (divisé en N-1 et 1). Enfin, on emploie un ensemble de tests qui n’a absolument pas servi lors de la phase d’entraînement (que ce soit en entraînement ou validation) afin d’avoir une mesure sur des données qui pourraient naturellement apparaître par la suite. Ici, le jeu de données étant particulièrement petit, ce n’est pas toujours conseillé mais cela permet de bien mesure la généralisation du modèle. Mais, dans l’idée, tu pourrais découper ton modèle en 9 lignes d’entraînement + validation et 2 de tests.

3) L’important est de se demander que souhaites-tu représenter ? Tu l’as dit: "J’aimerai expliquer l’abondance de nymphes par les variables de fréquentations", pourquoi justement ne pas faire un classement de ces variables et de leur impact (horizontal bar chart) ?

4) Aucune idée. Je ne suis pas certain de saisir la question.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte