tabla - Cálculo del percentil de la columna del conjunto de datos
tabla de frecuencia para datos agrupados en r (4)
Una rápida para ti, queridos R gurús:
Estoy haciendo una tarea y, en este ejercicio, se me ha pedido que obtenga estadísticas básicas del conjunto de datos de infert
(está incorporado), y específicamente una de sus columnas, infert$age
.
Para cualquiera que no esté familiarizado con el conjunto de datos:
> 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
Tuve que encontrar valores medianos de la columna, varianza, sesgo, desviación estándar que estaban todos bien, hasta que me pidieron que encontrara la columna "percentiles" .
No he podido encontrar nada hasta ahora, y quizás lo haya traducido incorrectamente del griego, el idioma de la tarea. Era "ποσοστημόρια", Google Translate señaló que el término en inglés era "percentiles".
¿Algún tutorial o idea sobre infert$age
encontrar esos "percentiles" de infert$age
?
La función quantile()
hará mucho de lo que probablemente desee, pero dado que la pregunta era ambigua, proporcionaré una respuesta alternativa que haga algo ligeramente diferente a la quantile()
.
ecdf(infert$age)(infert$age)
generará un vector de la misma longitud que la infert$age
dando la proporción de la infert$age
que está debajo de cada observación. Puede leer la documentación de ecdf
, pero la idea básica es que ecdf()
le dará una función que devuelve la distribución empírica acumulativa. Por ecdf(X)(Y)
tanto, ecdf(X)(Y)
es el valor de la distribución acumulativa de X en los puntos en Y. Si quisiera conocer solo la probabilidad de estar por debajo de 30 (por lo tanto, qué percentil 30 está en la muestra), podría decir
ecdf(infert$age)(30)
La principal diferencia entre este enfoque y el uso de la función quantile()
es que el quantile()
requiere que se pongan las probabilidades para superar los niveles, y esto requiere que se pongan los niveles para superar las probabilidades.
Si ordena un vector x
, y encuentra los valores que están a mitad de camino a través del vector, acaba de encontrar una mediana, o percentil 50. La misma lógica se aplica a cualquier porcentaje. Aquí hay dos ejemplos.
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
También puede usar el paquete hmisc que le dará los siguientes percentiles:
0.05, 0.1, 0.25, 0.5, 0.75, 0.9, 0.95
Solo usa la descripción (table_ages)
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
Esto es probablemente lo que están buscando. summary(...)
aplicado a un valor numérico devuelve los percentiles mínimo, máximo, medio, medio y 25 y 75 de los datos.
Tenga en cuenta que
summary(infert$age)
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 21.00 28.00 31.00 31.50 35.25 44.00
Los números son los mismos pero el formato es diferente. Esto se debe a que table_ages
es un marco de datos con una columna (edades), mientras que infert$age
es un vector numérico. Intente escribir summary(infert)
.