4.4 Técnicas de amostragem
(Tillé and Matei 2023) apresentam o pacote sampling
, com funções para extrair amostras aleatórias usando diferentes esquemas de amostragem. O pacote survey
(Lumley 2004), (Lumley 2010), (Lumley 2024) fornece ferramentas variadas para análise de amostras complexas de pesquisa. (Diallo 2021) traz o pacote samplics
para Python, que realiza ponderação e análise de amostras complexas.
4.4.1 Amostragem Aleatória Simples
Amostragem aleatória simples (AAS) é o método mais simples e mais importante para a seleção de uma amostra. Além de servir como um plano próprio, o seu procedimento é usado de modo repetido em procedimentos de múltiplos estágios. (Bolfarine and Bussab 2005, 61)
Seguindo (Bolfarine and Bussab 2005, 61), a AAS pode ser caracterizada através da definição operacional “de uma lista com \(N\) unidades elementares, sorteiam-se com igual probabilidade \(n\) unidades”. Esta método requer uma lista completa da população para ser realizado, o que eventualmente pode ser um limitante já que nem sempre é possível obter tal listagem. Os planos amostrais A e B discutidos nos Exemplos 4.16, 4.19 e 4.20 são caracterizados como AAS.
4.4.1.1 AAS sem reposição - AASs
Caso a unidade sorteada seja retirada da população e seja realizado um novo sorteio, é dito que procedeu-se com uma AAS restrita ou sem reposição, indicado por AASs.
Exemplo 4.28 (AASs) De uma urna com \(N\) cartões numerados de \(1\) a \(N\) sorteia-se um ao acaso, com probabilidade \(1/N\). O cartão sorteado é deixado de fora da urna e realiza-se um novo sorteio, onde cada um dos \(N-1\) cartões restantes tem probabilidade \(1/(N-1)\) de ser retirado. Este procedimento é repetido até que se concluam todos os \(n\) sorteios desejados. Este é um processo de AAS sem reposição.
Exercício 4.8 Defina as probabilidades de sorteio do Exemplo 4.28 considerando \(n=3\) sorteios.
Exercício 4.9 Calcule as probabilidades de sorteio do Exemplo 4.28 considerando \(n=3\) sorteios e \(N=10\).
Exemplo 4.29 (Mega-Sena da Caixa Econômica Federal) No R pode-se sortear uma amostra sem reposição para tentar a sorte no jogo da Caixa Econômica Federal. Note que \(N=60\) e \(n=6\).
set.seed(1234) # Fixando a geração pseudo-aleatória
sort(sample(1:60, size = 6, replace = F)) # Apostando na Mega-Sena
## [1] 16 22 28 37 44 58
Exemplo 4.30 Em Python.
import numpy as np
# Define a semente para reprodutibilidade
np.random.seed(1234)
# Amostra aleatória sem reposição de 6 números entre 1 e 60
numeros = np.random.choice(np.arange(1, 61), size=6, replace=False)
# Ordena os números e imprime o resultado
print(np.sort(numeros)) # Output: [16 22 28 37 44 58]
Exercício 4.10 Leia a documentação das funções utilizadas no Exemplo 4.29.
base::set.seed()
.base::sort()
.base::sample()
.
4.4.1.2 AAS com reposição - AASc
Caso a unidade sorteada tenha a chance de participar novamente da amostra, o procedimento é chamado AAS irrestrita ou com reposição, indicado por AASc.
Exemplo 4.31 (AASc) De uma urna com \(N\) cartões numerados de \(1\) a \(N\) sorteia-se um ao acaso, com probabilidade \(1/N\). O cartão sorteado é recolocado na urna e realiza-se um novo sorteio. Este procedimento é repetido até que se concluam todos os \(n\) sorteios desejados. Este é um processo de AAS com reposição.
Exercício 4.11 Defina as probabilidades de sorteio do Exemplo 4.31 considerando \(n=3\) sorteios.
Exercício 4.12 Calcule as probabilidades de sorteio do Exemplo 4.31 considerando \(n=3\) sorteios com \(N=10\).
4.4.2 Amostragem Estratificada
Amostragem estratificada consiste na divisão de uma população em grupos (estratos) segundo alguma(s) característica(s) conhecida(s) na populaçãao sob estudo, e de cada um desses estratos são selecionadas amostras em proporções convenientes. (Bolfarine and Bussab 2005, 93)
O objetivo deste tipo de amostragem é que o pesquisador possa se valer de estruturas pré-existentes de maneira a melhorar as inferências, reduzindo sua variabilidade.
Exemplo 4.32 Exemplo adaptado da documentação de sampling::strata()
e de (An and Watts 1998), no qual gera-se uma matriz \(235 \times 3\) com as colunas renda
, estado
e região
.
renda
é gerada aleatoriamenteestado
tem 2 categorias (E1, E2).região
tem 3 categorias (R1, R2, R3).- o quadro de amostragem é estratificado por região dentro do estado.
Retira-se uma amostra de tamanho \(n=35\) a partir do método srswor
, amostragem aleatória simples (com igual probabilidade) sem reposição.
library(sampling)
# Dados
data <- rbind(matrix(rep('E1', 165), 165, 1, byrow = TRUE),
matrix(rep('E2',70), 70, 1, byrow = TRUE))
data <- cbind.data.frame(data, c(rep('R1',100), rep('R2',50),
rep('R3',15), rep('R1',30),
rep('R2',40)), 1000*runif(235))
names(data) <- c('state', 'region', 'income')
dim(data)
## [1] 235 3
##
## E1 E2
## R1 100 30
## R2 50 40
## R3 15 0
# Amostra estratificada de tamanho 35 por região e estado
set.seed(42)
s <- sampling::strata(data, c('region','state'),
size = c(10,5,10,4,6), method = 'srswor')
# Tabela de contingência da amostra
table(s$region, s$state)
##
## E1 E2
## R1 10 4
## R2 5 6
## R3 10 0
## [1] 35 6
Exemplo 4.33 Em Python.
import pandas as pd
import numpy as np
from samplics import Stratified
# Dados
data = pd.DataFrame({
'state': ['E1']*165+['E2']*70,
'region': ['R1']*100+['R2']*50+['R3']*15+['R1']*30+['R2']*40,
'income': 1000*np.random.rand(235)
})
# Dimensões do DataFrame
print(data.shape) # Output: (235, 3)
# Tamanhos dos estratos populacionais
print(pd.crosstab(data['region'], data['state']))
# Amostragem estratificada usando samplics
strata = Stratified(method='srswor')
s = strata.sample(data['income'], stratum=data[['region', 'state']],
allocation=[10, 5, 10, 4, 6], random_seed=42)
# Tabela de contingência da amostra (aproximada)
print(pd.crosstab(data.loc[s.index, 'region'],
data.loc[s.index, 'state']))
# Dimensões da amostra
print(len(s.index))
4.4.2.1 Amostragem por Quotas
[Q]uota sampling may be described as stratified sampling with a more or less nonrandom selection of units within strata. (Cochran 1977, 136)
Exemplo 4.34 Suponha que em uma cidade os eleitores estejam distribuídos conforme a tabela a seguir.
## escolaridade
## sexo Fundamental Médio Superior Sum
## Feminino 0.15 0.28 0.09 0.52
## Masculino 0.14 0.24 0.10 0.48
## Sum 0.29 0.53 0.19 1.00
Se for realizada uma amostragem por quotas de \(n=200\) eleitores, deve-se entrevistar o seguinte número de pessoas:
## escolaridade
## sexo Fundamental Médio Superior Sum
## Feminino 30 56 18 104
## Masculino 28 48 20 96
## Sum 58 106 38 200
4.4.3 Amostragem por Conglomerados
O que caracteriza bem o planejamento amostral de conglomerados é que a unidade amostral contém mais de um elemento populacional. (Bolfarine and Bussab 2005, 159)
Exemplo 4.35 Adaptado da documentação de sampling::cluster()
a partir dos dados sampling::swissmunicipalities
, com informações sobre os municípios suíços em 2003. A variável REG
tem 7 categorias na população e é usada como variável de conglomerado. O tamanho da amostra é 3, e o método é amostragem aleatória simples sem reposição.
## [1] 2896 22
##
## 1 2 3 4 5 6 7
## 589 913 321 171 471 186 245
# Amostragem por conglomerado
cl <- sampling::cluster(swissmunicipalities, clustername = c('REG'),
size = 3, method = 'srswor')
# Conglomerados amostrais
table(cl$REG)
##
## 5 6 7
## 471 186 245
## [1] 902 24
Exemplo 4.36 Em Python.
import pandas as pd
import numpy as np
from samplics import Cluster
# Carregando os dados do swissmunicipalities
url = "https://filipezabala.com/data/swissmunicipalities.csv"
swissmunicipalities = pd.read_csv(url)
# Dimensões do DataFrame
print(swissmunicipalities.shape)
# Tamanhos dos conglomerados populacionais
print(swissmunicipalities['REG'].value_counts())
# Amostragem por conglomerado usando samplics
cluster = Cluster(method='srswor')
cl = cluster.sample(swissmunicipalities['POPTOT'],
cluster=swissmunicipalities['REG'],
n=3, random_seed=42)
# Conglomerados amostrais (aproximado)
sampled_clusters = swissmunicipalities.loc[cl.index]['REG'].unique()
print(swissmunicipalities[swissmunicipalities['REG'].isin(sampled_clusters)]['REG'].value_counts())
# Dimensões da amostra
print(len(cl.index))
4.4.4 Amostragem Sistemática
A vantagem principal da amostragem sistemática (AS) é a facilidade de sua execução. Também, é bem menos sujeita a erros do entrevistador que os outros esquemas de amostragem. (Bolfarine and Bussab 2005, 181)
Considere uma população de \(N\) unidades elementares numeradas de 1 a \(N\). Para selecionar uma amostra de \(n\) observações sorteia-se aleatoriamente uma das primeiras \(k=N/n\) unidades, digamos \(a\), com probabilidade \(1/k\) selecionando sistematicamente as próximas observações a cada \(k\) unidades. Matematicamente, \[a, a+k, a+2k, \ldots, a+(n-1)k.\]
Exemplo 4.37 Seja uma população com \(N=100\), da qual deseja-se retirar uma amostra sistemática de tamanho \(n=5\). Neste caso \(k=100/5=20\), então sortearmos aleatoriamente um número entre 1 e 20 com probabilidade \(1/20\). Se o número sorteado for \(a=4\), a amostra sistemática então é definida como \[4, 4+20, 4+2 \times 20, 4+3 \times 20, 4+4 \times 20 = 4,24,44,64,84.\]
## [1] 20
set.seed(1) # Fixando a geração pseudo-aleatória
(a <- sample(1:k, size = 1)) # Amostra de tamanho 1 com prob. 1/k
## [1] 4
## [1] 4
## [1] 24
## [1] 44
## [1] 64
## [1] 84
Exemplo 4.38 Em Python.
import numpy as np
# Parâmetros
N = 100 # Tamanho da população
n = 5 # Tamanho da amostra
# Calculando o tamanho do salto
k = N / n # Resultado: 20.0
# Fixando a semente para reprodutibilidade
np.random.seed(1)
# Sorteando o primeiro elemento da amostra
a = np.random.randint(1, k + 1) # Resultado: 17
# Gerando a amostra sistemática
amostra = [a + i * k for i in range(n)]
# Imprimindo a amostra
print(amostra) # Output: [17.0, 37.0, 57.0, 77.0, 97.0]
Exercício 4.13 Considere o código do Exemplo 4.37.
a. Rode o código repetidas vezes retirando a linha set.seed(1)
. O que você observa?
b. Refaça o exercício considerando outros valores de \(N\) e \(n\), tais que \(n<N\).