Moyennes et intervalles de confiance

L'essentiel de cette page !

Pour décrire un échantillon, on peut calculer la moyenne, la médiane, le mode (non décrit ici) ou même la moyenne mobile (pour écarter les valeurs aberrantes) avec les commandes mean(), median() ou meanbp (disponible sur ce site).

L'estimation de la moyenne d'une population à partir d'un échantillon se fait par le calcul de l'intervalle de confiance. Cette page donne 3 méthodes pour calculer les intervalles de confiance d'un échantillon (moyenne), d'un effectif ou d'une proportion avec int.ech(), int.pop() et int.prop().

Enfin, quand on veut calculer plusieurs moyennes et intervalles de confiance en fonction de chaque modalité, la commande means() (avec un s) pourra le faire automatiquement.

1- Calculer la meilleure moyenne (Moyenne, médiane ou moyenne mobile)

liste = c(1,2,3,2,1,4,5,6) 

mean(liste) # calcule la moyenne de la liste 


liste = c(1,2,3,2,NA,4,5,6) 

mean(liste,na.rm=T) # calcule la moyenne de la liste même si elle présente une valeur vide indiquée par NA


Remarque : si on dispose d'un data.frame, on peut obtenir la moyenne de chaque colonne avec colMeans

colMeans(dataframe)

median(liste) 

Cette moyenne permet de s'affranchir des valeurs  aberrantes  en pondérant les valeurs en fonction de leur proximité de la moyenne - et en répétant plusieurs fois le calcul de la moyenne 

Ces estimations d'une population à partir d'échantillons montrent que la moyenne mobile par itération (en bleu) arrive plus rapidement à la valeur réelle (en vert) que la médiane (orange) relativement juste ou la moyenne (en rouge)

install.packages("devtools") ; require(devtools) # Risque d'erreur si RTools non installé.

devtools::install_github("Antoine-Masse/KefiR")

library("KefiR")


x <- rnorm(100,20,5) # simuler un échantillon d'une population dont la moyenne est de 20

meanbp(x,100) # 100 car on ne refera au maximum que 100 fois le calcul

# si on compare avec mean(x) ou median(x) : on voit que meanbp rend un résultat plus proche de la véritable moyenne qui est de 20

2- Calculer des intervalles de confiance

Voici différentes fonctions pour calculer des intervalles de confiance :

2.1- Intervalle de confiance sur échantillons

library(KefiR) # cf. plus haut pour installer KefiR

# exemple d'application

x = c(1,4,3,5,3) ; int.ech(x) 

# le paramètre conf.level indique le niveau de confiance (95% par défaut)

# na.rm=T permet de s'affranchir des valeurs vides

# avec x un vecteur (liste de valeurs) 

(t.test(x)$conf.int[2]-t.test(x)$conf.int[1])/2 # donner l'intervalle de confiance à 95% 

_ _ _ _ _ _ _ _ _ _ 


analyse =  t.test(x, conf.level=0.99 ) 

(analyse $conf.int[2]- analyse $conf.int[1])/2 # donner l'intervalle de confiance à 99% 

2.2- Intervalle de confiance sur population

library(KefiR) # cf. plus haut pour installer KefiR


int.pop(x,0.95) 

2.3- Intervalle de confiance sur proportions

library(KefiR) # cf. plus haut pour installer KefiR

# exemple 

int.prop(0.50,100,0.95) 

# Va donner l'intervalle de confiance sur une proportion de 50% (0.5)  calculée sur un échantillon de 100 éléments 

library(KefiR) # cf. pour installer KefiR

# Voici un contingent

contingent = with(airquality, table(cut(Temp, quantile(Temp)), Month))


# En voici les proportions globales

prop.table(contingent) # proportions

int.prop.table(contingent) # intervalles de confiance


# Les proportions et IC calculés ligne par ligne : part de représentation de chaque mois dans une tranche de température

prop.table(contingent,1) # proportions

int.prop.table(contingent,1) # intervalles de confiance

# Les proportions et IC calculés colonne par colonne : part occupées par les différentes tranches de température pour chaque mois

prop.table(contingent,2) # proportions

int.prop.table(contingent,2) # intervalles de confiance


# représentation graphique du dernier cas

library(gplots)

barplot2(prop.table(contingent,2), plot.ci=TRUE,ci.l=prop.table(contingent,2)-int.prop.table(contingent,2),ci.u=prop.table(contingent,2)+int.prop.table(contingent,2),beside=TRUE)

         Month

           5  6  7  8  9

  (56,72] 24  3  0  1 10

  (72,79]  5 15  2  9 10

  (79,85]  1  7 19  7  5

  (85,97]  0  5 10 14  5


3- Calculer des moyennes & intervalles de confiance pour l'ensemble des paramètres

Il existe une méthode pour systématiser un calcul en fonction des catégories ou valeurs d'une autre variable ou plusieurs autres : la fonction by().


data(iris)

moyennes <- by(iris[,1], iris[,5], mean)

ic <- by(iris[,1], iris[,5], int.ech) # fonction int.ech() à récupérer ci-dessus pour les intervalles de confiance.

val <- rnorm(20)

val2 <- rnorm(200,20,3)

sx <- c(rep("F",100),rep("M",100))

sport <- c(rep("S",20),rep("NO",120),rep("S",60))

data <- data.frame(val,val2,sx,sport)

result <- by(data[,2],data[,3:4],mean) ; result

barplot(result,beside=T) 

La fonction means permet aussi de mettre en relation deux listes (deux vecteurs) et de calculer les moyennes, écarts-types et intervalles de confiance en fonction des paramètres existants dans le vecteur 2.

Mots clefs : calculer un ensemble de moyennes en fonction des modalités - identifier automatiquement les différents paramètres pour calculer des moyennes - croiser des vecteurs afin de faire automatiquement les moyennes en fonction des différentes combinaisons de paramètres.