Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Erreur fonction lsmeans
2 participants
Page 1 sur 1
Erreur fonction lsmeans
Bonjour à toutes et à tous,
Pour vous expliquer mon cas, j'étudie la communication chez les primates. J'ai donc réalisé trois mois de terrain à enregistrer les séquences vocales des singes survenant lors de différents contextes (5 en tout, Prédateur, Spontanée, Réponse, Rencontre et Individu Perdu). J'ai ensuite analysé ces séquences à partir du répertoire vocal qui a déjà été décrit chez cette espèce (Callicebus nigrifrons). Ceci m'a permis d'obtenir de longs enchainements de phrases assemblés en séquence vocale. Maintenant je souhaite comparer la structure de ces séquences en fonction du contexte mais également en fonction du nombre d'individus qui participent, du groupe (6 groupes de singes différents) et du ratio distance(centre-vocalisation)/distance(centre-périphérie) où "centre" définit le centre du territoire, "périphérie" définit la périphérie du territoire et "vocalisation" se réfère à la position (point gps) du groupe/individu lors de l'émission du cri/séquence.
Pour pouvoir analyser tous ces paramètres, j'ai donc suivi la modèle de régression généralisé.
La première analyse prend pour variable à expliquer la "durée totale" de la séquence et les variables explicatives sont "Context", "Type" (Correspondant à solo (1 individu), duet (2 individus) ou chorus (+ de 2 individus)), "Groupe" (A, D, R, S, P, M). J'obtiens donc le modèle suivant dans un premier temps :
modele1<-TotalDuration~Context*Groupe+Type
Je souhaite savoir si les variables "Context" et "Groupe" ont un effet séparément sur la durée totale mais également lorsque ces deux variables sont réunies d'où le " * "
Ensuite je voudrais rajouter les variables r (ratio distance) et si il y a présence ou non d'un overlap avec un groupe voisin. J'obtiendrais donc le modèle suivant :
modele2<-TotalDuration~Context*Groupe+Type+r*Overlap
Même principe ici en "r" et "Overlap" que précédemment entre "Context" et "Groupe"
Seulement, je n'arrive pas obtenir de résultats et lorsque je veux faire ma comparaison multiple (parwise) pour chaque interaction séparément, le logiciel "R" me renvoi un message d'erreur.
Voici la ligne de commande :
> lsmeans(modele,pairwise~All$Context)
et voici la message d'erreur :
Erreur dans UseMethod("contrast") :
pas de méthode pour 'contrast' applicable pour un objet de classe "lsmobj"
De plus : Messages d'avis :
1: In mean.default(x) : argument is not numeric or logical: returning NA
2: In mean.default(x) : argument is not numeric or logical: returning NA
3: In mean.default(x) : argument is not numeric or logical: returning NA
Je n'arrive pas à comprendre pourquoi. J'ai suivi les explications de Mr. Hervé qui a rédigé une aide très fournie mais aucune indications en cas d'erreurs.
Ma question est la suivante, est ce que vous pouvez m'expliquer pourquoi ce message d'erreur? Qu'est ce qu'un objet de classe "lsmobj"?
Cordialement,
Clément Ludcher
Pour vous expliquer mon cas, j'étudie la communication chez les primates. J'ai donc réalisé trois mois de terrain à enregistrer les séquences vocales des singes survenant lors de différents contextes (5 en tout, Prédateur, Spontanée, Réponse, Rencontre et Individu Perdu). J'ai ensuite analysé ces séquences à partir du répertoire vocal qui a déjà été décrit chez cette espèce (Callicebus nigrifrons). Ceci m'a permis d'obtenir de longs enchainements de phrases assemblés en séquence vocale. Maintenant je souhaite comparer la structure de ces séquences en fonction du contexte mais également en fonction du nombre d'individus qui participent, du groupe (6 groupes de singes différents) et du ratio distance(centre-vocalisation)/distance(centre-périphérie) où "centre" définit le centre du territoire, "périphérie" définit la périphérie du territoire et "vocalisation" se réfère à la position (point gps) du groupe/individu lors de l'émission du cri/séquence.
Pour pouvoir analyser tous ces paramètres, j'ai donc suivi la modèle de régression généralisé.
La première analyse prend pour variable à expliquer la "durée totale" de la séquence et les variables explicatives sont "Context", "Type" (Correspondant à solo (1 individu), duet (2 individus) ou chorus (+ de 2 individus)), "Groupe" (A, D, R, S, P, M). J'obtiens donc le modèle suivant dans un premier temps :
modele1<-TotalDuration~Context*Groupe+Type
Je souhaite savoir si les variables "Context" et "Groupe" ont un effet séparément sur la durée totale mais également lorsque ces deux variables sont réunies d'où le " * "
Ensuite je voudrais rajouter les variables r (ratio distance) et si il y a présence ou non d'un overlap avec un groupe voisin. J'obtiendrais donc le modèle suivant :
modele2<-TotalDuration~Context*Groupe+Type+r*Overlap
Même principe ici en "r" et "Overlap" que précédemment entre "Context" et "Groupe"
Seulement, je n'arrive pas obtenir de résultats et lorsque je veux faire ma comparaison multiple (parwise) pour chaque interaction séparément, le logiciel "R" me renvoi un message d'erreur.
Voici la ligne de commande :
> lsmeans(modele,pairwise~All$Context)
et voici la message d'erreur :
Erreur dans UseMethod("contrast") :
pas de méthode pour 'contrast' applicable pour un objet de classe "lsmobj"
De plus : Messages d'avis :
1: In mean.default(x) : argument is not numeric or logical: returning NA
2: In mean.default(x) : argument is not numeric or logical: returning NA
3: In mean.default(x) : argument is not numeric or logical: returning NA
Je n'arrive pas à comprendre pourquoi. J'ai suivi les explications de Mr. Hervé qui a rédigé une aide très fournie mais aucune indications en cas d'erreurs.
Ma question est la suivante, est ce que vous pouvez m'expliquer pourquoi ce message d'erreur? Qu'est ce qu'un objet de classe "lsmobj"?
Cordialement,
Clément Ludcher
Dernière édition par cludcher le Jeu 26 Mai 2016 - 16:16, édité 1 fois
cludcher- Nombre de messages : 6
Date d'inscription : 21/05/2014
Re: Erreur fonction lsmeans
- Code:
modele <- glm( TotalDuration~Context*Groupe+Type, data=All)
lsmeans( modele, pairwise ~ Context)
La formule de spécification dans lsmeans est évaluée dans le contexte du modèle or dans ce contexte, l'objet All$Context est inconnu mais l'objet Context est, lui, connu. C'est de là que vient certainement l'erreur.
Florent Aubry- Nombre de messages : 251
Date d'inscription : 02/11/2015
Re: Erreur fonction lsmeans
Bonjour Florent Aubry,
Alors après avoir changé de version de "R" car un peu désespéré j'étais. J'ai réussi à faire tourner mon modèle avec la fonction lsmeans. Puis j'ai enregistré mon travail et relancé la machine un peu plus tard dans la journée. Et voilà que ce message apparaît sous la version standart de "R" :
Avis : l'espace de nom ‘lsmeans’ n'est pas disponible et a été remplacé
par .GlobalEnv lors du traitement de l'objet ‘LSM1’
[Workspace loaded from ~/.RData]
Loading required package: lsmeans
Loading required package: estimability
Attaching package: ‘lsmeans’
The following object is masked from ‘package:base’:
rbind
Du coup, lorsque je veux faire tourner ma fonction lsmeans, ça me remet le même message d'erreur qu'avant.
Est ce que vous savez comment je peux faire pour détacher le package qui masque la fonction de lsmeans? Ou s'il y existe une solution je suis preneur aussi
Cordialement,
Clément
Alors après avoir changé de version de "R" car un peu désespéré j'étais. J'ai réussi à faire tourner mon modèle avec la fonction lsmeans. Puis j'ai enregistré mon travail et relancé la machine un peu plus tard dans la journée. Et voilà que ce message apparaît sous la version standart de "R" :
Avis : l'espace de nom ‘lsmeans’ n'est pas disponible et a été remplacé
par .GlobalEnv lors du traitement de l'objet ‘LSM1’
[Workspace loaded from ~/.RData]
Loading required package: lsmeans
Loading required package: estimability
Attaching package: ‘lsmeans’
The following object is masked from ‘package:base’:
rbind
Du coup, lorsque je veux faire tourner ma fonction lsmeans, ça me remet le même message d'erreur qu'avant.
Est ce que vous savez comment je peux faire pour détacher le package qui masque la fonction de lsmeans? Ou s'il y existe une solution je suis preneur aussi
Cordialement,
Clément
cludcher- Nombre de messages : 6
Date d'inscription : 21/05/2014
Re: Erreur fonction lsmeans
L'erreur vient probablement du lancement de R qui charge le fichier d'environnement de travail .RData sauvé par défaut lors de la sortie de R. Je vérifierais s'il n'existe pas dans l'environnement de travail un objet créé par accident qui s’appellerait rbind (fonction ls). Si c'est le cas, je le supprimerais par rm( rbind). Je ne vois pas de package qui pourrait poser de problème mais je ne les connais pas tous. Quels sont les résultats de la fonction search, cela pourrait donner une piste ?
Quelle est aussi la version de R ?
Quelle est aussi la version de R ?
Florent Aubry- Nombre de messages : 251
Date d'inscription : 02/11/2015
Re: Erreur fonction lsmeans
Oui c'est ça l'erreur vient du lancement de R qui charge le fichier d'environnement de travail. Seulement comment est ce que je peux résoudre ce problème?
J'utilise la version R version 3.1.1 (2014-07-10) -- "Sock it to Me"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin13.1.0 (64-bit)
et voici les résultats de la commande search()
[1] ".GlobalEnv" "package:lsmeans" "package:estimability"
[4] "package:car" "tools:rstudio" "package:stats"
[7] "package:graphics" "package:grDevices" "package:utils"
[10] "package:datasets" "package:methods" "Autoloads"
[13] "package:base"
j'ai tenté de supprimé tout les objects que j'avais créé grâce à la commande :
ls(list=rm())
J'ai sauvegardé mon environnement de travail, fermé R puis relancé le logiciel.
En se lançant, le logiciel ne charge plus le package 'lsmeans", je le fais donc manuellement et c'est alors qui me renvoie le même message d'erreur.
Je vais tenter d'installer la dernière version de R (3.3.0)
En attendant si vous avez une petite idée de comment faire?
Cordialement,
Clément
J'utilise la version R version 3.1.1 (2014-07-10) -- "Sock it to Me"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin13.1.0 (64-bit)
et voici les résultats de la commande search()
[1] ".GlobalEnv" "package:lsmeans" "package:estimability"
[4] "package:car" "tools:rstudio" "package:stats"
[7] "package:graphics" "package:grDevices" "package:utils"
[10] "package:datasets" "package:methods" "Autoloads"
[13] "package:base"
j'ai tenté de supprimé tout les objects que j'avais créé grâce à la commande :
ls(list=rm())
J'ai sauvegardé mon environnement de travail, fermé R puis relancé le logiciel.
En se lançant, le logiciel ne charge plus le package 'lsmeans", je le fais donc manuellement et c'est alors qui me renvoie le même message d'erreur.
Je vais tenter d'installer la dernière version de R (3.3.0)
En attendant si vous avez une petite idée de comment faire?
Cordialement,
Clément
cludcher- Nombre de messages : 6
Date d'inscription : 21/05/2014
Re: Erreur fonction lsmeans
Une suggestion
1) renommer le fichier .RData qui doit se trouver dans ton répertoire de travail en par exemple, mon.RData ; faire la même chose s'il existe un fichier .Rhistory
2) relancer R
3) Utiliser les fonction find( "rbind") qui donne la localisation de la fonction "rbind" (qui devrait être package:base et il ne devrait pas en avoir d'autre) et apropos( "rbind") qui donne tous les noms associés
4) charger par load le fichier .RData et appliquer de nouveau find et apropos, cela permettra de localiser où se trouve le rbind qui masque celui de base
5) supprimer le rbind qui n'est pas dans package:base, soit par rm en donnant la position du package en question dans la liste retournée par search à l'argument pos, soit en détachant carrément le package en question (detach( package:nomPackage)) ; s'il est nécessaire à un autre package ; attention ne pas détacher le package s'il se trouve dans la liste donné par search au lancement de R ;
6) par précaution refaire une sauvegarde de l'environnement de travail dans un fichier .RData en lui donnant un nom
7) charger le package lsmeans
1) renommer le fichier .RData qui doit se trouver dans ton répertoire de travail en par exemple, mon.RData ; faire la même chose s'il existe un fichier .Rhistory
2) relancer R
3) Utiliser les fonction find( "rbind") qui donne la localisation de la fonction "rbind" (qui devrait être package:base et il ne devrait pas en avoir d'autre) et apropos( "rbind") qui donne tous les noms associés
4) charger par load le fichier .RData et appliquer de nouveau find et apropos, cela permettra de localiser où se trouve le rbind qui masque celui de base
5) supprimer le rbind qui n'est pas dans package:base, soit par rm en donnant la position du package en question dans la liste retournée par search à l'argument pos, soit en détachant carrément le package en question (detach( package:nomPackage)) ; s'il est nécessaire à un autre package ; attention ne pas détacher le package s'il se trouve dans la liste donné par search au lancement de R ;
6) par précaution refaire une sauvegarde de l'environnement de travail dans un fichier .RData en lui donnant un nom
7) charger le package lsmeans
Florent Aubry- Nombre de messages : 251
Date d'inscription : 02/11/2015
Re: Erreur fonction lsmeans
Merci beaucoup, tout fonctionne désormais Espérons pour que ça dure !
Cordialement
Cordialement
cludcher- Nombre de messages : 6
Date d'inscription : 21/05/2014
Re: Erreur fonction lsmeans
Bonjour,
Pouvez-vous pouvez m'aider à interpréter ces résultats s'il vous plait?
> lsmeans(modele,pairwise~All_One$Context)
$lsmeans
All_One$Context lsmean SE df asymp.LCL asymp.UCL
Encounter 1.938692 0.04584083 NA 1.848846 2.028538
Lost 1.851453 0.04201578 NA 1.769103 1.933802
Predator 1.721061 0.04597199 NA 1.630958 1.811165
Resp 1.789634 0.04225247 NA 1.706821 1.872447
Spont 1.941006 0.04545749 NA 1.851911 2.030101
Results are averaged over the levels of: All_One$Groupe, All_One$Type
Confidence level used: 0.95
$contrasts
contrast estimate SE df z.ratio p.value
Encounter - Lost 0.087239332 0.03392888 NA 2.57124145 0.0757
Encounter - Predator 0.217630750 0.05398367 NA 4.03141824 0.0005
Encounter - Resp 0.149057933 0.04574221 NA 3.25865189 0.0099
Encounter - Spont -0.002313896 0.03321143 NA -0.06967165 1.0000
Lost - Predator 0.130391418 0.03002151 NA 4.34326693 0.0001
Lost - Resp 0.061818602 0.03669954 NA 1.68445183 0.4436
Lost - Spont -0.089553227 0.04592285 NA -1.95008009 0.2909
Predator - Resp -0.068572817 0.02813861 NA -2.43696556 0.1056
Predator - Spont -0.219944646 0.05139458 NA -4.27952968 0.0002
Resp - Spont -0.151371829 0.03298403 NA -4.58924540 <.0001
Results are averaged over the levels of: All_One$Groupe, All_One$Type
P value adjustment: tukey method for comparing a family of 5 estimates
Si la p-value est significative (pV<0.05), cela signifie qu'il y a une différence significative dans la variable à expliquer entre les deux contextes de la variable explicative comparée deux-à-deux?
Dans cet exemple, il y a une différence dans la durée totale de la séquence entre les contextes "Predator" et "Encounter" (pv =0.0005)?
Egalement comment je peux savoir si en moyenne, les séquences de type "Predator" sont plus longues ou plus courtes que les séquences de type "Encounter"?
Merci à vous tous !
Clément
Pouvez-vous pouvez m'aider à interpréter ces résultats s'il vous plait?
> lsmeans(modele,pairwise~All_One$Context)
$lsmeans
All_One$Context lsmean SE df asymp.LCL asymp.UCL
Encounter 1.938692 0.04584083 NA 1.848846 2.028538
Lost 1.851453 0.04201578 NA 1.769103 1.933802
Predator 1.721061 0.04597199 NA 1.630958 1.811165
Resp 1.789634 0.04225247 NA 1.706821 1.872447
Spont 1.941006 0.04545749 NA 1.851911 2.030101
Results are averaged over the levels of: All_One$Groupe, All_One$Type
Confidence level used: 0.95
$contrasts
contrast estimate SE df z.ratio p.value
Encounter - Lost 0.087239332 0.03392888 NA 2.57124145 0.0757
Encounter - Predator 0.217630750 0.05398367 NA 4.03141824 0.0005
Encounter - Resp 0.149057933 0.04574221 NA 3.25865189 0.0099
Encounter - Spont -0.002313896 0.03321143 NA -0.06967165 1.0000
Lost - Predator 0.130391418 0.03002151 NA 4.34326693 0.0001
Lost - Resp 0.061818602 0.03669954 NA 1.68445183 0.4436
Lost - Spont -0.089553227 0.04592285 NA -1.95008009 0.2909
Predator - Resp -0.068572817 0.02813861 NA -2.43696556 0.1056
Predator - Spont -0.219944646 0.05139458 NA -4.27952968 0.0002
Resp - Spont -0.151371829 0.03298403 NA -4.58924540 <.0001
Results are averaged over the levels of: All_One$Groupe, All_One$Type
P value adjustment: tukey method for comparing a family of 5 estimates
Si la p-value est significative (pV<0.05), cela signifie qu'il y a une différence significative dans la variable à expliquer entre les deux contextes de la variable explicative comparée deux-à-deux?
Dans cet exemple, il y a une différence dans la durée totale de la séquence entre les contextes "Predator" et "Encounter" (pv =0.0005)?
Egalement comment je peux savoir si en moyenne, les séquences de type "Predator" sont plus longues ou plus courtes que les séquences de type "Encounter"?
Merci à vous tous !
Clément
cludcher- Nombre de messages : 6
Date d'inscription : 21/05/2014
Re: Erreur fonction lsmeans
$lsmeans donne les valeurs des niveaux en moyenne quadratique. En faisant summary( resultat.lsmeans, infer=TRUE), cela donnera en plus la significativité par rapport à zéro.
$constrasts donne les résultats du test défini par la formule dans lsmeans. Puisque ce test est pairwise ~ x, il donne la significativité des différences des moyennes en moyenne quadratique des différents niveaux du facteur x, corrigé par défaut des comparaisons multiples par la correction de Tukey. Donc la p.value est celle associée à la différence et corrigée des comparaisons multiples.
estimate est la différence n1 - n2 ou n1 est un niveau du facteur x et n2, un autre niveau. Si estimate est positive, alors la moyenne de n1 est supérieure à celle de n2. Puisque Encounter - Predator > 0, alors les séquences de type Encounter sont significativement plus longue que celles de type Predator au niveau 0.05, ce qu'on peut vérifier dans la partie $lsmeans
$constrasts donne les résultats du test défini par la formule dans lsmeans. Puisque ce test est pairwise ~ x, il donne la significativité des différences des moyennes en moyenne quadratique des différents niveaux du facteur x, corrigé par défaut des comparaisons multiples par la correction de Tukey. Donc la p.value est celle associée à la différence et corrigée des comparaisons multiples.
estimate est la différence n1 - n2 ou n1 est un niveau du facteur x et n2, un autre niveau. Si estimate est positive, alors la moyenne de n1 est supérieure à celle de n2. Puisque Encounter - Predator > 0, alors les séquences de type Encounter sont significativement plus longue que celles de type Predator au niveau 0.05, ce qu'on peut vérifier dans la partie $lsmeans
Florent Aubry- Nombre de messages : 251
Date d'inscription : 02/11/2015
Re: Erreur fonction lsmeans
Okay merci beaucoup pour toutes ces précisions.
Je trouve mes résultats très bizarre alors parce que lorsqu'on regarde les données de plus près, mes séquences de type "Predator" durent en moyenne 3299.965 secondes tandis que mes séquences de type "Encounter" durent en moyenne 17.9905 secondes.
Soit je me suis trompé dans la détermination de mon modèle. Soit l'interprétation n'est pas la bonne. Est ce que par hazard vous pourriez m'éclairer sur cette étrangeté?
Si j'inverse ce que vous m'avez dit alors les résultats concordent pour toutes mes données. Ma question est alors, êtes vous
sûr de ce que vous m'avez dit? J'ai recherché dans mon moteur de recherche préféré mais malheureusement je ne trouve rien correspondant à l'interprétation des résultats de lsmeans.
Est ce que ça ne serait pas plutôt la différence n2 - n1? Ce résultat me paraitrait alors bien plus dans la logique de ce que j'attends.
Cordialement
Clément
Je trouve mes résultats très bizarre alors parce que lorsqu'on regarde les données de plus près, mes séquences de type "Predator" durent en moyenne 3299.965 secondes tandis que mes séquences de type "Encounter" durent en moyenne 17.9905 secondes.
Soit je me suis trompé dans la détermination de mon modèle. Soit l'interprétation n'est pas la bonne. Est ce que par hazard vous pourriez m'éclairer sur cette étrangeté?
Si j'inverse ce que vous m'avez dit alors les résultats concordent pour toutes mes données. Ma question est alors, êtes vous
sûr de ce que vous m'avez dit? J'ai recherché dans mon moteur de recherche préféré mais malheureusement je ne trouve rien correspondant à l'interprétation des résultats de lsmeans.
Florent Aubry a écrit:estimate est la différence n1 - n2 ou n1 est un niveau du facteur x et n2, un autre niveau. Si estimate est positive, alors la moyenne de n1 est supérieure à celle de n2.
Est ce que ça ne serait pas plutôt la différence n2 - n1? Ce résultat me paraitrait alors bien plus dans la logique de ce que j'attends.
Cordialement
Clément
cludcher- Nombre de messages : 6
Date d'inscription : 21/05/2014
Re: Erreur fonction lsmeans
cludcher a écrit:
> lsmeans(modele,pairwise~All_One$Context)
$lsmeans
All_One$Context lsmean SE df asymp.LCL asymp.UCL
Encounter 1.938692 0.04584083 NA 1.848846 2.028538
Lost 1.851453 0.04201578 NA 1.769103 1.933802
Predator 1.721061 0.04597199 NA 1.630958 1.811165
Resp 1.789634 0.04225247 NA 1.706821 1.872447
Spont 1.941006 0.04545749 NA 1.851911 2.030101
Results are averaged over the levels of: All_One$Groupe, All_One$Type
Confidence level used: 0.95
D'après les résultats de lsmeans ci-dessus et qui proviennent d'une de tes réponses, la moyenne des moindres carrés de Encounter est de 1.94 et celle de Predator de 1.72. On a donc Encounter > Predator avec une différence significative de 0.22 (deuxième ligne de la partie $contrasts. N'ayant pas les données initiales mais simplement le résultat de lsmeans, je ne peux rien dire de plus. Je remarque simplement que ces valeurs sont très loin de ce que tu attendais, d'un facteur 10 pour Predator mais de plus de 1000 pour Encounter. Une explication possible de ces différences pourrait venir d'un problème de facteur d'échelle.
Quant à la discussion entre les interprétations respectives de n1 et de n2, elle est sans objet n1 et n2 étant des qualificatifs génériques pour les niveaux d'un facteur (ici non déterminé) qu'il faut traduire pour le facteur considéré et vu le résultat de lsmeans, il est clair que n1 corresponond à Encounter et n2 à Predator.
Florent Aubry- Nombre de messages : 251
Date d'inscription : 02/11/2015
Sujets similaires
» Problème avec lsmeans [RÉSOLU]
» negative lsmeans glimmix proc
» Erreur AFC
» Erreur R
» l`erreur type
» negative lsmeans glimmix proc
» Erreur AFC
» Erreur R
» l`erreur type
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum