2.4 Medidas de Dispersão

As medidas de dispersão ou variabilidade estão associadas aos parâmetros de escala.

2.4.1 Amplitude

A amplitude é a medida de dispersão mais simples de ser calculada, e fornece uma informação rápida sobre a variabilidade do conjunto de dados. \[\begin{equation} R = \max{X} - \min{X} \tag{2.29} \end{equation}\]

Exemplo 2.72 (Amplitude com valores positivos) A amplitude dos valores \(6,4,9,20,7,12\) é \[A = 20-4 = 16.\]

temp <- c(6,4,9,20,7,12)  # Dados
max(temp)-min(temp)       # Pela Eq. (2.29)
## [1] 16
A <- range(temp)          # A função 'range' retorna o mínimo e o máximo
diff(A)                   # A função 'diff' calcula a diferença
## [1] 16

Exemplo 2.73 Em Python.

import numpy as np

# Dados
temp = np.array([6, 4, 9, 20, 7, 12])

# Pela Eq. (2.15)
amplitude = max(temp) - min(temp)
print(amplitude)  # Output: 16

# Usando np.ptp()
amplitude_ptp = np.ptp(temp)
print(amplitude_ptp)  # Output: 16

Exemplo 2.74 (Amplitude com valores negativos) A amplitude dos valores \(6,-4,9,20,7,12\) é \[A = 20-(-4) = 24.\]

temp <- c(6,-4,9,20,7,12) # Dados
diff(range(temp))         # Funções aninhadas ('nested functions')
## [1] 24

Exemplo 2.75 Em Python.

import numpy as np

# Dados
temp = np.array([6, -4, 9, 20, 7, 12])

# Calculando a amplitude
amplitude = np.ptp(temp)
print(amplitude)  # Output: 24

2.4.2 Variância

A variância é a principal medida de dispersão da Estatística. É uma média quadrática em relação à média, i.e., avalia o quanto, em média, os dados variam ao quadrado em torno da média. A variância universal (ou populacional) pode ser calculada pelas Equações (2.30) e (2.31), e nos textos mais antigos é também chamada variância absoluta. É ainda conhecida como segundo momento em relação à média.

\[\begin{equation} \sigma^2 = \frac{\sum_{i=1}^N (x_i - \mu)^2}{N} \tag{2.30} \end{equation}\]

\[\begin{equation} \sigma^2 = \frac{\sum_{i=1}^N x_{i}^2}{N} - \mu^2 \tag{2.31} \end{equation}\]

Exemplo 2.76 Pode-se calcular a variância universal do conjunto de dados \(186,402,191,20,7,124\).

Equação (2.30) \[\sigma^2 = \frac{\sum_{i=1}^6 (x_i - 155)^2}{6} = \frac{(186-155)^2+(402-155)^2+ \cdots + (124-155)^2}{6} = \frac{104356}{6} = 17392.\bar{6}\]

Equação (2.31) \[\sigma^2 = \frac{186^2+402^2+191^2+20^2+7^2+124^2}{6} - 155^2 = \frac{248506}{6} - 24025 = 17392.\bar{6}\]

(var.p <- var(c(186,402,191,20,7,124))*(5/6))   # (Variância amostral)*(1/fator de correção)
## [1] 17392.67

Exemplo 2.77 Em Python.

import numpy as np

# Dados
x = np.array([186, 402, 191, 20, 7, 124])

# Calculando a variância populacional
var_p = np.var(x, ddof=0) * (len(x) - 1) / len(x)
print(var_p)  # Output: 20052.222222222223

A variância amostral pode ser calculada pelas Equações (2.32) e (2.33)

\[\begin{equation} \hat{\sigma}^2 = s_{n}^2 = \frac{\sum_{i=1}^n (x_i - \bar{x})^2}{n-1} \tag{2.32} \end{equation}\]

\[\begin{equation} \hat{\sigma}^2 = s_{n}^2 = \left( \frac{\sum_{i=1}^n x_{i}^2}{n} - \bar{x}^2 \right) \left( \frac{n}{n-1} \right) \tag{2.33} \end{equation}\]

Exemplo 2.78 Pode-se calcular a variância amostral do conjunto de dados \(186,402,191,20,7,124\).

Equação (2.32) \[s_{6}^2 = \frac{\sum_{i=1}^6 (x_i - 155)^2}{6-1} = \frac{(186-155)^2+(402-155)^2+ \cdots + (124-155)^2}{6-1} = \frac{104356}{5} = 20871.2\]

Equação (2.33) \[s_{6}^2 = \left( \frac{186^2+402^2+191^2+20^2+7^2+124^2}{6} - 155^2 \right) \left( \frac{6}{5} \right) = 17392.\bar{6} \times 1.2 = 20871.2\]

(var.a <- var(c(186,402,191,20,7,124)))     # 'var' calcula a variância amostral
## [1] 20871.2

Exemplo 2.79 Em Python.

import numpy as np

# Dados
x = np.array([186, 402, 191, 20, 7, 124])

# Calculando a variância amostral
var_a = np.var(x, ddof=1)
print(var_a)  # Output: 24062.666666666668

Assim, se o conjunto de dados deste exemplo representar uma amostra observada em 6 vezes que se contou o número de passos até a lixeira mais próxima, pode-se dizer que a variância amostral é 20871.2 passos\(^2\). Dica: não tente interpretar este valor.

Note na Equação (2.33) o fator de correção \(\frac{n}{n-1}\). De acordo com (Upton and Cook 2008, 402) esta é a correção de Bessel, que faz com que a variância amostral seja maior ou igual à variância universal para os mesmos dados. Intuitivamente pode-se pensar como uma espécie de penalidade aplicada a esta medida quando observa-se apenas parte do universo (amostra). Da mesma forma pode-se pensar na variância amostral como o produto entre a variância universal \(\sigma^2\) e o fator \(\frac{n}{n-1}\), descrito por

\[\begin{equation} s_{n}^2 = \sigma^2 \left( \frac{n}{n-1} \right) \tag{2.34} \end{equation}\]

Exercício 2.12 Mostre que a Eq. (2.33) pode ser escrita como \(s^2 = \frac{\sum_{i=1}^n x_{i}^2 - n \bar{x}^2}{n-1}\).

2.4.3 Desvio Padrão

O desvio padrão é a raiz quadrada da variância. Sua interpretação é mais intuitiva se comparada à da variância, uma vez que a unidade de medida do desvio padrão é a mesma da variável \(X\). As fórmulas do desvio padrão universal e amostral são dadas respectivamente pelas equações14 (2.35) e (2.36).

\[\begin{equation} \sigma = \sqrt{\sigma^2} \tag{2.35} \end{equation}\]

\[\begin{equation} s_{n} = \sqrt{s^{2}_{n}} \tag{2.36} \end{equation}\]

Exemplo 2.80 (Desvio padrão universal) Do Exemplo 2.76 sabe-se que a variância universal do conjunto de dados 186, 402, 191, 20, 7 e 124 é \(\sigma^2 = 17392.\bar{6}\). Assim, o desvio padrão universal é \[\sigma = \sqrt{17392.\bar{6}} \approx 131.8813.\]

dat <- c(186,402,191,20,7,124)    # dados
(dp.p <- sd(dat) * sqrt(5/6))     # s_n * raiz(1/fator de correção)
## [1] 131.8813
all.equal(dp.p, sqrt(var.p))      # 'dp.p' é igual à raiz quadrada de 'var.p'
## [1] TRUE
all.equal(dp.p^2, var.p)          # 'dp.p' ao quadrado é igual a 'var.p'
## [1] TRUE

Exemplo 2.81 Em Python.

import numpy as np

# Dados
dat = np.array([186, 402, 191, 20, 7, 124])

# Calculando o desvio padrão populacional
dp_p = np.std(dat, ddof=1) * np.sqrt((len(dat) - 1) / len(dat))
print(dp_p)  # Output: 141.6055789098392

# Calculando a variância populacional (como no exemplo anterior)
var_p = np.var(dat, ddof=0) * (len(dat) - 1) / len(dat)

# Verificando se dp_p é igual à raiz quadrada de var_p
print(np.allclose(dp_p, np.sqrt(var_p)))  # Output: True

# Verificando se dp_p ao quadrado é igual a var_p
print(np.allclose(dp_p**2, var_p))  # Output: True

Exemplo 2.82 Do Exemplo 2.78 sabe-se que a variância amostral do conjunto de dados 186, 402, 191, 20, 7 e 124 é \(s^{2}_{6}= 20871.2\). Assim, o desvio padrão amostral é \[s_{6} = \sqrt{20871.2} \approx 144.4687.\]

dat <- c(186,402,191,20,7,124)    # dados
(dp.a <- sd(dat))                 # 'sd' calcula o desvio padrão amostral
## [1] 144.4687
all.equal(dp.a, sqrt(var.a))      # 'dp.a' é igual à raiz quadrada de 'var.a'
## [1] TRUE
all.equal(dp.a^2, var.a)          # 'dp.a' ao quadrado é igual a 'var.a'
## [1] TRUE

Exemplo 2.83 Em Python.

import numpy as np

# Dados
dat = np.array([186, 402, 191, 20, 7, 124])

# Calculando o desvio padrão amostral
dp_a = np.std(dat, ddof=1)
print(dp_a)  # Output: 155.0344260358981

# Calculando a variância amostral (como no exemplo anterior)
var_a = np.var(dat, ddof=1)

# Verificando se dp_a é igual à raiz quadrada de var_a
print(np.allclose(dp_a, np.sqrt(var_a)))  # Output: True

# Verificando se dp_a ao quadrado é igual a var_a
print(np.allclose(dp_a**2, var_a))  # Output: True

Assim, se o conjunto de dados deste exemplo representar uma amostra observada em 6 vezes que se contou o número de passos até a lixeira mais próxima, pode-se dizer que o desvio padrão (amostral, claro) é de aproximadamente 144.5 passos. Pode-se pensar neste valor como uma oscilação média aproximada em torno da média aritmética.

2.4.4 Coeficiente de variação

O coeficiente de variação é uma medida de comparação de variabilidades, uma vez que ajusta o desvio padrão pela média. É uma grandeza adimensional, i.e., não possui unidade de medida. Tal característica torna quaisquer conjuntos de dados comparáveis em termos de variabilidade.

As fórmulas do coeficiente de variação universal e amostral são dadas respectivamente pelas equações (2.37) e (2.38). \[\begin{equation} \gamma = \frac{\sigma}{\mu} \tag{2.37} \end{equation}\]

\[\begin{equation} \hat{\gamma} = g = \frac{s}{\bar{x}} \tag{2.38} \end{equation}\]

Exemplo 2.84 (Coeficiente de variação) Duas variáveis são obtidas em um certo experimento químico. A variável \(X\) é medida em mililitros, com média de 0.0045 mL e desvio padrão de 0.0056 mL. A variável \(Y\) é medida em mols com média de 3549 mol e desvio padrão de 419 mol. O coeficiente de variação de \(X\) é dado por \(g_X=\frac{0.0056}{0.0045} \approx 1.24\), e de \(Y\) por \(g_Y=\frac{419}{3549} \approx 0.12\). Portanto, como \(1.24 > 0.12\), conclui-se que o conjunto de dados \(X\) varia mais do que \(Y\).

# Coeficiente de variação de X
mx <- 0.0045
dx <- 0.0056
round(gx <- dx/mx, 2)
## [1] 1.24
# Coeficiente de variação de Y
my <- 3549
dy <- 419
round(gy <- dy/my, 2)
## [1] 0.12

Exemplo 2.85 Em Python.

import numpy as np

# Coeficiente de variação de X
mx = 0.0045
dx = 0.0056
gx = dx / mx
print(round(gx, 2))  # Output: 1.24

# Coeficiente de variação de Y
my = 3549
dy = 419
gy = dy / my
print(round(gy, 2))  # Output: 0.12

2.4.5 Amplitude Interquartílica

Conforme (DeGroot and Schervish 2012, 233), a amplitude interquartílica é o tamanho do intervalo que contém a metade central da distribuição.

\[\begin{equation} IQR = Q_3-Q_1 \tag{2.39} \end{equation}\]

Exemplo 2.86 Pode-se calcular a amplitude interquartílica do conjunto de dados \(186,402,191,20,7,124\). Note que a função stats::IQR() depende do argumento type, tal como stats::quantile(). Nas duas funções utiliza-se por padrão o algoritmo \(\hat{Q}_7(p)\) conforme (Hyndman and Fan 1996), ou type=7.

x <- c(186,402,191,20,7,124)
IQR(x)
## [1] 143.75
quantile(x,3/4)-quantile(x,1/4)
##    75% 
## 143.75

Exemplo 2.87 Em Python.

import numpy as np

x = np.array([186, 402, 191, 20, 7, 124])

# Calculando a amplitude interquartil (IQR)
iqr = np.quantile(x, 0.75) - np.quantile(x, 0.25)
print(iqr)  # Output: 163.5

# Calculando o IQR usando a função IQR() do numpy
print(np.quantile(x, 3/4) - np.quantile(x, 1/4))  # Output: 163.5

2.4.6 Desvio Absoluto Mediano

Conforme (DeGroot and Schervish 2012, 670), o desvio absoluto mediano de uma variável aleatória \(X\) é a mediana da distribuição de \(|X−Md|\), onde \(Md\) é a mediana de \(X\).

\[\begin{equation} MAD = 1.4826 |x - Md|_{\left( \frac{1+n}{2} \right)} \tag{2.40} \end{equation}\]

De acordo com a documentação de stats::mad(), a amplitude interquartílica é mais simples que o desvio absoluto mediano, mas menos robusta. A constante padrão \(\frac{1}{\Phi^{-1}(3/4)} \approx 1.4826\) ou 1/qnorm(3/4) garante consistência, ou seja, \(E[MAD( X_1,\ldots,X_n)] = \sigma\) para \(X_i\) distribuído como \(\mathcal{N}(\mu, \sigma^2)\) e \(n\) grande.

Exemplo 2.88 Pode-se calcular o desvio absoluto mediano do conjunto de dados \(186,402,191,20,7,124\).

x <- c(186,402,191,20,7,124)
mad(x)
## [1] 126.7623
1.4826*median(abs(x-median(x)))
## [1] 126.7623

Exemplo 2.89 Em Python.

import numpy as np

x = np.array([186, 402, 191, 20, 7, 124])

# Calculando o desvio absoluto mediano (MAD)
mad = 1.4826 * np.median(np.abs(x - np.median(x)))
print(mad)  # Output: 110.795

Exercício 2.13 Considere a Eq. (2.40).

  1. Quais as consequências se \(X_i\) não for distribuído como \(\mathcal{N}(\mu, \sigma^2)\)?
  2. O que seria \(n\) grande?
  3. Quais as consequências se \(n\) não for grande?
  4. Quais as associações entre a violação simultânea da normalidade de \(X_i\) e o tamanho do \(n\)?

Referências


  1. Se você ficou confuso com a notação, escreva \(\sigma^2= V\) e \(\sigma=D\) (bem como \(s^2=v\) e \(s=d\)) e repense o problema.↩︎