Vous êtes sur la page 1sur 4

Moyennes croisées avec la

Aide à l'utilisation de R

fonction means()

L'essentiel de cette page

La fonction means() dont voici le programme ci-dessous systématise le calcule de la


moyenne en fonction d'une ou plusieurs variables de catégories. Il fournit au passage
écart-type et intervalle de confiance, ce qui la rend plus performante en routine que la
fonction by().

La fonction means() permet de calculer automatiquement tous les moyennes pour les
paramètres existants ou en fonction de deux listes de paramètres

means = function(data=c(),par=c(),par2=c()) { # Version 2019 -


v0.0.8
if ((length(data)==0)| (length(par)==0)){
if ( (length(data)==0)) {cat("Erreur ! Le vecteur
",substitute(data),"est vide.\n")}
if ( (length(par)==0)) {cat("Erreur ! Le vecteur
",substitute(par),"est vide.\n")}
} else { if (length(par2)>0) {
if ( (length(par) != length(data)) | (length(par2) !=
length(data)) | (length(par) != length(par2)) ) {
cat("Erreur ! Les trois vecteurs n'ont pas la même taille.\n")
}else {
if
(length(data[is.na(data)]>0)|length(par[is.na(par)]>0)|length(data[i
s.na(par2)]>0))
{cat("Attention ! Présence de valeurs vides
NA\n")}
tab_temp <- na.omit(data.frame(data,par,par2))
data <- tab_temp[,1];par <- tab_temp[,2];par2 <- tab_temp[,3]
y = unique(par) ; y2 = unique(par2)
matrice = matrix(rep(NA,length(y)*length(y2)),
nc=length(y2), nr=length(y), byrow=F)
nc=length(y2), nr=length(y), byrow=F)
rownames(matrice) = y ; colnames(matrice) = y2
matrice_moyennes = matrice ; matrice_sd = matrice ;
matrice_ic = matrice
resultat = c()
for (i in c(1:length(y2))){
for (j in c(1:length(y))) {
temp = data[par2==y2[i]&par==y[j]]
matrice_moyennes[j,i] = mean(temp,na.rm = TRUE)
if(length(temp)==0){sd_temp=NA}
else {sd_temp = sd(temp,na.rm = TRUE)}
matrice_sd[j,i] = sd_temp
if(length(temp)==0){ic_temp=NA}
else {ic_temp = sd(temp,na.rm =
TRUE)*1.96/sqrt(length(temp))}
matrice_ic[j,i] = ic_temp}}
resultat$moyennes = matrice_moyennes
resultat$sd = matrice_sd
resultat$ic = matrice_ic ;
return(resultat)}
} else {
if (length(par) != length(data)){
cat("Erreur ! Les deux vecteurs n'ont pas la même taille.\n")
} else {
if (length(data[is.na(data)]>0)|length(par[is.na(par)]>0))
{cat("Attention ! Présence de valeurs vides
NA\n")}
par = par[!is.na(data)];data = data[!is.na(data)];data
= data[!is.na(par)];par = par[!is.na(par)]
temp = split(data,par,drop=TRUE)
x = c() ; y = sort(unique(par)) ; z = c() ; w = c() ;
resultat = list()
for (i in c(1:(length(y)))) {
x = c(x,mean(temp[[i]],na.rm = TRUE))
if (length(temp[[i]]) > 1) {
z = c(z,sd(temp[[i]],na.rm = TRUE))
w = c(w,sd(temp[[i]],na.rm =
TRUE)*1.96/sqrt(length(temp[[i]])))}
else {z = c(z,NA);w = c(w,NA)}
}
resultat$moyennes = x[order(y)] ; resultat$sd =
z[order(y)]
resultat$ic = w[order(y)] ; resultat$parametres =
y[order(y)]
return(resultat)}}} }
return(resultat)}}} }
# Voir l'exemple de l'application means ci-dessous

Exemple d'application de la fonction means()

# Etape 1 - Je colle la fonction means dans le logiciel R (ci-


dessus)

# Etape 2 - voici des données (exemple) - ici je veux le nombre


moyen de colis reçus par jour
Nombre_de_colis = rnorm(91,10) ; Jours =
rep(c("L","M","M","J","V","S","D"),13)
Nombre_de_colis # colis reçus par jour sur une période de 91 jours
Jours # Jours concernés
# Calcul de ces ces moyennes et intervalles de confiance

# Calcule le nombre moyen de colis et l'intervalle de confiance


correspondant pour chaque jour étudié.
analyse = means(Nombre_de_colis, Jours)
analyse

# Etape 3 - lecture des résultats


# avec analyse$moyennes les moyennes pour chaque jour
# analyse$parametres les paramètres propres à chaque moyenne (ici
les types de jours)
# analyse$sd les écart-types correspondants
# analyse$ic les intervalles de confiance correspondants

#- - - - - - - Autre exemple plus complexe - - - - - - -


# Calculer la taille moyenne en fonction de l'âge et du sexe
Taille = rnorm(100,170) ; Age = rep(c(20:39),5) ; Sexe =
c(rep("F",50),rep("G",50))
means(Taille,Age,Sexe)

Retourne à la page générale Moyenne et intervalles de


confiance
Aide à l'utilisation du logiciel R - site réalisé par Antoine Massé - ingénieur en biotechnologies -
enseignant PrAg à l'IUT de Bordeaux - Université de Bordeaux - Site de Périgueux - département
Génie Biologique

Commentaire - Problème à signaler - ou dire Merci - Cliquer-ici - Besoin d'être formé à R (cours
personnalisés) - Données à faire traiter ?

Vous aimerez peut-être aussi