A crescente complexidade dos estudos científicos em sanidade e produção animal exige o domínio de métodos estatísticos robustos, capazes de lidar com dados não convencionais, assimétricos, categóricos ou de pequena amostragem — características frequentemente observadas em estudos clínicos, zootécnicos e epidemiológicos. A Estatística Não-Paramétrica oferece um conjunto poderoso de ferramentas para analisar esses dados de forma rigorosa, sem a exigência de pressupostos de normalidade ou homogeneidade de variâncias, muitas vezes inviáveis na prática.
Essa disciplina se justifica por sua abordagem aprofundada e aplicada, sendo uma continuidade do conteúdo introdutório já ofertado anteriormente. Ela visa não apenas consolidar os fundamentos dos testes não-paramétricos, mas também expandir a capacidade analítica dos pós-graduandos, introduzindo técnicas avançadas como análise de odds ratio, curvas ROC, regressão logística, análise de dados ordinais e interpretação do tamanho de efeito.
Ao final da disciplina, espera-se que o aluno seja capaz de aplicar os testes estatísticos mais apropriados ao seu problema de pesquisa, interpretar os resultados com criticidade e comunicar suas análises com precisão, contribuindo para a qualidade metodológica da produção científica na área.
Aprofundar os conhecimentos teórico-práticos em estatística não-paramétrica, capacitando os pós-graduandos a selecionar, aplicar e interpretar adequadamente métodos estatísticos avançados em estudos envolvendo dados não paramétricos nas áreas de sanidade e produção animal, com foco em análise crítica, tomada de decisão baseada em evidências e aplicação em dados reais de pesquisa.
set.seed(123)
# Carregar pacotes
library(dplyr)
# 1. Mann-Whitney (Wilcoxon rank sum test)
# Exemplo: Peso de frangos em 2 dietas diferentes
dados_mw <- data.frame(
Grupo = rep(c("Dieta1", "Dieta2"), each = 50),
Peso = c(rnorm(50, 2500, 150), rnorm(50, 2600, 140))
)
wilcox.test(Peso ~ Grupo, data = dados_mw)
# 2. Wilcoxon Pareado
# Exemplo: Contagem de células somáticas em leite antes e depois do tratamento
dados_wilcox <- data.frame(
Animal = factor(1:50),
Antes = rnorm(50, 400, 100),
Depois = rnorm(50, 350, 90)
)
wilcox.test(dados_wilcox$Antes, dados_wilcox$Depois, paired = TRUE)
# 3. Friedman
# Exemplo: Escore de diarreia em 3 protocolos em 10 leitões (medido 3 vezes)
dados_friedman <- data.frame(
Leitão = factor(rep(1:10, each = 3)),
Protocolo = factor(rep(c("A", "B", "C"), times = 10)),
Escore = c(
1, 2, 1,
2, 2, 3,
1, 1, 2,
3, 2, 3,
2, 3, 3,
1, 1, 2,
3, 3, 3,
2, 2, 2,
1, 2, 2,
3, 3, 2
)
)
friedman.test(Escore ~ Protocolo | Leitão, data = dados_friedman)
# 4. Kruskal-Wallis
# Exemplo: Conversão alimentar em 3 raças de suínos
dados_kruskal <- data.frame(
Raca = rep(c("Raça1", "Raça2", "Raça3"), each = 30),
Conversao = c(
rnorm(30, 3.2, 0.4),
rnorm(30, 3.5, 0.5),
rnorm(30, 3.8, 0.3)
)
)
kruskal.test(Conversao ~ Raca, data = dados_kruskal)
# 5. Qui-quadrado de Independência
# Exemplo: Associação entre manejo e doença respiratória (dados categóricos)
dados_chi <- matrix(c(40, 10, 30, 20),
nrow = 2,
dimnames = list(Manejo = c("Convencional", "Orgânico"),
Doenca = c("Presente", "Ausente")))
chisq.test(dados_chi)
# 6. Teste Exato de Fisher
# Exemplo: Associação entre micotoxinas e enterite (pequeno grupo)
dados_fisher <- matrix(c(3, 1, 1, 5),
nrow = 2,
dimnames = list(Micotoxinas = c("Sim", "Não"),
Enterite = c("Sim", "Não")))
fisher.test(dados_fisher)
Sanidade em Aves: Comparar a contagem de células somáticas no leite antes e depois de um tratamento para mastite.
Produção em Suínos: Comparar o ganho de peso de suínos antes e depois de um suplemento nutricional.
Sanidade em Suínos: Avaliar a gravidade do escore de diarreia em leitões submetidos a três diferentes protocolos terapêuticos, medidos em três momentos diferentes.
Produção em Aves: Comparar a produção de ovos de galinhas sob três diferentes sistemas de iluminação ao longo de três períodos.
Sanidade em Aves: Comparar o nível de anticorpos contra um vírus entre aves de três diferentes granjas.
Produção em Suínos: Comparar a conversão alimentar entre suínos de três diferentes raças.
Sanidade em Suínos: Verificar associação entre presença/ausência de doença respiratória e tipo de manejo (convencional vs. orgânico).
Produção em Aves: Verificar associação entre tipo de alojamento (individual, coletivo) e ocorrência de mortalidade.
Sanidade em Aves: Analisar associação entre presença de micotoxinas na ração e ocorrência de enterite em um pequeno grupo de aves.
Produção em Suínos: Verificar associação entre uso de vacina e ocorrência de aborto em um pequeno lote de porcas.
# Criar base bruta (mesmo exemplo)
exposicao_inadequada <- data.frame(
exposicao = 1,
doenca = c(rep(1, 40), rep(0, 60))
)
exposicao_adequada <- data.frame(
exposicao = 0,
doenca = c(rep(1, 20), rep(0, 80))
)
dados <- rbind(exposicao_inadequada, exposicao_adequada)
# Construir tabela 2x2
tab <- table(dados$exposicao, dados$doenca)
tab
# linhas = exposição, colunas = doença
# Doente Saudável
# Exposto 40 60
# Não exposto 20 80
# Extrair valores
a <- tab[2,2] # corrigir a ordem se necessário
a <- tab["1","1"]
b <- tab["1","0"]
c <- tab["0","1"]
d <- tab["0","0"]
# Riscos
risco_expostos <- a / (a + b)
risco_nao_expostos <- c / (c + d)
# Risco Relativo (RR)
RR <- risco_expostos / risco_nao_expostos
# Odds Ratio (OR)
odds_expostos <- a / b
odds_nao_expostos <- c / d
OR <- odds_expostos / odds_nao_expostos
# Mostrar resultados
cat("Risco relativo (RR):", RR, "\n")
cat("Razão de chances (OR):", OR, "\n")
########## Utilizando o pacote epitools ##########
# Calcular medidas epidemiológicas
library(epitools)
# Risco relativo
rr <- riskratio(dados)
rr
# Odds ratio
or <- oddsratio(dados)
or
# Pacotes
library(pROC)
library(ggplot2)
set.seed(2025)
# Simulação simples (para reproduzir qualitativamente os números do enunciado)
n <- 120
prev <- 0.30
n_pos <- round(n * prev) # 36
n_neg <- n - n_pos # 84
# gerar escores: positivos tendem a EC maiores
scores_pos <- rnorm(n_pos, mean = 7.0, sd = 0.6) # EC (mS/cm) ~ médias maiores
scores_neg <- rnorm(n_neg, mean = 5.9, sd = 0.7)
scores <- c(scores_pos, scores_neg)
y <- c(rep(1, n_pos), rep(0, n_neg))
dados<-as.data.frame(cbind(scores,y))
# opcional: visualizar primeiras linhas
head(dados)
# ROC
roc_obj <- roc(dados$y, dados$scores, quiet = TRUE)
auc(roc_obj)
# plot básico
plot(roc_obj, main = paste0("ROC - EC para Mastite (AUC = ", round(auc(roc_obj), 3), ")"))
abline(a = 0, b = 1, lty = 2, col = "gray")
# threshold T0 = 6.5
thr0 <- 6.5
pred0 <- ifelse(scores >= thr0, 1, 0)
cm0 <- table(factor(y, levels = c(1,0)), factor(pred0, levels = c(1,0)))
cm0
# cm0: rows = pred (1,0); cols = truth (1,0)
# extrair TP,FP,FN,TN
TP <- cm0["1","1"]; FP <- cm0["1","0"]; FN <- cm0["0","1"]; TN <- cm0["0","0"]
Se <- TP / (TP + FN); Sp <- TN / (TN + FP)
VPP <- TP / (TP + FP); VPN <- TN / (TN + FN)
cat("Threshold 6.5 — Se=", round(Se,4), " Sp=", round(Sp,4), " VPP=", round(VPP,4), " VPN=", round(VPN,4), "\n")
# Youden best threshold
coords_best <- coords(roc_obj, "best", best.method = "youden", ret = c("threshold","sensitivity","specificity"))
coords_best
# Dados simulados
set.seed(123)
trat <- rep(c("A", "B"), each = 50)
doente <- rbinom(100, 1, prob = ifelse(trat == "A", 0.3, 0.6))
dados <- data.frame(trat, doente)
modelo <- glm(doente ~ trat, family = binomial, data = dados)
summary(modelo)
exp(coef(modelo)) # OR ajustada
library(MASS)
# Escore ordinal simulado
nivel <- factor(c("leve", "moderado", "grave"), ordered = TRUE)
trat <- factor(rep(c("A", "B"), each = 50))
escore <- sample(nivel, 100, replace = TRUE)
dados <- data.frame(trat, escore)
modelo <- polr(escore ~ trat, data = dados, Hess = TRUE)
summary(modelo)
library(effsize)
# r de Rosenthal para Mann-Whitney
x <- c(10, 12, 13, 15)
y <- c(8, 9, 7, 6)
mw <- wilcox.test(x, y)
effectsize::rank_biserial(x, y)