Un rapide pour vous, mes plus chers gourous:
Je fais un travail et on m'a demandé, dans le cadre de cet exercice, d'extraire des statistiques de base de l'ensemble de données infert
(il est intégré), et plus précisément de l'une de ses colonnes, infert$age
.
Pour ceux qui ne connaissent pas le jeu de données:
> table_ages # Which is just subset(infert, select=c("age"));
age
1 26
2 42
3 39
4 34
5 35
6 36
7 23
8 32
9 21
10 28
11 29
...
246 35
247 29
248 23
J'ai dû trouver les valeurs médianes de la colonne, la variance, l'asymétrie, l'écart-type, ce qui me convenait, jusqu'à ce qu'on me demande de trouver la colonne "percentiles".
Je n'ai rien trouvé jusqu'à présent et je l'ai peut-être mal traduit du grec, la langue de la mission. C'était "ποσοστημόρια", Google Translate désigna le terme anglais par "percentiles".
Des tutoriels ou des idées pour trouver ces "centiles" de infert$age
?
Si vous commandez un vecteur x
et que vous trouvez les valeurs situées à mi-chemin du vecteur, vous venez de trouver une médiane, soit le 50e centile. La même logique s'applique pour n'importe quel pourcentage. Voici deux exemples.
x <- rnorm(100)
quantile(x, probs = c(0, 0.25, 0.5, 0.75, 1)) # quartile
quantile(x, probs = seq(0, 1, by= 0.1)) # decile
La fonction quantile()
remplira en grande partie ce que vous voulez probablement, mais comme la question était ambiguë, je vais vous donner une autre réponse qui fait quelque chose de légèrement différent de quantile()
.
ecdf(infert$age)(infert$age)
générera un vecteur de même longueur que infert$age
en donnant la proportion de infert$age
qui est en dessous de chaque observation. Vous pouvez lire la documentation ecdf
, mais l’idée de base est que ecdf()
vous donnera une fonction qui retourne la distribution cumulative empirique. Donc ecdf(X)(Y)
est la valeur de la distribution cumulative de X aux points de Y. Si vous voulez simplement connaître la probabilité d'être inférieur à 30 (donc quel pourcentage 30 est dans l'échantillon), vous pourriez dire
ecdf(infert$age)(30)
La principale différence entre cette approche et l'utilisation de la fonction quantile()
réside dans le fait que quantile()
nécessite que vous définissiez les probabilités pour sortir des niveaux et que vous deviez définir les niveaux pour obtenir les probabilités.
table_ages <- subset(infert, select=c("age"))
summary(table_ages)
# age
# Min. :21.00
# 1st Qu.:28.00
# Median :31.00
# Mean :31.50
# 3rd Qu.:35.25
# Max. :44.00
C'est probablement ce qu'ils recherchent. summary(...)
appliqué à une valeur numérique renvoie les valeurs minimale, maximale, moyenne, médiane et 25ème et 75ème centiles.
Notez que
summary(infert$age)
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 21.00 28.00 31.00 31.50 35.25 44.00
Les chiffres sont les mêmes mais le format est différent. En effet, table_ages
est un bloc de données avec une colonne (âges), alors que infert$age
est un vecteur numérique. Essayez de taper summary(infert)
.
Vous pouvez également utiliser le paquet hmisc qui vous donnera les centiles suivants:
0,05, 0,1, 0,25, 0,5, 0,75, 0,9, 0,95
Il suffit d'utiliser la description (table_ages)