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)
Moyenne
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)
Médiane
median(liste)
Moyenne mobile avec itération
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
Installer la fonction meanbp (librairie {KefiR})
install.packages("devtools") ; require(devtools) # Risque d'erreur si RTools non installé.
devtools::install_github("Antoine-Masse/KefiR")
Faire une moyenne mobile par iteration :
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 :
int.ech : calcule l'intervalle de confiance d'un échantillon
int.pop : calcule l'intervalle de confiance d'une population
int.prop : calcule l'intervalle de confiance sur une proportion (un pourcentage)
2.1- Intervalle de confiance sur échantillons
ÉCHANTILLON - Estimer l'intervalle de confiance d'un échantillon pour une population inconnue.
On utilisera int.ech pour des échantillons (n<100)
Si en revanche, on a un grand échantillon, représentatif d'une population voire toute la population, on peut alors utiliser int.pop()
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
ÉCHANTILLON - Autre méthode pour calculer l'intervalle de confiance d'un échantillon
# 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
POPULATION - Calculer l'intervalle de confiance d'une population alias l'erreur standard
Lorsqu'on veut calculer l'intervalle de confiance d'une population (grand échantillon)
library(KefiR) # cf. plus haut pour installer KefiR
int.pop(x,0.95)
2.3- Intervalle de confiance sur proportions
PROPORTION - Calculer l'intervalle de confiance d'une proportion ou d'une série de proportions sur des effectifs de même taille
proportion : pourcentage (valeur entre 0 et 1) (ex : si j'ai 33%, proportion = 0,33)
n : nombre d'entités ayant permis de calculer le pourcentage (ex : si j'ai mesuré 25% de femmes dans une population de 149 personnes, n = 149)
0.95, degré de confiance dans l'intervalle de confiance
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
Le problème est que l'on a souvent des proportions déduites d'un contingent avec la fonction table()
La fonction int.prop.table() permet de calculer directement les intervalles de confiance d'un contingent de la même façon que prop.table() peut en calculer les proportions.
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().
by() permet d'appliquer n'importe quel type de calcul (moyenne ou autre) par catégorie (en croisant les catégories ou non).
Exemple 1 : si je voulais la moyenne d'une variable et les intervalles de confiance par espèce
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.
Exemple 2 : si je voulais la moyenne des filles et garçons et distinguant les sportifs des non sportifs :
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.