Saltar al contenido principal
LibreTexts Español

9.3: Modo

  • Page ID
    150513
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    El modo es el valor más frecuente que ocurre en una variable. R tiene una función llamada mode () pero si miras la página de ayuda verás que en realidad no copute el modo. De hecho, R no tiene una función incorporada para calcular el modo, por lo que necesitamos crear una. Comencemos con algunos datos de juguetes:

    mode_test = c('a', 'b', 'b', 'c', 'c', 'c')
    mode_test
    ## [1] "a" "b" "b" "c" "c" "c"

    Podemos ver a ojo que el modo es “a” ya que ocurre con más frecuencia que los demás. Para encontrarlo computacionalmente, primero obtengamos los valores únicos

    Para ello, primero creamos una tabla con los recuentos para cada valor, usando la función table ():

    mode_table <- table(mode_test)
    mode_table
    ## mode_test
    ## a b c 
    ## 1 2 3

    Ahora necesitamos encontrar el valor máximo. Esto lo hacemos comparando cada valor con el máximo de la tabla; esto funcionará incluso si hay múltiples valores con la misma frecuencia (es decir, un empate para el modo).

    table_max <- mode_table[mode_table == max(mode_table)]
    table_max
    ## c 
    ## 3

    Esta variable es un tipo especial de valor llamado vector con nombre, y su nombre contiene el valor que necesitamos para identificar el modo. Podemos sacarlo usando la función names ():

    my_mode <- names(table_max)[1]
    my_mode
    ## [1] "c"

    Envolvamos esto en nuestra propia función personalizada:

    getmode <- function(v, print_table=FALSE) {
      mode_table <- table(v)
      if (print_table){
        print(kable(mode_table))
      }
      table_max <- mode_table[mode_table == max(mode_table)]
      return(names(table_max))
    }

    Entonces podemos aplicar esto a datos reales. Apliquemos esto a la variable MaritalStatus en el conjunto de datos NHANES:

    getmode(NHANES$MaritalStatus)
    ## [1] "Married"

    This page titled 9.3: Modo is shared under a not declared license and was authored, remixed, and/or curated by Russell A. Poldrack via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.