Se entiende por tendencia central a algún punto o cantidad que describa lo que podemos considerar como “el centro” de los datos, que podría coincidir con el espacio donde se concentra “la mayoría” de los datos.
Uno de estos puntos es la media que es lo mismo que el promedio de los datos. Es también equivalente a lo que conociste en distribuciones de probabilidad como el valor esperado, determinado por una suma o una integral. En el caso de variables discretas:
\[ \mu = \sum_{\forall i} x_i P(x_i) \]
Esa probabilidad es una ponderación o “peso” para cada resultado \(x_i\), que si la hacemos la misma para una cantidad definida de datos \(n\), entonces \(P(x_i) = 1/n\), o sea que todos los datos tienen el mismo peso. Nuestros datasets siempre son finitos, así que la cantidad teórica que para una distribución es el valor esperado \(\mu\) se convierte en la cantidad práctica \(\bar{x}\), que es el promedio de un conjunto de datos numéricos: \[ \bar{x} = \frac{{\displaystyle\sum_{i=1}^n x_i}}{n} \]
Cantidad que se lee como “x barra” o “x testada”.
Utilizaremos un nuevo dataset del mismo repositorio llamado Credit
. Una vez que lo cargues a RStudio, así se ven las primeras 5 líneas:
Income | Limit | Rating | Cards | Age | Education | Gender | Married | Ethnicity | Balance |
---|---|---|---|---|---|---|---|---|---|
14.891 | 3606 | 283 | 2 | 34 | 11 | Male | Yes | Caucasian | 333 |
106.025 | 6645 | 483 | 3 | 82 | 15 | Female | Yes | Asian | 903 |
104.593 | 7075 | 514 | 4 | 71 | 11 | Male | No | Asian | 580 |
148.924 | 9504 | 681 | 3 | 36 | 11 | Female | No | Asian | 964 |
55.882 | 4897 | 357 | 2 | 68 | 16 | Male | Yes | Caucasian | 331 |
Esta es una muestra de 400 clientes con tarjeta de crédito de un banco, con algunas de sus características, donde cada variable significa:
La función en R que calcula la suma de los datos en una variable dividida entre la cantidad de datos, que llamamos \(\bar{x}\) es mean
:
with(Credit, mean(Age))
## [1] 55.6675
Esta es la edad promedio de los clientes. También habrá ocasiones en que algún registro se pierda, porque no se capturó o por alguna otra buena razón. En tu dataset lo verías como una celda en blanco y R lo interpreta como NA
. Inventemos que hay 5 nuevos datos de otros clientes y que sus edades se guardan en la variable x
pero no aparece la edad de uno de ellos:
x <- c(20, 25, 28, NA, 32)
mean(x)
## [1] NA
En estos casos algunas funciones que calculan características numéricas no darán resultados, como mean
que no puede calcular el promedio con el dato perdido, pero se podrá hacer al incluir la opción na.rm = TRUE
que significa “que ignore los datos perdidos” (na.rm: NA remove) para que calcule con los datos disponibles:
mean(x, na.rm = TRUE)
## [1] 26.25
Esta es otra medida de tendencia central que no tiene que coincidir con la media, aunque a veces resultan valores cercanos entre sí. La mediana es el dato que queda justo a la mitad de una secuencia de datos numéricos, acomodados en orden. Digamos que si tienes \(n\) datos, la mediana \(\tilde{x}\) es el dato en la posición: \[ \tilde{x} = x_\frac{n+1}{2} \]
La cual, en el caso de \(n\) impar, hay un dato en el centro. Si lo tuvieras que calcular a mano, en el caso de \(n\) par, no hay dato en el centro, así que se obtiene del promedio de los dos datos alrededor del centro. En R la función median
lo calcula sin importar el caso:
with(Credit, median(Limit))
## [1] 4622.5
Este es el límite de crédito mediano de los clientes de esta muestra. La mitad de ellos tiene un límite por debajo de $4,622.5 y la otra mitad arriba de $4,622.5. En caso de haber datos perdidos, aplica la misma opción que se mencionó para la media.
También debes saber ya que un histograma se genera con la función hist
y que sirve para saber si una distribución de datos se aproxima a alguna distribución de probabilidad. Parecen las mismas barras que usamos para las variables de categoría pero no es así. barplot
sólo aplica para variables categóricas e hist
sólo para variables numéricas.
La función de R tiene un algoritmo que decide cuál es la división más adecuada de tus datos (revisa la regla de Sturges). Por ejemplo, para los saldos en tarjeta de los clientes:
with(Credit, hist(Balance))
La partición de la variable se hizo para mostrar grupos de 200 en 200 dólares, lo cual se nota en el eje horizontal. Si no era esto lo que querías se puede cambiar con la opción breaks
, que se refiere a la cantidad de divisiones (o una secuencia con los puntos de división); si en la gráfica anterior fueron 9 divisiones, entonces:
with(Credit, hist(Balance, breaks = 18))
Tiene el doble de “barritas”, por lo que ahora la partición se muestra de 100 en 100 dólares. A estas gráficas también se le puede dar color y cambiar las indicaciones de texto y dar formato a los ejes si se desea, pero eso ya lo iremos viendo en el camino.
En algunos conjuntos de datos notarás que hay algunos pocos valores que quedaron muy extremos, lejos de la mayoría; a estos les llamamos datos atípicos o outliers. Que dichos datos queden “lejos” del resto es muy relativo y en otras gráficas se establece mejor cuándo se pueden considerar atípicos, pero al menos con los histogramas sí nos podemos dar una idea de esto.
Considera el siguiente histograma con la distribución de los rendimientos en el dataset de Autos
:
with(Autos, hist(mpg, main = "Distribución de rendimientos de autos", xlab = "Millas por galón"))
Las frecuencias son más bajas en los extremos, lo cual es normal (típico), pero después de un “hueco” sin datos hay intervalos arriba de 35 millas/galón con pocos datos que quedaron separados de la distribución del resto. Son los autos con rendimientos anormalmente altos (en este caso, por ser autos híbridos), los cuales bien podemos considerar como atípicos. Igualmente, los datos atípicos pueden aparecer en el extremo inferior.
En las variables que cuentan con datos atípicos la media se carga un poco hacia esos datos, lo que la hace menos representativa de la tendencia central. La mediana será una mejor medida en estos casos, pues no se ve afectada por los datos atípicos.
Sección opcional. Activamos el paquete con:
library(plotly)
Para esta gráfica se tiene otra forma de calcular las divisiones. Se incluye también la opción bargap
si quieres que se note la división de las columnas:
plot_ly(Credit, x = ~Limit, type = "histogram") %>%
layout(title = "Distribución de los límites de crédito",
xaxis = list(title = "Dólares"),
yaxis = list(title = "Frecuencia"),
bargap = 0.1)
Desde aquí puedes regresar al índice.
Este documento fue hecho con RMarkdown.