Mediana é o número central em uma lista de dados, o valor central se refere como a média dos valores classificando na metade superior e inferior.

De forma análoga a média ponderada temos a mediana ponderada, valor cuja soma dos pesos é igual para a metades superior e inferior.

A mediana é uma estimativa robusta de localização pois não são influenciadas por casos extremos (outliers).

Para encontrar a mediana, deve-se:

Calculando a mediana dos dados de medições da qualidade do ar em Nova Iorque

O dataset airqualityé um dataset de medições diárias da qualidade do ar em Nova Iorque, de maio a setembro de 1973.

dim(airquality)
## [1] 153   6
head(airquality, n = 10)
##    Ozone Solar.R Wind Temp Month Day
## 1     41     190  7.4   67     5   1
## 2     36     118  8.0   72     5   2
## 3     12     149 12.6   74     5   3
## 4     18     313 11.5   62     5   4
## 5     NA      NA 14.3   56     5   5
## 6     28      NA 14.9   66     5   6
## 7     23     299  8.6   65     5   7
## 8     19      99 13.8   59     5   8
## 9      8      19 20.1   61     5   9
## 10    NA     194  8.6   69     5  10
str(airquality)
## 'data.frame':    153 obs. of  6 variables:
##  $ Ozone  : int  41 36 12 18 NA 28 23 19 8 NA ...
##  $ Solar.R: int  190 118 149 313 NA NA 299 99 19 194 ...
##  $ Wind   : num  7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
##  $ Temp   : int  67 72 74 62 56 66 65 59 61 69 ...
##  $ Month  : int  5 5 5 5 5 5 5 5 5 5 ...
##  $ Day    : int  1 2 3 4 5 6 7 8 9 10 ...

Calculando a mediana da coluna Solar.R

Para calcular a mediana, deve-se ordenar o elementos em ordem crescente

length(sort(airquality$Solar.R))                                  # obtendo o tamanho do vetor (é par)
## [1] 146
df_ordenado <- data.frame('Solar.R' = sort(airquality$Solar.R))   # ordenando o vetor
head(df_ordenado)
##   Solar.R
## 1       7
## 2       8
## 3      13
## 4      14
## 5      19
## 6      20
x <- length(df_ordenado$Solar.R)/2                                # como o vetor é par, dividimos por 2 (73)
y <- x + 1                                                        # somamos com 1 (74)
(df_ordenado$Solar.R[x] + df_ordenado$Solar.R[y]) / 2
## [1] 205

Usando a função median

median(airquality$Solar.R, na.rm = TRUE)
## [1] 205
boxplot(airquality$Solar.R)

Calculando a mediana da coluna Ozone

length(sort(airquality$Ozone))                                  # obtendo o tamanho do vetor (é par)
## [1] 116
df_ordenado <- data.frame('Ozone' = sort(airquality$Ozone))   # ordenando o vetor
head(df_ordenado)
##   Ozone
## 1     1
## 2     4
## 3     6
## 4     7
## 5     7
## 6     7
x <- length(df_ordenado$Ozone)/2                                # como o vetor é par, dividimos por 2 (73)
y <- x + 1                                                        # somamos com 1 (74)
(df_ordenado$Ozone[x] + df_ordenado$Ozone[y]) / 2
## [1] 31.5

Usando a função median

median(df_ordenado$Ozone)
## [1] 31.5
boxplot(df_ordenado$Ozone)

Referências