Encontrando la MODA en R (Deybi Morales)



La moda es la observación que aparece con mayor frecuencia en una variable. En este ejemplo, identificamos la moda en 5 4 2 6 2 1 3 4 6 7 4 .

Para ello introduciremos los datos a como se presentan. Generamos una variable data.

data <- c(5, 4, 2, 6, 2, 1, 3, 4, 6, 7, 4)
[1] 5 4 2 6 2 1 3 4 6 7 4

En el lenguaje R no tenemos una función directa para obtener la moda en el R base. Sin embargo, podemos aplicar una tabla de frecuencia.

table(data)
1 2 3 4 5 6 7
1 2 1 3 1 2 1

Notemos en la tabla de frecuencias que el dato que más se repite es 4, y lo hace 3 veces. Debemos destacar que la primera línea son los datos introducidos pero ordenados de menor a mayor.

La segunda línea del resultado son las veces que se repite cada observación.

Existen dos maneras de obtener la moda en R sin hacer una tabla de frecuencia con “table”:
1.     Creando una nueva función que la calcule.
2.     Descargando e instalando desde internet un nuevo paquete.
Veamos con la primera manera de obtener la moda, es agregando una nueva función a mano.
Introducimos esta función anónima encontrada en google, la podemos ejecutar en un nuevo script.

moda=function(x) {
    q=table(x)
    q=sort(q,TRUE)
    return(q[1])
     }

La seleccionamos toda y le damos clic en el botón “Run” (de Rstudio).

Esas lineas se ejecutarán en R sin error.

En este momento ya podemos utilizar la nueva función creada llamada a nuestra conveniencia “moda”.

moda(data)
4
3

El resultado ha sido 4 y el 3 son las veces que aparece.

La segunda
 manera nos ahorra dolores de cabeza para los que deseamos evitar la complicada creación de funciones.

En primer lugar, descargamos un paquete que entre sus funciones tenga la moda.

Vamos a utilizar un paquete llamado “modeest”.

Descargarlo, para ello es necesario disponer de conección a internet.

install.packages('modeest')

Esperamos que se logre instalar. Si ya se tiene instalado, se necesita activar con la función “library”.

library(modeest)

Ahora proseguimos a utilizar la función para la moda, la función es “mlv”.

mlv(data, method  =  "mfv")

Mode (most likely value): 4
Bickel’s modal skewness: 0
Call: mlv.default(x = data, method = “mfv”)

Vemos que el valor que más aparece es 4.

Si quisiéramos extraer solo el 4, entonces tendríamos que conocer los elementos clases que tiene la salida.

Por ejemplo, podemos generar un objeto que sea la salida anterior. En este caso llamaremos “m”

m <- mlv(data, method  =  "mfv")

Comprobamos que “m” sea la salida.

m
Mode (most likely value): 4
Bickel’s modal skewness: 0
Call: mlv.default(x = data, method = “mfv”)

Aplicando unclass podemos identificar qué elemento contiene moda.

unclass(m)

$M
[1] 4

$skewness
[1] 0

$x
[1] 5 4 2 6 2 1 3 4 6 7 4

$method
[1] “mfv”

$bw
NULL

$boot
[1] FALSE

$boot.M
[1] 4

$call
mlv.default(x = data, method = “mfv”)

Vemos según lo impreso en la consola que el elemento a extraer es “$M”.

moda <- m$M

Revisamos que así sea.

moda
[1] 4

Si conoces otra función para encontrar la moda o nuevo paquete, nos gustaría que lo compartieras en los comentarios.

Deybi Morales León

Comentarios

  1. Muy bueno y super simple usando
    moda=function(x) {
    q=table(x)
    q=sort(q,TRUE)
    return(q[1])
    }

    ResponderEliminar

Publicar un comentario

Envíanos un mensaje

Nombre

Correo electrónico *

Mensaje *