2018-06-25

Media aritmética ponderada en R

Problema

Deseamos calcular la media ponderada de un conjunto de datos con R

Solución

Utilizamos al función weighted.mean del paquete base.

  • Ejemplo de la documentación de R
  • wt <- c(5,  5,  4,  1)/15 # No es necesario dividir entre 15
    x <- c(3.7, 3.3, 3.5, 2.8)
    xm <- weighted.mean(x, wt)
    
    [1] 3.453333
    
  • Ejemplo por grupos
  • Utilizamos el paquete dplyr y el conjunto de datos ChickWeight para calcular la media ponderada por grupo. Pondero por la variable Time a modo ilustrativo. Añado la media aritmética sin ponderar para permitir la comparación.

    library(dplyr)
    # Si queremos calcular el total
    with(ChickWeight, weighted.mean(weight, Time))
    # Por grupo
    ChickWeight %>%
      group_by(Diet) %>% 
       summarise(mean =  mean(weight), wm = weighted.mean(weight, Time)) 
    
    # A tibble: 4 x 3
      Diet   mean    wm
        
    1 1      103.  132.
    2 2      123.  159.
    3 3      143.  191.
    4 4      135.  176.
    

    Entradas relacionadas

    No hay comentarios:

    Publicar un comentario

    Nube de datos