Erreur lme et aov

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Charlotte Sirot
Messages : 136
Enregistré le : 14 Nov 2012, 11:05

Erreur lme et aov

Messagepar Charlotte Sirot » 08 Oct 2014, 16:08

Bonsoir à tous,

Après des heures et des heures de recherche et de fonctions essayées, je me tourne vers vous parce que sinon mon PC va passé par la fenêtre :)

Je possède un tableau de données que voici : https://www.wetransfer.com/downloads/46 ... 347/e5a64f

3 colonnes : première une concentration, 2ème colonne : le nom de l'individu et 3 son stade phsyiologique
Je cherche à savoir s'il y a une différence de concentration entre les stades
j'ai donc réalisée une première ANOVA avec mesures répétées :

Code : Tout sélectionner

data = read.csv("essai.csv", h = T, sep =";")
model = aov(data[,1] ~ data[,3] + Error(data[,2]/data[,3]))


réponse de mon cher et tendre :

Code : Tout sélectionner

Warning message:
In aov(data[, 1] ~ data[, 3] + Error(data[, 2]/data[, 3])) :
  le modèle Error() est singulier


Qu'a cela ne tienne, je me dis qu'il a mal du comprendre et qu'il comprendra avec un modèle linéaire mixte :

Code : Tout sélectionner

am2 = lme(data[,1] ~ data[,3], random = ~1|data[,2]/data[,3])


et :

Code : Tout sélectionner

Error in model.frame.default(formula = ~data, data = <environment>, na.action = function (object,  :
  type (list) incorrect pour la variable 'data'


J'ai eu beau googliser les erreurs, j'ai pas de réponse satisfaisante

Est-ce que vous voyez d'où ces erreur peuvent provenir ?
Merci d'avance !!

Cha
Encore une victoire de canard !

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 09 Oct 2014, 04:47

Il est préférable d'utiliser les syntaxes du type :

Code : Tout sélectionner

formula = reponse ~ var1 + var2, data = tsointsoin


plutôt que :

Code : Tout sélectionner

formula = tsointsoin[, 1] ~ tsointsoin[, 2] + tsointsoin[, 3]


Ici vous êtes doublement touchée par le pb, car vous avez commis une erreur: "data" est un nom de fonction, et R comprend que vous essayez d'accéder à ses composantes avec l'extracteur "[". Moralité: ne jamais appeler un jeu de données "data", ou jetez-vous par la fenêtre (plutôt que de défenestrer l'ordinateur) :-)
Renaud

Charlotte Sirot
Messages : 136
Enregistré le : 14 Nov 2012, 11:05

Messagepar Charlotte Sirot » 09 Oct 2014, 09:07

Merci Renaud, j'ai corrigé mais même erreur !!
Data : https://www.wetransfer.com/downloads/64 ... 308/39e140

Code : Tout sélectionner

> model = aov(Ba138 ~ Stat + Error(V23/Stat), data =dataCHa)
Warning message:
In aov(Ba138 ~ Stat + Error(V23/Stat), data = dataCHa) :
  le modèle Error() est singulier


Que faire ? (A part me jeter par la fenêtre, j'entends!!)

Merci encore

Cha
Encore une victoire de canard !

Stéphane Adamowicz
Messages : 206
Enregistré le : 07 Mar 2012, 10:13
Contact :

Messagepar Stéphane Adamowicz » 09 Oct 2014, 09:44

Pardon Charlotte,

mais le fichier que vous avez pointé dans votre premier message contient les variables Conc, Ind et Stat, pas les variables Bal38, ni V23.

De plus dans le fichier en question les données ne sont pas équilibrées, un véritable obstacle à l'usage de la fonction aov avec terme d'erreur.
Stéphane Adamowicz
INRA, UR 1115 Plantes et Systèmes de Culture Horticoles (PSH)
domaine St Paul, site agroparc
84914 Avignon, cedex 9

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 09 Oct 2014, 09:47

Et avec lme (robuste pour données déséquilibrées). Avez-vous vérifié que votre modèle est cohérent par rapport aux données (nb d'obs / groupe définis dans la partie aléatoire) ?
Renaud

Charlotte Sirot
Messages : 136
Enregistré le : 14 Nov 2012, 11:05

Messagepar Charlotte Sirot » 09 Oct 2014, 10:04

Ok pour les données déséquilibrées alors !

Pour ce qui est des données pour la lme, je n'avais pas connaissance de condition d'application nb d'obs/ nb groupe

En fait pour chaque groupe, j'ai 15 individus qui ont un nombre d'observations différentes selon le stade (en général 5 à 7 pour le stade larvaire, environ 60 pour le stade juvénile et généralement inférieur 30 pour le stade adulte) et ma question est de savoir s'il existe une modification significative des concentrations moyennes entre stade.

La je pense qu'on sort des objectifs de ce forum.

Merci pour vos précédentes réponses,

Charlotte
Encore une victoire de canard !

Stéphane Adamowicz
Messages : 206
Enregistré le : 07 Mar 2012, 10:13
Contact :

Messagepar Stéphane Adamowicz » 09 Oct 2014, 10:05

autre problème, la façon dont vous avez spécifié le modèle dans lme.

Voici ce que vous auriez dû écrire, et qui marchera :

Code : Tout sélectionner

d = read.csv(file.choose(), h = T, sep =";") # lire essai.csv
require(nlme)
model2 <- lme(fixed=Conc ~ Stat, data=d, random= ~1|Ind)
anova(model2)
Stéphane Adamowicz

INRA, UR 1115 Plantes et Systèmes de Culture Horticoles (PSH)

domaine St Paul, site agroparc

84914 Avignon, cedex 9

Charlotte Sirot
Messages : 136
Enregistré le : 14 Nov 2012, 11:05

Messagepar Charlotte Sirot » 09 Oct 2014, 11:41

HA super Ca marche !!

Du coup je comprends pas , j'ai fait le parallèle avec ma formule et ça marche du coup, je comprends pas ce qu'il s'est passé ?

En fait, est-ce que c'est que j'ai mis le groupe en effet aléatoire ?

Autre question, comme mes stat sont significatives, est-ce que je suis en mesure d'avoir des test post-hocs ?

Merci encore milles fois

CHa
Encore une victoire de canard !

Stéphane Adamowicz
Messages : 206
Enregistré le : 07 Mar 2012, 10:13
Contact :

Messagepar Stéphane Adamowicz » 09 Oct 2014, 11:57

Votre formule différait parce que vous aviez niché Stat dans Ind comme s'il s'agissait d'un split-plot. Il m'a semblé que cela n'avait pas lieu d'être, et que l'individu (Ind) est le seul facteur de regroupement (mais peut-être me trompès-je, vous ne nous avez pas donné beaucoup d'informations sur la manière dont les données ont été obtenues).

Maintenant, quand vous dites "du coup ça marche", ne vous enthousiasmez pas trop vite. Je ne serais pas étonné qu'avec ce genre de données les conditions de normalité et surtout d'homoscédasticité ne soient pas remplies.

testez le code suivant :

Code : Tout sélectionner

model2 <- lme(fixed=Conc ~ Stat, data=d, random= ~1|Ind)

dev.new(width=7, height=3.5); par(mfrow=c(1,2), oma=c(0,0,1,0), mar=c(3,3,1.5,0.2), ps=8, mgp=c(1.5,0.3,0))
plot(residuals(model2, type="pearson")~fitted(model2), main="Residuals vs Fitted", xlab="Fitted values", ylab="Standardized residuals"); abline(h=0, lty="dashed"); qqnorm(residuals(model2, type="pearson")); qqline(residuals(model2, type="pearson"), lty="dashed")
Stéphane Adamowicz

INRA, UR 1115 Plantes et Systèmes de Culture Horticoles (PSH)

domaine St Paul, site agroparc

84914 Avignon, cedex 9

Charlotte Sirot
Messages : 136
Enregistré le : 14 Nov 2012, 11:05

Messagepar Charlotte Sirot » 03 Nov 2014, 14:53

Bon...
On a abandonné les modèle mixtes (effectivement, les modèles ne donnaient pas des résidus normaux et de variances homogènes) pour une méthode de sélection de modèles.

Mille mercis encore à tous ceux qui m'ont bien aidé sur ce problème !!!!
Encore une victoire de canard !


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

cron