Principes d'expérimentation :

planification des expériences et analyse de leurs résultats

 
Utilisation de R pour l'exemple du paragraphe 8.5

par Emmanuel Nowak
8.5.1 Présentation et données
8.5.2 Analyse des résultats

 

 

8.5 Exemple 1 : expérience en carré latin

8.5.1 Présentation et données

    1° Présentation générale

Se référer au paragraphe correspondant du livre. Il s'agit d'étudier la croissance en hauteur d'une variété de Ficus elastica selon 4 températures du sol (15, 20, 25 et 30°C), les autres conditions de culture étant en principe uniformes. Les unités expérimentales sont des ensembles de 9 plantes cultivées en pots.

    2° Dispostif expérimental

On dispose de 4 répétitions pour chaque niveau de température, disposées en carré latin dans deux serres. Les facteurs lignes et colonnes du dispositif doivent permettre d'éliminer les éventuelles différences entre les serres ainsi que les différences liées aux positions des unités expérimentales dans les serres.

    3° Données

Il faut d'abord importer les données fournies dans le fichier 'exp085.txt', qui contient les moyennes des accroissements en hauteur, en mm, pour chaque unité expérimentale constituée de 9 plantes, sur une période de 8 mois. On suppose que ce fichier a été chargé dans 'C:\Dagnelie'.

exp085 <- read.table("C:/Dagnelie/expdonn/txt/exp085.txt",sep="\t",header=T)
exp085[1:5,]

   Temp Lign Colon Haut
1    20    1     1  185
2    30    1     2  242
3    15    1     3  177
4    25    1     4  214
5    15    2     1  117

 

8.5.2 Analyse des résultats

    1° Examen préliminaire

La représentation graphique des hauteurs en fonction des températures s'obtient à l'aide de la fonction 'plot'.

attach(exp085)
plot(Temp,Haut, ylim=c(100,250), xlab="Températures (ÉC)", ylab="Hauteurs (mm)", las=1)

exp0851.jpg (23 Ko)

 

Les représentations graphiques des hauteurs en fonction des lignes puis des colonnes s'obtiennent à l'aide de la fonction 'stripchart'. La fonction 'par' permet de modifier certains paramètres graphiques, en particulier de diviser la fenêtre, ici en deux (l'agrandir ensuite).

par(mfrow=c(1,2),las=1)
stripchart(Haut~Lign, ylim=c(100,250), vert=T, pch=21, xlab="Lignes", ylab="Hauteurs (mm)")
stripchart(Haut~Colon, ylim=c(100,250), vert=T, pch=21, xlab="Colonnes", ylab="Hauteurs (mm)")

exp0852.jpg (40,3 Ko)

 

    2° Analyse de la variance et test d'additivité

Il faut ici réaliser une analyse de la variance à trois facteurs croisés et à effets fixes, en supposant que le modèle est additif. Les variables explicatives étant codées numériquement, il ne faut pas oublier de préciser de les considérer comme des facteurs.

model1 <- aov(Haut~factor(Temp)+factor(Lign)+factor(Colon))
summary(model1)

              Df  Sum Sq Mean Sq F value    Pr(>F)    
factor(Temp)   3 13615.7  4538.6 42.9941 0.0001889 ***
factor(Lign)   3   661.2   220.4  2.0878 0.2032926    
factor(Colon)  3  2832.7   944.2  8.9447 0.0123972 *  
Residuals      6   633.4   105.6                      
---
Signif. codes:  0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 

L'analyse de la variance indique une influence très significative du facteur températures et une influence significative du facteur colonnes.

Les facteurs lignes et colonnes ne pouvant être considérés comme étant à effets aléatoires, il faut vérifier la condition d'additivité du modèle à l'aide du test de Tukey. Il faut pour cela tout d'abord calculer la composante de non-additivité :

y <- (Haut-model1$res)^2
model2 <- aov(y~factor(Temp)+factor(Lign)+factor(Colon))
sum(y*model1$res)^2 / (15*var(model2$res)) # SCEadd pour le test de Tukey :

[1] 226.7412 

La SCEadd ne possédant qu'un seul degré de liberté, elle est égale au carré moyen correspondant et constitue le numérateur de la valeur du F de Fisher à calculer. Elle doit être soustraite de la somme des carrés résiduelle de l'analyse de la variance initiale, la différence possédant 6-1 = 5 degrés de liberté. Le dénominateur de F vaut donc, en arrondissant : (633-227)/5 = 81,2. La valeur de F est en conséquence égale à 227/81,2 = 2,80 , avec 1 et 5 degrés de liberté. Le degré de signification vaut alors :

pf(2.8, df1=1, df2=5, lower.tail=F)

[1] 0.1551216

Remarque : un examen de l'ensemble des 9×16 = 144 valeurs initiales, réalisé par l'auteur selon la procédure de l'exemple du paragraphe 5.4, a montré que les conditions de validité de l'analyse de la variance sont satisfaites.

 

    3° Efficacité relative

En considérant l'expérience comme étant complètement aléatoire, la somme des carrés résiduelle devient égale à 661+2833+633 = 4127, avec 3+3+6 = 12 degrés de liberté, d'où une efficacité relative de 326%.

En considérant l'expérience comme étant organisée en 4 blocs aléatoires complets correspondant aux 4 lignes du dispositifs, la somme des carrés résiduelle devient égale à 2833+633 = 3466, avec 3+6 = 9 degrés de liberté, d'où une efficacité relative de 365%.

 

    4° Interprétation

Afin de décomposer les différentes sommes des carrés des écarts factorielles, il est nécessaire de définir de nouvelles variables : la température élevée au carré et au cube, la serre, l'orientation Nord-Sud ainsi que l'orientation Ouest-Est dans la serre et enfin la position, centrale ou latérale. Il reste ensuite à réaliser l'analyse de la variance à l'aide du modèle linéaire correspondant.

# Température :
Temp.lin <- Temp
Temp.quad <- Temp^2
Temp.cub <- Temp^3

# Lignes :
Serre <- factor(ifelse(Lign %in% 1:2,"A","B"))
Orien.N.S <- factor(ifelse(Lign %in% c(1,3),"N","S"))

# Colonnes :
Orien.O.E <- factor(ifelse(Colon %in% 1:2,"O","E"))
Position <- factor(ifelse(Colon %in% 2:3,"Centr","Lat"))

# Tableau d'analyse de la variance :
model3 <- lm(Haut ~ Temp.lin + Temp.quad + Temp.cub + Serre*Orien.N.S + Orien.O.E*Position)
anova(model3)

Analysis of Variance Table

Response: Haut
                   Df  Sum Sq Mean Sq  F value    Pr(>F)    
Temp.lin            1 12475.0 12475.0 118.1766 3.591e-05 ***
Temp.quad           1  1105.6  1105.6  10.4731  0.017771 *  
Temp.cub            1    35.1    35.1   0.3326  0.585090    
Serre               1     5.1     5.1   0.0480  0.833916    
Orien.N.S           1   115.6   115.6   1.0947  0.335733    
Orien.O.E           1   637.6   637.6   6.0397  0.049281 *  
Position            1  1785.1  1785.1  16.9100  0.006271 ** 
Serre:Orien.N.S     1   540.6   540.6   5.1208  0.064290 .  
Orien.O.E:Position  1   410.1   410.1   3.8845  0.096227 .  
Residuals           6   633.4   105.6                       
---
Signif. codes:  0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1

Cette analyse complémentaire confirme l'importance des facteurs températures et positions (centrales ou latérales) dans les serres. L'ajustement d'une équation du second degré reliant la croissance en hauteur à la température s'obtient à l'aide d'un modèle linéaire :

model4 <- lm(Haut ~ Temp.lin + Temp.quad)
model4

Call:
lm(formula = Haut ~ Temp.lin + Temp.quad)

Coefficients:
(Intercept)     Temp.lin    Temp.quad  
   -68.3875      19.9575      -0.3325 

Enfin, on peut comparer les valeurs moyennes observées pour chaque niveau de température aux valeurs moyennes prédites par le modèle ci-dessus.

Moyennes <- rbind(tapply(Haut,Temp,mean),tapply(model4$fitted.values,Temp,mean))
row.names(Moyennes) <- c("observées","théoriques")
Moyennes

                 15       20       25       30
observées  155.5000 199.7500 220.7500 231.7500
théoriques 156.1625 197.7625 222.7375 231.0875
 
Haut de la page
Autres illustrations avec R

Dernière mise à jour : janvier 2005