Nesta pagina voce iras encontrar todos os exemplos usados na seccao da “Analise de dados dos inqueritos” usando R. Este curso foi ministrado ao pessoal do Instituto Nacional de Saúde, Marracuene, Moçambique em 2025.
#################################################################
################# Amostragem Sistemática in R ###################
#################################################################
# 1. População (pode ser um vetor com nomes, números, etc.)
populacao <- 1:100 # ou por exemplo: c("Ana", "Bruno", "Carlos", ...)
# 2. Tamanho da amostra desejada
n_amostra <- 10
# 3. Tamanho da população
N <- length(populacao)
# 4. Calcular o intervalo (k)
k <- floor(N / n_amostra)
# 5. Escolher um ponto de partida aleatório entre 1 e k
set.seed(123) # Para reprodutibilidade
ponto_inicial <- sample(1:k, 1)
# 6. Selecionar a amostra sistemática
indices <- seq(from = ponto_inicial, by = k, length.out = n_amostra)
amostra <- populacao[indices]
# 7. Mostrar a amostra
print(amostra)
## [1] 3 13 23 33 43 53 63 73 83 93
#################################################################
################ Amostragem estratificada #######################
#################################################################
#Exercício 2: Amostragem estratificada proporcional
# Instalar pacote se necessário
# install.packages("dplyr")
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.1
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# 1. Criar a base de dados simulada
set.seed(123) # Para reprodutibilidade
turno <- c(rep("Manhã", 200), rep("Tarde", 150), rep("Noite", 150))
id <- 1:500
dados <- data.frame(ID = id, Turno = turno)
head(dados, 10)
## ID Turno
## 1 1 Manhã
## 2 2 Manhã
## 3 3 Manhã
## 4 4 Manhã
## 5 5 Manhã
## 6 6 Manhã
## 7 7 Manhã
## 8 8 Manhã
## 9 9 Manhã
## 10 10 Manhã
# 2. Verificar a proporção dos estratos
table(dados$Turno)
##
## Manhã Noite Tarde
## 200 150 150
# 3. Calcular o tamanho da amostra proporcional por turno
# Queremos uma amostra total de 50 alunos
proporcao <- prop.table(table(dados$Turno)) # proporção de cada turno
proporcao
##
## Manhã Noite Tarde
## 0.4 0.3 0.3
n_total <- 50
n_amostra <- round(proporcao * n_total) # tamanho proporcional por estrato
n_amostra
##
## Manhã Noite Tarde
## 20 15 15
# Amostragem estratificada com alocação igual (não proporcional)
set.seed(456)
setor <- c(rep("Administracao", 30), rep("Producao", 50), rep("Vendas", 20))
dados <- data.frame(id = 1:100, setor)
table(dados$setor)
##
## Administracao Producao Vendas
## 30 50 20
amostra_igual <- dados %>%
group_by(setor) %>%
sample_n(5)
table(amostra_igual$setor)
##
## Administracao Producao Vendas
## 5 5 5
###########################################################################
###################### Amostragem por conglomerado ########################
###########################################################################
# Amostragem por conglomerado simples (1 estágio)
# Passo 1 – Criar os dados simulados
set.seed(123)
escolas <- paste0("Escola_", 1:10)
# Criar base com 10 escolas × 20 alunos = 200 linhas
dados <- data.frame(escola = rep(escolas, each = 20), aluno_id = 1:200, nota = round(rnorm(200, mean = 14, sd = 2), 1)) # notas simuladas
head(dados)
## escola aluno_id nota
## 1 Escola_1 1 12.9
## 2 Escola_1 2 13.5
## 3 Escola_1 3 17.1
## 4 Escola_1 4 14.1
## 5 Escola_1 5 14.3
## 6 Escola_1 6 17.4
# Passo 2 – Selecionar 3 escolas aleatórias (conglomerados)
escolas_amostradas <- sample(unique(dados$escola), size = 3)
escolas_amostradas
## [1] "Escola_7" "Escola_3" "Escola_1"
#Passo 3 – Selecionar todos os alunos dessas escolas
amostra <- dados %>% filter(escola %in% escolas_amostradas)
table(amostra$escola)
##
## Escola_1 Escola_3 Escola_7
## 20 20 20
# Amostragem por conglomerado em 2 estágios
# Etapa 1: selecionar 3 escolas
set.seed(456)
escolas_amostradas <- sample(unique(dados$escola), size = 3)
escolas_amostradas
## [1] "Escola_5" "Escola_3" "Escola_6"
# Etapa 2: dentro de cada escola, selecionar 5 alunos
amostra_2estagios <- dados %>%
filter(escola %in% escolas_amostradas) %>%
group_by(escola) %>%
sample_n(5)
amostra_2estagios
## # A tibble: 15 × 3
## # Groups: escola [3]
## escola aluno_id nota
## <chr> <int> <dbl>
## 1 Escola_3 54 16.7
## 2 Escola_3 49 15.6
## 3 Escola_3 55 13.5
## 4 Escola_3 51 14.5
## 5 Escola_3 47 13.2
## 6 Escola_5 88 14.9
## 7 Escola_5 94 12.7
## 8 Escola_5 93 14.5
## 9 Escola_5 85 13.6
## 10 Escola_5 84 15.3
## 11 Escola_6 115 15
## 12 Escola_6 117 14.2
## 13 Escola_6 106 13.9
## 14 Escola_6 108 10.7
## 15 Escola_6 105 12.1
#Verificando o total por escola:
table(amostra_2estagios$escola)
##
## Escola_3 Escola_5 Escola_6
## 5 5 5
#Amostragem por múltiplos estágios (2 estágios) (Cont.)
# Dados
estrato <- c("Urbano", "Rural")
N_loc <- c(50, 100)
n_loc <- c(10, 20)
domic_por_loc <- c(300, 200)
domic_sel <- c(15, 10)
respostas <- c(120, 180)
# Probabilidades
P1 <- n_loc/N_loc
P2 <- domic_sel/domic_por_loc
P_total <- P1 * P2
P1
## [1] 0.2 0.2
P2
## [1] 0.05 0.05
P_total
## [1] 0.01 0.01
# Peso inicial
peso_inicial <- 1 / P_total
# Ajuste por não resposta
peso_ajustado <- peso_inicial * (domic_sel * n_loc) / respostas
# Resultado
data.frame(Estrato = estrato, Prob_1 = P1, Prob_2 = P2, Peso_Inicial = peso_inicial, Respostas = respostas, Peso_Ajustado = round(peso_ajustado, 1))
## Estrato Prob_1 Prob_2 Peso_Inicial Respostas Peso_Ajustado
## 1 Urbano 0.2 0.05 100 120 125.0
## 2 Rural 0.2 0.05 100 180 111.1