Estimar la moda en R

La moda es una medida de localización que se define como el valor más probable de una variable aleatoria o como el valor más frecuente de un conjunto de observaciones. Es una medida robusta que coincide con la media y con la mediana en distribuciones simétricas. En este tutorial revisaremos como calcular la moda en R tanto para variables unidimensionales tanto discretas como continuas.
Estimación unimodal discreta
Considera que tienes el siguiente vector x
:
La moda se calcula como el valor más repetido dentro de la variable, que en este caso es 1. Una manera sencilla de calcular la moda en R es usar la siguiente función:
En este caso, podemos comprobar que la moda es 1 pasando el vector a la función:
Si queremos visualizar el número de veces que se repite cada dato también podemos crear un gráfico de barras:
Estimación unimodal continua
Si nuestra variable de interés es continua en lugar de discreta no podremos utilizar el procedimiento anterior, sino que debemos recurrir a otro método. El procedimiento más habitual en la literatura es calcular el máximo de la estimación de la función de densidad de los datos mediante algún algoritmo.
Consideremos los siguientes datos normales (unimodales) con media 0 y desviación típica 1. Como la distribución normal es simétrica, sabemos que la media, la mediana y la moda son iguales (0).
Para visualizar las modas podemos dibujar el histograma y la estimación de la función de densidad de los datos. Ten en cuenta que la selección del parámetro ventana determinará la forma de la densidad estimada.
Para realizar el cálculo recomendamos recurrir a la función mlv
de la librería modeest
, que nos permite seleccionar entre diferentes algoritmos. Nosotros aconsejamos utilizar el algoritmo mean-shift como se indica en el siguiente bloque.
Podemos observar que la moda estimada (-0.039) es muy próxima a la moda teórica (0). Otros métodos disponibles son “lientz”
, “naive”
, “venter”
, “grenander”
, “hsm”
, “parzen”
, “tsybakov”
y “asselin”
.
Estimación multimodal discreta
A diferencia de la mediana o la media, la moda puede tomar varios valores a la vez. Como ejemplo, considera el vector y
, donde hay dos modas.
En este caso los valores más repetidos son 3 y 5. Para calcular varias modas podemos recurrir a la función mlv
del paquete modeest
y aplicar el método mfv
.
Estimación multimodal continua
Si queremos calcular varias modas en el caso de tener una variable continua podemos recurrir a la función locmodes
de la librería multimode
.
Considera los siguientes datos multimodales, cuyas modas teóricas son 40 y 120, representadas con líneas rojas verticales.
A los datos anteriores les podemos aplicar la función locmodes
, indicando el número de modas que esperamos encontrar en el argumento mod0
.
En la salida anterior podemos observar que las modas estimadas son 40.57 y 120.86, muy próximas a los valores teóricos.
La librería también incorpora un método S3 para dibujar las estimaciones que devuelve la función locmodes
, indicando la localización de las modas y de las antimodas, así como la ventana utilizada.
La librería también incluye la función modetest
, para contrastar la existencia de multimodalidad en los datos, así como funciones para explorar el número de modas, entre ellas se encuentran las funciones modetree
, modeforest
y sizes
.