At 19:12 03/06/2003 +0100, Gudrun Bornette wrote:
>nous essayons de quantifier la variabilité relative des traits d'individus appartenant à 5 populations.
>L'intra population nous représente la dispersion de ces individus, mais a-t-on la possibilité de classer quantitativement les populations en termes de degré de variabilité des individus (tous axes factoriels confondus). Cela revient à calculer la distance entre la position des individus sur chaque axe factoriel et la position moyenne de la population résultant de l'inter-groupe.
>
>l'objectif est de démontrer que lorsque le niveau de contrainte subi par la population augmente, l'hétérogénéité des individus au sein de la population décroit.
>
>aurions nous raté l'utilitaire ? ou celui ci n'existe t il pas dans la version actuelle d'ADE
La question est claire.
Vous avez besoin d'un utilitaire qui calcule la variance d'une variable quelconque par classe.
Vous n'avez pas raté l'utilitaire, il n'y est pas.
Le plus simple est de passer dans R.
Un exemple pour vous montrer l'efficacité du langage : votre question demande une ligne.
Je cherche un tableau où il y a des variables quantitatives et une variable qualitative (pour les classes)
Les Iris de Fisher conviennent.
Le package mass contient ce jeu de données célèbre
> library(mass)
> data(iris)
Le tableau est en mémoire
> names(iris)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
les noms de variables sont en clair
> summary(iris$Species)
setosa versicolor virginica
50 50 50
Il y a 50 individus pour 3 espèces et 4 variables quantitatives
Si on veut la variance par variable et par espèce
ça se lit exécuter de j=1 à 4 la fonction qui calcule par groupe la fonction var
sur la colonne j de iris
> lapply(1:4,function(x) tapply(iris[,x],iris$Species,var))
[[1]]
setosa versicolor virginica
0.1242490 0.2664327 0.4043429
[[2]]
setosa versicolor virginica
0.14368980 0.09846939 0.10400408
[[3]]
setosa versicolor virginica
0.03015918 0.22081633 0.30458776
[[4]]
setosa versicolor virginica
0.01110612 0.03910612 0.07543265
ou bien
> for (j in 1:4) print(tapply(iris[,j],iris$Species,var))
setosa versicolor virginica
0.1242490 0.2664327 0.4043429
setosa versicolor virginica
0.14368980 0.09846939 0.10400408
setosa versicolor virginica
0.03015918 0.22081633 0.30458776
setosa versicolor virginica
0.01110612 0.03910612 0.07543265
et voilà
Au début, demander de l'aide aux étudiants du DEA
Cordialement
Daniel Chessel - chessel@biomserv.univ-lyon1.fr
This archive was generated by hypermail 2b30 : Tue Sep 07 2004 - 13:45:22 MEST