Analyse en mesures répétées [Résolu]

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

Elise Lahaye
Messages : 2
Enregistré le : 23 Fév 2017, 15:15

Analyse en mesures répétées [Résolu]

Messagepar Elise Lahaye » 23 Fév 2017, 16:05

Bonjour à tous et à toutes,

Je suis étudiante en master d'écologie et je débute sur R. J'essaie depuis quelques jours d'analyser le jeu de données suivant mais j'avoue que je tourne un peu en rond...

Code : Tout sélectionner

   ind taille   eclairement temps      temperature
1    1  petit          fort     0 15.7666666666667
2    1  petit          fort     1 24.5333333333333
...
62   9  grand        faible     5 49.2333333333333
63   9  grand        faible     6 53.5333333333333


J'aimerais faire une analyse en mesures répétées puisque j'ai 6 mesures par individu. J'ai d'abord essayé d'écrire le code avec le jeu de données tel quel mais j'ai ensuite lu sur internet qu'il me fallait des valeurs numériques pour la fonction interaction.plot. Donc j'ai changé mon jeu de données comme ci (remplaçant les mots par des valeurs représentatives de l'intensité) :

Code : Tout sélectionner

   ind taille eclairement temps      temperature
1    1      1           3     0 15.7666666666667
2    1      1           3     1 24.5333333333333
...
62   9      3           1     5 49.2333333333333
63   9      3           1     6 53.5333333333333


Le contenu de ce jeu est donc le suivant :

Code : Tout sélectionner

forme <- structure(list(ind = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 9L, 9L,
9L, 9L, 9L, 9L, 9L), taille = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L), eclairement = c(3L, 3L, 3L, 3L,
3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), temps = c(0L, 1L,
2L, 3L, 4L, 5L, 6L, 0L, 1L, 2L, 3L, 4L, 5L, 6L, 0L, 1L, 2L, 3L,
4L, 5L, 6L, 0L, 1L, 2L, 3L, 4L, 5L, 6L, 0L, 1L, 2L, 3L, 4L, 5L,
6L, 0L, 1L, 2L, 3L, 4L, 5L, 6L, 0L, 1L, 2L, 3L, 4L, 5L, 6L, 0L,
1L, 2L, 3L, 4L, 5L, 6L, 0L, 1L, 2L, 3L, 4L, 5L, 6L), temperature = structure(c(5L,
11L, 14L, 19L, 21L, 27L, 33L, 9L, 17L, 26L, 34L, 39L, 43L, 48L,
3L, 36L, 47L, 52L, 54L, 58L, 60L, 4L, 12L, 15L, 20L, 23L, 28L,
35L, 8L, 16L, 25L, 31L, 38L, 42L, 44L, 2L, 30L, 46L, 49L, 51L,
56L, 57L, 6L, 10L, 13L, 18L, 22L, 28L, 32L, 7L, 16L, 24L, 30L,
37L, 41L, 45L, 1L, 29L, 40L, 50L, 53L, 55L, 59L), .Label = c("15.2666666666667",
"15.3333333333333", "15.5666666666667", "15.7333333333333", "15.7666666666667",
"15.8666666666667", "15.9333333333333", "16.0333333333333", "16.4333333333333",
"23.8666666666667", "24.5333333333333", "25,00", "25.2", "25.7333333333333",
"26.1", "26.7", "28.2333333333333", "28.4333333333333", "28.7666666666667",
"29.3333333333333", "30.3333333333333", "30.7333333333333", "30.8666666666667",
"31.6333333333333", "31.7666666666667", "32.5333333333333", "33.3666666666667",
"33.6", "34.7", "34.8", "34.8333333333333", "34.9666666666667",
"35.1", "35.3666666666667", "35.7", "36.9333333333333", "37.7333333333333",
"37.8333333333333", "37.9333333333333", "38.4666666666667", "39.0333333333333",
"39.0666666666667", "39.3333333333333", "41.4", "41.5333333333333",
"41.6333333333333", "41.7", "41.9", "44.9", "45.2333333333333",
"46.1", "46.2333333333333", "46.6666666666667", "48.1666666666667",
"49.2333333333333", "51.9666666666667", "53.2666666666667", "53.4",
"53.5333333333333", "56.2666666666667"), class = "factor")), .Names = c("ind",
"taille", "eclairement", "temps", "temperature"), class = "data.frame", row.names = c(NA,
-63L))


Sur lequel j'ai essayé d'appliquer le script suivant :

Code : Tout sélectionner

forme<-within(forme, {
ind<-factor(ind)
taille<-factor(taille)
eclairement<-factor(eclairement)
temps<-factor(temps)
})

with(forme, interaction.plot(temps, taille, temperature,
  ylim = c(5, 20), lty= c(1, 12), lwd = 3,
  ylab = "temperature", xlab = "temps", trace.label = "taille"))

anova1<-aov(temperature~taille*temps+Error(ind),data=forme)
summary(anova1)


Lorsque j'essaie de faire le plot, le message d'erreur suivant s'affiche 21 fois (et aucune ligne ne se dessine sur le graphique) :

Code : Tout sélectionner

In mean.default(X[[i]], ...) : l'argument n'est ni numérique, ni logique : renvoi de NA


Et pour l'anova, j'obtiens ceci :

Code : Tout sélectionner

> anova1<-aov(temperature~taille*temps+Error(ind),data=forme)

Error in qr.qty(qr.e, resp) : la modification du mode de stockage d'un objet 'factor' n'est pas autorisée

De plus : Warning messages:
1: In model.response(mf, "numeric") :
  l'utilisation de type="numeric" avec une réponse de type facteur sera ignorée
2: In Ops.factor(y, z$residuals) : ‘-’ not meaningful for factors


La fonction summary me donne quand même des résultats mais étant donné tous les messages d'erreur qui s'affichent en amont je pense que ce qui est affiché n'est pas correct... Et j'ai beau cherché, je ne trouve pas le problème!

D'avance merci à toutes celles et ceux qui prendront le temps de m'aider.

Bien cordialement,
Élise.

Paul Valentine
Messages : 4
Enregistré le : 30 Jan 2017, 09:53

Re: Analyse en mesures répétées

Messagepar Paul Valentine » 23 Fév 2017, 16:17

Bonjour,

Ton erreur vient du fait que les variables utilisées pour générer ton graphique (et ton anova) sont en "factor".
Essaye de faire la même chose avec ça (en passant tes variables en "numeric") et ça devrait mieux se passer

Code : Tout sélectionner

forme<-within(forme, {
  ind<-factor(ind)
  taille<-factor(taille)
  eclairement<-factor(eclairement)
  temperature<-as.numeric(temperature)
  temps<-as.numeric(temps)
})


EDIT: En fait, tu n'es pas obligée de changer ta variable "taille". Les facteurs suffiront pour réaliser ton interaction.plot et ton anova

Code : Tout sélectionner

levels(forme$taille)<-c("petit","moyen","grand")

Elise Lahaye
Messages : 2
Enregistré le : 23 Fév 2017, 15:15

Re: Analyse en mesures répétées

Messagepar Elise Lahaye » 24 Fév 2017, 09:11

Bonjour,

Super, je viens de relancer et ça marche!! Merci beaucoup!!


Retourner vers « Questions en cours »

Qui est en ligne

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