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:
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 ...
Solar.RPara 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
medianmedian(airquality$Solar.R, na.rm = TRUE)
## [1] 205
boxplot(airquality$Solar.R)
Ozonelength(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
medianmedian(df_ordenado$Ozone)
## [1] 31.5
boxplot(df_ordenado$Ozone)