UE Cirurgia: 8.40 | UE Medicamento: 7.00
Escolha prescritiva: Cirurgia
Teoria da Decisão, Sistemas de Apoio à Decisão e Hierarquia DIKW
PPGMDS - UFPB - Programa de Pós-Graduação em Modelagem de Decisão e Saúde
julho, 2026
“A boa decisão não é a que garante o melhor resultado, mas a que é tomada da melhor forma possível com a informação disponível.”
— adaptado de H. A. Simon
Esta é a Parte I da disciplina (Profa. Marcelo Ferreira). A Parte II, com o Prof. Eufrásio Lima Neto, tratará de Ética em IA e Aprendizagem de Máquina.
Caso (Sauter, 2010): o Jewish Hospital Healthcare Services utilizou um SAD focado em produtividade e contabilidade de custos.
Importante
Uma decisão correta pode ter desfecho ruim por azar; uma decisão mal informada pode ter desfecho bom por sorte. Avaliamos o processo, não apenas o resultado.
Fluxo clássico de Simon para o processo de tomada de decisão.
| Aspecto | Normativa | Descritiva | Prescritiva |
|---|---|---|---|
| Pergunta | Como decidir idealmente? | Como as pessoas de fato decidem? | Como ajudar a decidir melhor? |
| Base | Racionalidade matemática | Psicologia, observação empírica | Síntese das duas anteriores |
| Papel do SAD | Fornece o algoritmo ótimo | Explica por que o algoritmo é ignorado | Desenha a ferramenta que será usada |
| Limitação | Ignora a cognição humana real | Não prescreve melhorias | Depende de boas evidências descritivas |
Exemplo: um medicamento barato (econômica) mas sem registro na ANVISA (legal) não é viável.
Custo · Retorno
Eficácia clínica
Conformidade
Responsabilidade
Infraestrutura
Poder · Agendas
Um SAD bem desenhado permite avaliar uma decisão sob múltiplas dessas facetas simultaneamente.
Exemplo: escolha entre dois fornecedores de seringas com preço e prazo garantidos contratualmente.
Exemplo: cirurgia cardíaca com 5% de risco de mortalidade tabelado na literatura.
Avalia opções ponderando o valor do desfecho pela sua probabilidade:
\[EU(A) = \sum_{i} P(O_i \mid A) \cdot U(O_i)\]
Usado em estudos de custo-efetividade na saúde, balanceando tratamentos conservadores vs. invasivos.
Avaliar Tratamento Cirúrgico (80% cura plena \(U=10\), 20% falha \(U=2\)) vs. Tratamento Medicamentoso (100% cura parcial \(U=7\)).
UE Cirurgia: 8.40 | UE Medicamento: 7.00
Escolha prescritiva: Cirurgia
library(ggplot2)
df_amb <- data.frame(
ambiente = factor(c("Certeza","Risco","Incerteza"),
levels=c("Certeza","Risco","Incerteza")),
conhecimento = c(3, 2, 1)
)
ggplot(df_amb, aes(x=ambiente, y=conhecimento, fill=ambiente)) +
geom_col(width=0.55) +
scale_fill_manual(values=c("Certeza"="#7ecff7","Risco"="#f7c87e","Incerteza"="#f07050")) +
labs(title="Grau de Conhecimento sobre os Resultados",
x="", y="Conhecimento sobre desfechos", fill="") +
theme_minimal(base_size=13) +
theme(legend.position="none")Exercício: um protocolo de triagem classifica pacientes em três níveis de prioridade. Calcule a utilidade esperada de internar vs. observar em casa um paciente com os dados abaixo, e decida a melhor conduta.
p_int_ok <- 0.95; u_int_ok <- 10; u_int_compl <- 3
p_obs_ok <- 0.80; u_obs_ok <- 10; u_obs_piora <- 4
ue_internar <- p_int_ok*u_int_ok + (1-p_int_ok)*u_int_compl
ue_observar <- p_obs_ok*u_obs_ok + (1-p_obs_ok)*u_obs_piora
cat(sprintf("UE Internar: %.2f\nUE Observar: %.2f\n", ue_internar, ue_observar))UE Internar: 9.65
UE Observar: 8.80
Conduta prescritiva: Internar
Exemplo: “O paciente X apresentou PA de 120/80 às 10h de hoje.”
Exemplo: “Alergia a penicilina requer uso de macrolídeos alternativos.”
Exemplo: considerar o contexto familiar do paciente antes de prescrever um tratamento doloroso, mesmo que estatisticamente ótimo.
| Nível | Pergunta | Exemplo Clínico | Quem/O quê Processa |
|---|---|---|---|
| Dado | — | “38,5” | Sensor, prontuário |
| Informação | Quem, O quê, Onde, Quando | “Paciente X, febre, 10h” | Dashboard |
| Conhecimento | Como, Por quê | “Febre + tosse sugere pneumonia” | Base de conhecimento / SAD |
| Sabedoria | Devo? | “Considerar fragilidade do idoso antes de internar” | Médico |
Exercício: classifique cada item abaixo no nível correto da hierarquia DIKW.
Importante
Falha clássica: código de valor ausente (“missing”) inserido como “999”, gerando uma falsa taquicardia na análise.
Identificar e corrigir valores de idade impossíveis e valores ausentes em um banco de pacientes.
ID Idade
1 1 45
2 2 999
3 3 NA
4 4 30
Após limpeza:
ID Idade
1 1 45.0
2 2 37.5
3 3 37.5
4 4 30.0
Exercício: o banco abaixo tem valores de pressão arterial sistólica com erros de digitação (valores impossíveis) e duplicatas. Identifique e trate os problemas.
“Decision Support Systems for Business Intelligence” (Sauter, 2010) é a referência central deste bloco.
| Aspecto | Orientado a Dados | Orientado a Modelos |
|---|---|---|
| Pergunta central | O que aconteceu? | Qual a melhor ação? |
| Insumo principal | Grande volume de dados históricos | Lógica matemática e restrições |
| Técnicas típicas | OLAP, mineração, dashboards | Otimização, simulação, árvores de decisão |
| Pergunta retrospectiva ou prospectiva | Retrospectiva | Prospectiva |
| Exemplo em saúde | Identificar comorbidades recorrentes | Definir escala ótima de plantões |
Simular a ocupação máxima de UTI variando o tempo médio de permanência dos pacientes.
set.seed(42)
simulacoes <- 1000
# Pacientes/dia segue Poisson; permanência (dias) segue Normal
pacientes_dia <- rpois(simulacoes, lambda = 5)
permanencia <- rnorm(simulacoes, mean = 7, sd = 2)
permanencia <- ifelse(permanencia < 1, 1, permanencia)
ocupacao_estimada <- pacientes_dia * permanencia
cat("Ocupação Máxima Simulada (percentil 95):",
round(quantile(ocupacao_estimada, 0.95), 1))Ocupação Máxima Simulada (percentil 95): 69.2
library(ggplot2)
set.seed(42)
df_sim <- data.frame(ocupacao = pacientes_dia * permanencia)
ggplot(df_sim, aes(x = ocupacao)) +
geom_histogram(fill = "#7ecff7", color = "#1a1a1a", bins = 30, alpha = 0.85) +
geom_vline(xintercept = quantile(df_sim$ocupacao, 0.95),
color = "#f07050", linetype = "dashed", linewidth = 1) +
annotate("text", x = quantile(df_sim$ocupacao, 0.95) + 3, y = 60,
label = "Percentil 95", color = "#f07050", size = 4, hjust = 0) +
labs(title = "Distribuição Simulada de Ocupação da UTI",
x = "Ocupação estimada (paciente-dia)", y = "Frequência") +
theme_minimal(base_size = 13)SAD Pessoal
SAD Institucional
Exercício: classifique cada cenário abaixo como SAD orientado a dados ou orientado a modelos.
cenario tipo
1 Cenário 1 Orientado a Dados
2 Cenário 2 Orientado a Modelos
3 Cenário 3 Orientado a Dados
4 Cenário 4 Orientado a Modelos
Exercício: compare, via simulação Monte Carlo, o tempo médio de espera no Pronto-Socorro sob dois cenários de chegada de pacientes (taxa normal vs. surto respiratório).
library(ggplot2)
set.seed(123)
n_sim <- 500
normal <- rpois(n_sim, lambda = 8)
surto <- rpois(n_sim, lambda = 16)
df_comp <- data.frame(
chegadas = c(normal, surto),
cenario = rep(c("Normal", "Surto Respiratório"), each = n_sim)
)
ggplot(df_comp, aes(x = chegadas, fill = cenario)) +
geom_density(alpha = 0.6) +
scale_fill_manual(values = c("Normal" = "#7ecff7", "Surto Respiratório" = "#f07050")) +
labs(title = "Simulação: Chegadas Diárias ao Pronto-Socorro",
x = "Número de chegadas/dia", y = "Densidade", fill = "") +
theme_minimal(base_size = 13)Retomando o exemplo de Cirurgia vs. Medicamento: como a decisão muda se a probabilidade de cura cirúrgica variar?
library(ggplot2)
p_seq <- seq(0.5, 1.0, by = 0.01)
ue_cir <- p_seq * 10 + (1 - p_seq) * 2
ue_med <- rep(7, length(p_seq))
df_sens <- data.frame(p = p_seq, Cirurgia = ue_cir, Medicamento = ue_med)
df_long <- reshape(df_sens, varying = c("Cirurgia", "Medicamento"),
v.names = "UE", timevar = "Opcao",
times = c("Cirurgia", "Medicamento"), direction = "long")
ggplot(df_long, aes(x = p, y = UE, color = Opcao)) +
geom_line(linewidth = 1.2) +
scale_color_manual(values = c("Cirurgia" = "#7ecff7", "Medicamento" = "#f7c87e")) +
geom_vline(xintercept = 0.8, color = "#f07050", linetype = "dashed") +
labs(title = "Sensibilidade da Decisão à Probabilidade de Cura Cirúrgica",
x = "P(cura plena | Cirurgia)", y = "Utilidade Esperada", color = "") +
theme_minimal(base_size = 13)Escolher entre Tomógrafo A e B avaliando Custo-Benefício (peso 0,6) e Qualidade de Imagem (peso 0,4). Notas de 1 a 10.
pesos <- c(custo_beneficio = 0.6, qualidade = 0.4)
Tomografo_A <- c(8, 7) # Bom custo-benefício, qualidade razoável
Tomografo_B <- c(4, 9) # Custo-benefício ruim, qualidade excelente
score_A <- sum(pesos * Tomografo_A)
score_B <- sum(pesos * Tomografo_B)
cat(sprintf("Tomógrafo A: %.2f | Tomógrafo B: %.2f\n", score_A, score_B))Tomógrafo A: 7.60 | Tomógrafo B: 6.00
Recomendação: Tomógrafo A
library(ggplot2)
df_mcdm <- data.frame(
equipamento = rep(c("Tomógrafo A", "Tomógrafo B"), each = 2),
criterio = rep(c("Custo-Benefício", "Qualidade"), 2),
nota = c(8, 7, 4, 9)
)
ggplot(df_mcdm, aes(x = equipamento, y = nota, fill = criterio)) +
geom_col(position = "dodge", width = 0.6) +
scale_fill_manual(values = c("Custo-Benefício" = "#7ecff7", "Qualidade" = "#f7c87e")) +
labs(title = "Comparação Multicritério: Tomógrafos A e B",
x = "", y = "Nota (1-10)", fill = "Critério") +
theme_minimal(base_size = 13)Exercício: usando o método MCDM, compare dois protocolos de triagem considerando Velocidade (peso 0,4), Acurácia (peso 0,4) e Custo de Implantação (peso 0,2). Notas de 1 a 10.
Manchester: 7.60 | ESI: 8.00
Recomendação: Protocolo ESI
Três protocolos de resposta a um surto, com desfechos (utilidade) sob três cenários epidemiológicos desconhecidos.
Cen. Leve Cen. Moderado Cen. Grave
Prot. A 5 8 2
Prot. B 6 6 6
Prot. C 9 3 1
Critério Maximin (escolhe o maior valor entre os piores):
Prot. A Prot. B Prot. C
2 6 1
Decisão Maximin: Prot. B
Critério Maximax (escolhe o maior valor entre os melhores):
Prot. A Prot. B Prot. C
8 6 9
Decisão Maximax: Prot. C
Exercício: aplique o critério de Laplace (probabilidades iguais) aos três protocolos do exemplo anterior e compare com os resultados de Maximin e Maximax.
Critério de Laplace (média dos cenários, peso igual):
Prot. A Prot. B Prot. C
5.000000 6.000000 4.333333
Decisão Laplace: Prot. B
Coleta → Tratamento → Armazenamento → Análise → Visualização → Decisão Médica.
Caso integrador: um sensor registra “38,7” (Dado). O sistema contextualiza: “Paciente Y, temperatura 38,7°C, 22h” (Informação). A base de conhecimento associa: “Febre persistente + idade > 70 sugere investigação infecciosa” (Conhecimento). O médico, avaliando o histórico familiar e a fragilidade do paciente, decide adiar exames invasivos para o dia seguinte (Sabedoria).
Esse exemplo percorre todos os quatro níveis da hierarquia DIKW em uma única decisão clínica real.
Exercício: construa, em formato de tabela, seu próprio exemplo de percurso DIKW completo, partindo de um dado de sua área de formação (enfermagem, fisioterapia, fonoaudiologia ou medicina).
exemplo_fono <- data.frame(
Nivel = c("Dado", "Informação", "Conhecimento", "Sabedoria"),
Conteudo = c(
"Tempo de fonação: 8 segundos",
"Paciente Z, pós-AVC, tempo de fonação 8s na avaliação de hoje",
"Tempo de fonação reduzido sugere fraqueza da musculatura respiratória",
"Considerando a ansiedade do paciente na sessão, adiar o teste de esforço vocal para a próxima semana"
)
)
print(exemplo_fono) Nivel
1 Dado
2 Informação
3 Conhecimento
4 Sabedoria
Conteudo
1 Tempo de fonação: 8 segundos
2 Paciente Z, pós-AVC, tempo de fonação 8s na avaliação de hoje
3 Tempo de fonação reduzido sugere fraqueza da musculatura respiratória
4 Considerando a ansiedade do paciente na sessão, adiar o teste de esforço vocal para a próxima semana
df_areas <- data.frame(
area = c("Enfermagem", "Fisioterapia", "Fonoaudiologia", "Medicina"),
aplicacao_dados = c("Padrões de queda/UPP", "Trajetórias funcionais",
"Evolução terapêutica", "Risco cirúrgico"),
aplicacao_modelos = c("Escala de plantões", "Protocolo de carga",
"Triagem auditiva", "Dimensionamento de UTI")
)
print(df_areas) area aplicacao_dados aplicacao_modelos
1 Enfermagem Padrões de queda/UPP Escala de plantões
2 Fisioterapia Trajetórias funcionais Protocolo de carga
3 Fonoaudiologia Evolução terapêutica Triagem auditiva
4 Medicina Risco cirúrgico Dimensionamento de UTI
Embora as aplicações variem, os quatro componentes do SAD (dados, modelos, motor de inferência, interface) permanecem os mesmos em todas as áreas.
Exercício final: com base na sua própria área de formação, descreva um cenário de decisão clínica e classifique-o segundo:
Dimensao Classificacao
1 Tipo de decisão Semiestruturada
2 Ambiente Risco
3 Tipo de SAD Orientado a modelos (escore de risco)
4 Nível DIKW predominante Conhecimento (regra clínica aplicada ao caso)
df_resumo <- data.frame(
ambiente = factor(c("Certeza", "Risco", "Incerteza"),
levels = c("Certeza", "Risco", "Incerteza")),
caracteristica = c("Resultado conhecido", "Probabilidades conhecidas", "Probabilidades desconhecidas"),
ferramenta = c("Ordenação simples", "Utilidade Esperada", "Maximin / Maximax / Subjetiva")
)
print(df_resumo) ambiente caracteristica ferramenta
1 Certeza Resultado conhecido Ordenação simples
2 Risco Probabilidades conhecidas Utilidade Esperada
3 Incerteza Probabilidades desconhecidas Maximin / Maximax / Subjetiva
| Nível | Pergunta-chave | Papel do SAD |
|---|---|---|
| Dado | — | Captura e limpeza |
| Informação | Quem, o quê, quando, onde | Contextualização, dashboards |
| Conhecimento | Como, por quê | Regras, modelos analíticos |
| Sabedoria | Devo? | Reservada ao julgamento humano |
Para reflexão: pense em uma decisão recorrente na sua prática profissional (enfermagem, fisioterapia, fonoaudiologia, medicina, etc.). Ela é estruturada, semiestruturada ou não estruturada? Que tipo de SAD poderia apoiá-la?
Obrigado!
Métodos de Tomada de Decisão · PPGMDS · UFPB
Programa de Pós-Graduação em Modelagem de Decisão e Saúde
Prof. Marcelo R.P. Ferreira · DE-UFPB
Métodos de Tomada de Decisão - PPGMDS - UFPB