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”)
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
Muy bueno y super simple usando
ResponderEliminarmoda=function(x) {
q=table(x)
q=sort(q,TRUE)
return(q[1])
}