2015-02-09

Múltiples modas en R

Title En una entrada anterior calculamos la moda usando la función mlv del paquete modeest. En esta entrada veremos cómo obtener varias modas cuando el valor más frecuente no es único.

# Si modeest no está instalado y cargado
install.packages("modeest") 
library(modeest)

Problema

Cuando existen múltiples valores con la misma frecuencia, mlv devuelve la media de dichos valores. Por ejemplo en la columna Girth del data frame trees.

mlv(trees$Girth, method = "mfv")[1]
$M
[1] 13.325
El valor anterior no existe en nuestros datos. Es el promedio de las múltiples modas: 11, 11,4, 12,9 y 18.

Solución

Para obtener los valores correspondientes a las múltiples modas, emplearemos dos opciones: funciones del paquete base o del paquete dplyr.

  • Paquete base

# base-package
trees_nuevo <- subset(data.frame(table(trees$Girth)), Freq == max(Freq))
   Var1 Freq
7    11    2
11 11.4    2
14 12.9    2
26   18    2
mean(as.numeric(as.character(trees_nuevo$Var1))) # factor a numérico
[1] 13.325
  • Paquete dplyr

# dplyr
trees_nuevo <- trees %>% 
                count(Girth) %>%
                filter(n == max(n)) 
Source: local data frame [4 x 2]

  Girth n
1  11.0 2
2  11.4 2
3  12.9 2
4  18.0 2
mean(trees_nuevo$Girth)
[1] 13.325

Entradas relacionadas

No hay comentarios:

Publicar un comentario

Nube de datos