Opérations statistiques de base avec R

L'essentiel de cette page !

Calculer une moyenne avec mean(), une médiane avec median(), un écart-type avec sd(), des quartiles avec summary() ou des corrélations avec cor() ou, mieux encore, cor.test()...

Voici quelques fonctions statistiques de bases.

Attention : pour les calculs complexes de moyennes (dont les moyennes pondérées par itération pour écarter les valeurs aberrantes), des moyennes multiples par modalité ou encore les intervalles de confiance : il faut aller voir cette page !

Fonctions de base pour calculer ou faire des statistiques avec R.

Encadré : variance, écart-type (n, n-1) ou erreur standard

On utilise souvent ces termes de variance, d'écart-type (où on divise parfois par n ou n-1). On parle aussi d'erreur standard.

Attention, tous ces termes sont différents (voir sources externes en bas de page).

Ce qu'on doit retenir :

mean(x)

mean(x, na.rm = TRUE)  # s'il y a des valeurs vides NA 

median(x) 

sd(x)

sd(x, na.rm = TRUE)  # s'il y a des valeurs vides NA 

var(x)

max(x) 

min(x) 

range(x)

#Ordre croissant

sort(x)

#Ordre décroissant

sort(x, TRUE) 

QuartilesMédianeMoyenneMin et Max

summary(x) 

cor(x, y)

cor.test(x, y)

# Ex : même si cor = 0.5 si p-value très faible : corrélation très significative !

table(x, y) 

x <- rnorm(1000,20,3)  # population

ech_1 <- sample(x,100) # échantillon 1

ech_2 <- sample(x,100)  # échantillon 2

commun <- intersect(ech_1,ech_2)# Partie commune

length(ech_1)*length(ech_2)/length(commun) # estimation de la taille de la population x (qui fait 1000 en réalité)

Une méthode très performante pour appliquer n'importe quel calcul (moyenne ou autre) à chaque catégorie ou en croisant les catégories : fonction by()

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 # J'ai ainsi la moyenne de la variable 2 pour les filles, les garçons qu'ils soient sportifs ou non.

barplot(result,beside=T)  

3- Décrire les données d'un tableau de façon rapide et efficace

Afficher un bilan statistique complet pour chaque variable et chaque catégorie

data(iris)

summary_by_species <- aggregate(iris[,1:4], by=list(Species=iris$Species), summary)

summary_by_species 

install.packages("pastecs") ; 

library("pastecs") 

stat.desc(iris)


# Pour appliquer une fonction systématique en fonction d'un critère

data(iris)

as.numeric(names(by(iris[,1],iris$Sepal.Length,mean)))

plot(as.numeric(names(by(iris[,2],iris$Sepal.Length,mean))) ,    by(iris[,2],iris$Sepal.Length,mean))

        Sepal.Length  Sepal.Width Petal.Length  Petal.Width Speciesnbr.val      150.00000000 150.00000000  150.0000000 150.00000000      NAnbr.null       0.00000000   0.00000000    0.0000000   0.00000000      NAnbr.na         0.00000000   0.00000000    0.0000000   0.00000000      NAmin            4.30000000   2.00000000    1.0000000   0.10000000      NAmax            7.90000000   4.40000000    6.9000000   2.50000000      NArange          3.60000000   2.40000000    5.9000000   2.40000000      NAsum          876.50000000 458.60000000  563.7000000 179.90000000      NAmedian         5.80000000   3.00000000    4.3500000   1.30000000      NAmean           5.84333333   3.05733333    3.7580000   1.19933333      NASE.mean        0.06761132   0.03558833    0.1441360   0.06223645      NACI.mean.0.95   0.13360085   0.07032302    0.2848146   0.12298004      NAvar            0.68569351   0.18997942    3.1162779   0.58100626      NAstd.dev        0.82806613   0.43586628    1.7652982   0.76223767      NAcoef.var       0.14171126   0.14256420    0.4697441   0.63555114      NA