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