2015-01-20

Calcular la moda en R usando el paquete modeest

Title R no dispone de una función en su paquete base que nos permita calcular la moda. La función mode devuelve el tipo o modo de almacenamiento de un objeto. Hay múltiples formas de calcular la moda haciendo uso de otras funciones de R. Sin embargo, ahora optamos por cargar el paquete modeest y usar la función mlv que devuelve el valor de un vector numérico.

# Si modeest no está instalado y cargado
install.packages("modeest") 
library(modeest)
Usamos como ejemplo el data frame trees.

mlv(trees$Volume, method = "mfv") # O mlv(trees$Volume, method = "discrete")
Mode (most frequent value): 10.3 
Bickel's modal skewness: 0.8709677 
Call: mlv.default(x = trees$Volume, method = "discrete") 
Si tan sólo queremos el valor más frecuente:

mlv(trees$Volume, method = "mfv")[1]

Calcular la moda de múltiples columnas

apply(trees, 2, mlv,  method = "mfv")
$Girth
Mode (most frequent value): 13.325 
Bickel's modal skewness: -0.1612903 
Call: mlv.default(x = newX[, i], method = "discrete") 

$Height
Mode (most frequent value): 80 
Bickel's modal skewness: -0.3870968 
Call: mlv.default(x = newX[, i], method = "discrete") 

$Volume
Mode (most frequent value): 10.3 
Bickel's modal skewness: 0.8709677 
Call: mlv.default(x = newX[, i], method = "discrete") 

Entradas relacionadas

6 comentarios:

  1. Excelente!! muchas gracias

    ResponderEliminar
  2. Buenos días,

    ¿Y para calcular la moda de cadenas?

    ResponderEliminar
  3. library("modeest")
    Error: package or namespace load failed for ‘modeest’ in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]):
    there is no package called ‘genefilter’ como puedo solucionarlo

    ResponderEliminar
    Respuestas
    1. El error ya te indica que instales un paquete del que depende 'genefilter'. Instálalo, si te da error prueba:
      if (!requireNamespace("BiocManager", quietly = TRUE))
      install.packages("BiocManager")
      BiocManager::install("genefilter", version = "3.8")

      Eliminar
  4. > moda=mfv(Vel);moda
    Error in mfv(Vel) : no se pudo encontrar la función "mfv"
    como puedo solucionarlo???

    ResponderEliminar
    Respuestas
    1. Necesitas instalar el paquete modeest. Si te da problemas la instalación prueba:
      if (!requireNamespace("BiocManager", quietly = TRUE))
      install.packages("BiocManager")
      BiocManager::install("genefilter")

      Eliminar

Nube de datos