Objetivo: avaliar o conhecimento e a percepção de
prontidão de enfermeiros sobre choque no pós-operatório
(PO) em ambiente de UTI, incluindo:
1) prontidão percebida (atualização, experiência e segurança);
2) reconhecimento de sinais (itens clínicos);
3) associações entre escores e características profissionais (tempo de
experiência, escolaridade, treinamento recente etc.).
A análise é descritiva e inferencial não paramétrica (Kruskal–Wallis / Wilcoxon), apropriada para escores derivados de itens Likert (1–5).
# --- Localiza o arquivo em caminhos prováveis
candidates <- c(
params$arquivo,
"Reconhecimento_de_Choque_POP.xlsx",
file.path(getwd(), "Reconhecimento_de_Choque_POP.xlsx")
)
candidates <- path.expand(candidates)
file_path <- candidates[file.exists(candidates)][1]
if (is.na(file_path)) {
stop(
"Arquivo não encontrado.\n",
"Edite o parâmetro params$arquivo no YAML (topo do .Rmd) OU coloque o arquivo na pasta do projeto.\n",
"Caminhos testados:\n- ", paste(candidates, collapse = "\n- ")
)
}
message("Arquivo utilizado: ", file_path)
df_raw <- readxl::read_xlsx(file_path, sheet = params$sheet, .name_repair = "minimal")
# Padroniza nomes das colunas (snake_case, sem acentos)
df <- janitor::clean_names(df_raw)
# Checa duplicidade pós-limpeza (evita sobrescrita)
if (any(duplicated(names(df)))) {
names(df) <- make.unique(names(df))
}
dim(df)
## [1] 207 39
head(df, 3)
# Normaliza texto (minúsculas, remove múltiplos espaços)
norm_txt <- function(x) {
x %>%
as.character() %>%
str_replace_all("\u00A0", " ") %>% # non-breaking space
str_squish() %>%
str_to_lower()
}
# Padronização da instituição (categoria principal)
std_instituicao <- function(x) {
x0 <- norm_txt(x)
x0[x0 == "" | is.na(x0)] <- NA_character_
out <- case_when(
is.na(x0) ~ "nao_informado",
# público / privado / ambos
str_detect(x0, "trabalho.*dois|ambos|dois\\s*vincul|public[ao].*privad|privad.*public|p[uú]blic[ao].*privad|em\\s*2\\s*institui") ~ "publico;privado",
str_detect(x0, "p[uú]blic[ao]|hospital\\s*p[uú]blic[ao]|prefeitura|federal|servidor\\s*p[uú]blic") ~ "publico",
str_detect(x0, "privad|hospital\\s*privad|conveniad|particular|plano\\s*de\\s*saude") ~ "privado",
# outros vínculos relevantes
str_detect(x0, "filantrop") ~ "filantropico",
str_detect(x0, "\\bsamu\\b|upa|emerg[êe]ncia\\s*m[oó]vel|servi[cç]os\\s*m[eé]dicos\\s*de\\s*emerg") ~ "prehospitalar",
str_detect(x0, "ambul|cl[ií]nica") ~ "clinica_ambulatorio",
str_detect(x0, "aut[oô]nom") ~ "autonomo",
str_detect(x0, "ensino") ~ "ensino",
str_detect(x0, "militar") ~ "hospital_militar",
str_detect(x0, "ainda\\s*n[aã]o\\s*trabalh|n[aã]o\\s*trabalho") ~ "nao_trabalha",
TRUE ~ "outros"
)
out
}
# Likert -> numérico (1 a 5)
likert_levels <- c("discordo totalmente","discordo em parte","neutro","concordo em parte","concordo totalmente")
likert_num <- function(x){
x <- norm_txt(x)
factor(x, levels = likert_levels, ordered = TRUE) |> as.integer()
}
# Formata p-valor em padrão PT-BR
fmt_p <- function(p) {
if (is.na(p)) return("NA")
if (p < 0.001) return("<0,001")
x <- formatC(p, format = "f", digits = 3)
gsub("\\.", ",", x)
}
df2 <- df %>%
mutate(
# instituição padronizada
instituicao_std = std_instituicao(informacoes_profissionais_instituicao),
# status "outras áreas" (respondeu vs não respondeu)
outras_areas_status = if_else(
is.na(informacoes_profissionais_possui_graduacao_outras_areas) |
str_squish(as.character(informacoes_profissionais_possui_graduacao_outras_areas)) == "",
"nao_respondeu",
"tem"
),
# treinamento últimos 2 anos
treinamento_2anos = norm_txt(recebeu_treinamento_especi_fico_sobre_o_reconhecimento_e_manejo_do_choque_po_nos_ultimos_2_anos)
) %>%
mutate(
# instituição "macro"
instituicao_macro = case_when(
instituicao_std %in% c("publico","privado","publico;privado") ~ instituicao_std,
instituicao_std == "nao_informado" ~ "nao_informado",
TRUE ~ "outros"
)
)
# Deriva escores conforme sua lógica (Likert 1-5)
df3 <- df2 %>%
mutate(
atualizado_n = likert_num(conhecimento_pratica_se_sente_atualizado_sobre_os_protocolos_de_manejo_do_choque_po),
experiencia_n = likert_num(conhecimento_pratica_experiencia_em_uti_suficiente_para_lidar_com_choque_po),
seguranca_n = likert_num(seguranca_para_lidar_com_pacientes_em_choque_po_mediato_de_forma_independente),
s_imediato_n = likert_num(sinais_indicativo_de_choque_po_imediato),
s_taq_n = likert_num(sinais_indicativo_de_choque_po_taquicardia),
s_olig_n = likert_num(sinais_indicativo_de_choque_po_oliguria),
s_hipot_n = likert_num(sinais_indicativo_de_choque_po_hipotermia),
s_cian_n = likert_num(sinais_indicativo_de_choque_po_cianose),
s_pic_n = likert_num(sinais_indicativo_de_choque_po_aumento_pic),
# Escores (média; mantém NA se faltar item)
score_prontidao = rowMeans(across(c(atualizado_n, experiencia_n, seguranca_n)), na.rm = FALSE),
score_sinais_6 = rowMeans(across(c(s_imediato_n, s_taq_n, s_olig_n, s_hipot_n, s_cian_n, s_pic_n)), na.rm = FALSE),
score_sinais_5 = rowMeans(across(c(s_imediato_n, s_taq_n, s_olig_n, s_hipot_n, s_cian_n)), na.rm = FALSE) # sem PIC
)
# Checagem rápida
df3 %>% select(instituicao_std, instituicao_macro, outras_areas_status, treinamento_2anos) %>% head(10)
na_summary <- df3 %>%
summarise(across(everything(), ~ sum(is.na(.x)))) %>%
pivot_longer(everything(), names_to = "variavel", values_to = "n_na") %>%
mutate(pct_na = round(100 * n_na / nrow(df3), 1)) %>%
arrange(desc(n_na))
na_summary
Interpretação (crítica e objetiva):
- A variável
informacoes_profissionais_possui_graduacao_outras_areas
tende a ter alta proporção de não resposta.
Recomenda-se analisar essa variável como “respondeu vs não respondeu”
(como feito em outras_areas_status) e, caso necessário,
explorar conteúdo apenas entre respondentes.
- As demais variáveis apresentam baixa falta de dados, o que suporta
análises inferenciais com perda mínima de amostra.
likert_vars <- c(
"conhecimento_pratica_se_sente_atualizado_sobre_os_protocolos_de_manejo_do_choque_po",
"conhecimento_pratica_experiencia_em_uti_suficiente_para_lidar_com_choque_po",
"seguranca_para_lidar_com_pacientes_em_choque_po_mediato_de_forma_independente",
"voce_ja_participou_de_algum_curso_de_capacitacao_sobre_manejo_de_choque_po",
"se_sente_seguro_para_manejar_pacientes_em_choque_po_de_forma_independente",
"se_sente_apoiado_pela_instituicao_para_atualizar_seus_conhecimentos_em_uti",
"considera_os_recursos_disponi_veis_suficientes_para_o_manejo_do_choque_po",
"se_sente_satisfeito_com_sua_pratica_clinica_em_uti",
"voce_considera_a_comunicacao_eficaz_co_a_equipe_medica_importante_para_o_manejo_do_choque_po"
)
for (v in likert_vars) {
cat("\n====================\n", v, "\n", sep = "")
df3 %>% count(v = norm_txt(.data[[v]]), sort = TRUE) %>% print(n = 20)
}
##
## ====================
## conhecimento_pratica_se_sente_atualizado_sobre_os_protocolos_de_manejo_do_choque_po
## # A tibble: 6 × 2
## v n
## <chr> <int>
## 1 concordo em parte 106
## 2 concordo totalmente 44
## 3 neutro 32
## 4 discordo em parte 16
## 5 discordo totalmente 8
## 6 <NA> 1
##
## ====================
## conhecimento_pratica_experiencia_em_uti_suficiente_para_lidar_com_choque_po
## # A tibble: 5 × 2
## v n
## <chr> <int>
## 1 concordo em parte 98
## 2 concordo totalmente 71
## 3 discordo em parte 15
## 4 neutro 14
## 5 discordo totalmente 9
##
## ====================
## seguranca_para_lidar_com_pacientes_em_choque_po_mediato_de_forma_independente
## # A tibble: 5 × 2
## v n
## <chr> <int>
## 1 concordo em parte 88
## 2 concordo totalmente 65
## 3 discordo em parte 25
## 4 neutro 21
## 5 discordo totalmente 8
##
## ====================
## voce_ja_participou_de_algum_curso_de_capacitacao_sobre_manejo_de_choque_po
## # A tibble: 5 × 2
## v n
## <chr> <int>
## 1 discordo totalmente 85
## 2 concordo totalmente 45
## 3 concordo em parte 32
## 4 neutro 28
## 5 discordo em parte 17
##
## ====================
## se_sente_seguro_para_manejar_pacientes_em_choque_po_de_forma_independente
## # A tibble: 5 × 2
## v n
## <chr> <int>
## 1 concordo em parte 97
## 2 concordo totalmente 52
## 3 neutro 24
## 4 discordo em parte 23
## 5 discordo totalmente 11
##
## ====================
## se_sente_apoiado_pela_instituicao_para_atualizar_seus_conhecimentos_em_uti
## # A tibble: 5 × 2
## v n
## <chr> <int>
## 1 concordo em parte 61
## 2 concordo totalmente 60
## 3 neutro 41
## 4 discordo em parte 25
## 5 discordo totalmente 20
##
## ====================
## considera_os_recursos_disponi_veis_suficientes_para_o_manejo_do_choque_po
## # A tibble: 6 × 2
## v n
## <chr> <int>
## 1 concordo totalmente 77
## 2 concordo em parte 70
## 3 neutro 29
## 4 discordo em parte 23
## 5 discordo totalmente 7
## 6 <NA> 1
##
## ====================
## se_sente_satisfeito_com_sua_pratica_clinica_em_uti
## # A tibble: 6 × 2
## v n
## <chr> <int>
## 1 concordo em parte 80
## 2 concordo totalmente 76
## 3 neutro 29
## 4 discordo em parte 15
## 5 discordo totalmente 6
## 6 <NA> 1
##
## ====================
## voce_considera_a_comunicacao_eficaz_co_a_equipe_medica_importante_para_o_manejo_do_choque_po
## # A tibble: 4 × 2
## v n
## <chr> <int>
## 1 concordo totalmente 188
## 2 concordo em parte 12
## 3 neutro 5
## 4 discordo em parte 2
summary(df3$score_prontidao)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.000 3.333 4.000 3.887 4.333 5.000 1
summary(df3$score_sinais_5)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.40 4.20 4.60 4.46 4.80 5.00
summary(df3$score_sinais_6)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.667 4.000 4.333 4.230 4.500 5.000
df3 %>% summarise(
n_total = n(),
n_score_prontidao = sum(!is.na(score_prontidao)),
n_score_sinais_5 = sum(!is.na(score_sinais_5)),
n_score_sinais_6 = sum(!is.na(score_sinais_6))
)
Interpretação:
- score_prontidao reflete a prontidão percebida
(atualização, experiência e segurança).
- score_sinais_5 representa reconhecimento de sinais
clínicos clássicos (sem o item de PIC).
- score_sinais_6 inclui PIC (o que pode capturar um
construto diferente se o item não estiver alinhado ao domínio
“choque PO”). Do ponto de vista psicométrico e também do ponto de
vista clínico, esse item provavelmente não está medindo o mesmo
“domínio” que os outros sinais do seu bloco (taquicardia, oligúria,
hipotermia, cianose, etc.). O output do psych::alpha() captou isso como
correlação negativa do item s_pic_n com o componente principal (ele
“anda na direção oposta” do restante).
# prontidão percebida
alpha_pront <- psych::alpha(df3 %>% select(atualizado_n, experiencia_n, seguranca_n) %>% na.omit())
alpha_pront
##
## Reliability analysis
## Call: psych::alpha(x = df3 %>% select(atualizado_n, experiencia_n,
## seguranca_n) %>% na.omit())
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.77 0.77 0.7 0.53 3.4 0.028 3.9 0.87 0.54
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.71 0.77 0.82
## Duhachek 0.72 0.77 0.83
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## atualizado_n 0.76 0.76 0.62 0.62 3.2 0.033 NA 0.62
## experiencia_n 0.60 0.60 0.43 0.43 1.5 0.055 NA 0.43
## seguranca_n 0.70 0.70 0.54 0.54 2.3 0.042 NA 0.54
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## atualizado_n 206 0.78 0.79 0.61 0.54 3.8 0.99
## experiencia_n 206 0.87 0.87 0.78 0.69 4.0 1.05
## seguranca_n 206 0.83 0.82 0.69 0.60 3.9 1.09
##
## Non missing response frequency for each item
## 1 2 3 4 5 miss
## atualizado_n 0.04 0.08 0.16 0.51 0.21 0
## experiencia_n 0.04 0.07 0.06 0.48 0.34 0
## seguranca_n 0.03 0.12 0.10 0.43 0.32 0
# sinais (6 itens; com PIC)
alpha_sinais_6 <- psych::alpha(df3 %>% select(s_imediato_n, s_taq_n, s_olig_n, s_hipot_n, s_cian_n, s_pic_n) %>% na.omit())
## Warning in psych::alpha(df3 %>% select(s_imediato_n, s_taq_n, s_olig_n, : Some items were negatively correlated with the first principal component and probably
## should be reversed.
## To do this, run the function again with the 'check.keys=TRUE' option
## Some items ( s_pic_n ) were negatively correlated with the first principal component and
## probably should be reversed.
## To do this, run the function again with the 'check.keys=TRUE' option
alpha_sinais_6
##
## Reliability analysis
## Call: psych::alpha(x = df3 %>% select(s_imediato_n, s_taq_n, s_olig_n,
## s_hipot_n, s_cian_n, s_pic_n) %>% na.omit())
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.33 0.4 0.4 0.1 0.67 0.072 4.2 0.46 0.07
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.18 0.33 0.47
## Duhachek 0.19 0.33 0.48
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## s_imediato_n 0.27 0.33 0.32 0.089 0.49 0.080 0.0141 0.051
## s_taq_n 0.29 0.38 0.35 0.107 0.60 0.078 0.0145 0.125
## s_olig_n 0.18 0.26 0.24 0.065 0.35 0.089 0.0108 0.048
## s_hipot_n 0.29 0.35 0.34 0.097 0.54 0.078 0.0147 0.049
## s_cian_n 0.24 0.32 0.31 0.087 0.48 0.083 0.0139 0.068
## s_pic_n 0.48 0.49 0.46 0.161 0.96 0.056 0.0082 0.187
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## s_imediato_n 207 0.42 0.54 0.383 0.228 4.8 0.57
## s_taq_n 207 0.41 0.48 0.278 0.159 4.7 0.74
## s_olig_n 207 0.60 0.62 0.546 0.297 4.3 0.98
## s_hipot_n 207 0.53 0.51 0.334 0.162 4.3 1.08
## s_cian_n 207 0.52 0.55 0.396 0.235 4.3 0.87
## s_pic_n 207 0.45 0.30 -0.045 -0.029 3.1 1.32
##
## Non missing response frequency for each item
## 1 2 3 4 5 miss
## s_imediato_n 0.01 0.00 0.00 0.15 0.83 0
## s_taq_n 0.01 0.02 0.03 0.17 0.77 0
## s_olig_n 0.03 0.03 0.09 0.28 0.57 0
## s_hipot_n 0.04 0.05 0.08 0.27 0.56 0
## s_cian_n 0.00 0.06 0.07 0.39 0.48 0
## s_pic_n 0.18 0.14 0.24 0.29 0.14 0
# sinais (5 itens; sem PIC)
alpha_sinais_5 <- psych::alpha(df3 %>% select(s_imediato_n, s_taq_n, s_olig_n, s_hipot_n, s_cian_n) %>% na.omit())
alpha_sinais_5
##
## Reliability analysis
## Call: psych::alpha(x = df3 %>% select(s_imediato_n, s_taq_n, s_olig_n,
## s_hipot_n, s_cian_n) %>% na.omit())
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.48 0.49 0.46 0.16 0.96 0.056 4.5 0.49 0.19
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.35 0.48 0.58
## Duhachek 0.37 0.48 0.59
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## s_imediato_n 0.42 0.42 0.38 0.16 0.74 0.065 0.0114 0.15
## s_taq_n 0.46 0.49 0.43 0.19 0.95 0.060 0.0036 0.21
## s_olig_n 0.36 0.37 0.32 0.13 0.59 0.068 0.0070 0.12
## s_hipot_n 0.45 0.45 0.40 0.17 0.81 0.059 0.0104 0.19
## s_cian_n 0.40 0.43 0.38 0.16 0.75 0.067 0.0091 0.15
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## s_imediato_n 207 0.50 0.58 0.40 0.29 4.8 0.57
## s_taq_n 207 0.47 0.51 0.28 0.19 4.7 0.74
## s_olig_n 207 0.66 0.64 0.52 0.33 4.3 0.98
## s_hipot_n 207 0.62 0.56 0.35 0.23 4.3 1.08
## s_cian_n 207 0.59 0.58 0.40 0.29 4.3 0.87
##
## Non missing response frequency for each item
## 1 2 3 4 5 miss
## s_imediato_n 0.01 0.00 0.00 0.15 0.83 0
## s_taq_n 0.01 0.02 0.03 0.17 0.77 0
## s_olig_n 0.03 0.03 0.09 0.28 0.57 0
## s_hipot_n 0.04 0.05 0.08 0.27 0.56 0
## s_cian_n 0.00 0.06 0.07 0.39 0.48 0
Como foi feita DF2: *Instituicao_std: padroniza o texto da instituição para categorias (p.ex. “publico”, “privado”, “publico;privado”, “outros”, “nao_informado”).
*Outras_areas_status: transforma “possui graduação em outras áreas” em status de resposta (“tem” vs “nao_respondeu”), porque havia muito missing.
*Treinamento_2anos: normaliza para “sim/não” (minúsculas, sem espaços extras).
*Instituicao_macro: reduz instituicao_std para um agrupamento mais robusto (“publico”, “privado”, “publico;privado”, “outros”, “nao_informado”).
Como foi feita DF3:
Itens Likert convertidos para 1–5:
Prontidão percebida:
atualizado_n, experiencia_n, seguranca_n
Sinais de choque:
s_imediato_n, s_taq_n, s_olig_n, s_hipot_n, s_cian_n, s_pic_n
Escores (média dos itens):
*score_prontidao = média de (atualizado_n, experiencia_n, seguranca_n)
*score_sinais_6 = média dos 6 sinais (inclui PIC)
*score_sinais_5 = média dos 5 sinais clássicos (sem PIC)
Interpretação:
- Prontidão percebida: alpha ~ 0,77 indica boa
consistência interna para 3 itens.
- Sinais (6 itens): alpha baixo, com alerta de
correlação negativa do item PIC. Isso sugere que o item
“aumento de PIC” não mede o mesmo construto dos demais sinais de choque
PO; portanto, usar score_sinais_5 é
metodologicamente mais defensável.
- Sinais (5 itens): alpha melhora, mas permanece
moderado/baixo, o que é esperado quando itens medem sinais parcialmente
independentes (sinais clínicos distintos) e quando há teto (muitos
“concordo totalmente”).
tab_overall <- df3 %>%
select(
faixa_etaria, tempo_experiencia, escolaridade,
informacoes_profissionais_possui_graduacao_uti,
instituicao_macro,
treinamento_2anos,
score_prontidao, score_sinais_5
) %>%
tbl_summary(
statistic = list(
all_continuous() ~ "{median} ({p25}, {p75})",
all_categorical() ~ "{n} ({p}%)"
),
missing_text = "NA"
)
tab_overall
| Characteristic | N = 2071 |
|---|---|
| faixa_etaria | |
| 25 a 35 anos | 93 (45%) |
| 36 a 45 anos | 62 (30%) |
| 46 a 55 anos | 24 (12%) |
| Acima de 55 anos | 1 (0.5%) |
| Menos de 25 anos | 27 (13%) |
| tempo_experiencia | |
| 1 a 5 anos | 81 (39%) |
| 11 a 20 anos | 40 (19%) |
| 6 a 10 anos | 40 (19%) |
| Mais de 20 anos | 10 (4.8%) |
| Menos de 1 ano | 35 (17%) |
| NA | 1 (0.5%) |
| escolaridade | |
| Doutorado | 3 (1.4%) |
| Mestrado | 12 (5.8%) |
| Pos graduacao | 192 (93%) |
| informacoes_profissionais_possui_graduacao_uti | |
| sim | 1 (0.5%) |
| Sim | 206 (100%) |
| instituicao_macro | |
| nao_informado | 5 (2.4%) |
| outros | 16 (7.7%) |
| privado | 79 (38%) |
| publico | 101 (49%) |
| publico;privado | 6 (2.9%) |
| treinamento_2anos | |
| não | 155 (75%) |
| sim | 52 (25%) |
| score_prontidao | 4.00 (3.33, 4.33) |
| NA | 1 |
| score_sinais_5 | 4.60 (4.20, 4.80) |
| 1 n (%); Median (Q1, Q3) | |
tab_by_inst <- df3 %>%
select(
faixa_etaria, tempo_experiencia, escolaridade,
informacoes_profissionais_possui_graduacao_uti,
treinamento_2anos,
score_prontidao, score_sinais_5,
instituicao_macro
) %>%
tbl_summary(
by = instituicao_macro,
statistic = list(
all_continuous() ~ "{median} ({p25}, {p75})",
all_categorical() ~ "{n} ({p}%)"
),
missing_text = "NA"
)
tab_by_inst
| Characteristic | nao_informado N = 51 |
outros N = 161 |
privado N = 791 |
publico N = 1011 |
publico;privado N = 61 |
|---|---|---|---|---|---|
| faixa_etaria | |||||
| 25 a 35 anos | 1 (20%) | 4 (25%) | 40 (51%) | 45 (45%) | 3 (50%) |
| 36 a 45 anos | 2 (40%) | 5 (31%) | 22 (28%) | 30 (30%) | 3 (50%) |
| 46 a 55 anos | 2 (40%) | 3 (19%) | 8 (10%) | 11 (11%) | 0 (0%) |
| Acima de 55 anos | 0 (0%) | 0 (0%) | 1 (1.3%) | 0 (0%) | 0 (0%) |
| Menos de 25 anos | 0 (0%) | 4 (25%) | 8 (10%) | 15 (15%) | 0 (0%) |
| tempo_experiencia | |||||
| 1 a 5 anos | 1 (20%) | 5 (31%) | 33 (42%) | 41 (41%) | 1 (17%) |
| 11 a 20 anos | 0 (0%) | 4 (25%) | 15 (19%) | 19 (19%) | 2 (33%) |
| 6 a 10 anos | 0 (0%) | 2 (13%) | 21 (27%) | 14 (14%) | 3 (50%) |
| Mais de 20 anos | 2 (40%) | 1 (6.3%) | 3 (3.8%) | 4 (4.0%) | 0 (0%) |
| Menos de 1 ano | 2 (40%) | 4 (25%) | 7 (8.9%) | 22 (22%) | 0 (0%) |
| NA | 0 (0%) | 0 (0%) | 0 (0%) | 1 (1.0%) | 0 (0%) |
| escolaridade | |||||
| Doutorado | 0 (0%) | 1 (6.3%) | 2 (2.5%) | 0 (0%) | 0 (0%) |
| Mestrado | 2 (40%) | 2 (13%) | 5 (6.3%) | 3 (3.0%) | 0 (0%) |
| Pos graduacao | 3 (60%) | 13 (81%) | 72 (91%) | 98 (97%) | 6 (100%) |
| informacoes_profissionais_possui_graduacao_uti | |||||
| sim | 1 (20%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) |
| Sim | 4 (80%) | 16 (100%) | 79 (100%) | 101 (100%) | 6 (100%) |
| treinamento_2anos | |||||
| não | 3 (60%) | 15 (94%) | 53 (67%) | 79 (78%) | 5 (83%) |
| sim | 2 (40%) | 1 (6.3%) | 26 (33%) | 22 (22%) | 1 (17%) |
| score_prontidao | 3.67 (3.00, 4.33) | 3.83 (2.67, 4.17) | 4.00 (3.67, 4.67) | 4.00 (3.33, 4.33) | 4.67 (4.33, 5.00) |
| NA | 0 | 0 | 1 | 0 | 0 |
| score_sinais_5 | 3.80 (3.80, 4.40) | 4.60 (4.10, 5.00) | 4.60 (4.20, 4.80) | 4.60 (4.20, 4.80) | 4.80 (4.20, 5.00) |
| 1 n (%); Median (Q1, Q3) | |||||
N=207
75% sem treinamento nos últimos 2 anos
score_prontidao: mediana 4.00 (3.33–4.33)
score_sinais_5: mediana 4.60 (4.20–4.80)
kw_exp <- kruskal.test(score_prontidao ~ tempo_experiencia, data = df3)
kw_esc <- kruskal.test(score_prontidao ~ escolaridade, data = df3)
kw_uti <- kruskal.test(score_prontidao ~ informacoes_profissionais_possui_graduacao_uti, data = df3)
kw_inst <- kruskal.test(score_prontidao ~ instituicao_macro, data = df3)
kw_treino <- kruskal.test(score_prontidao ~ treinamento_2anos, data = df3)
list(
tempo_experiencia = kw_exp,
escolaridade = kw_esc,
graduacao_uti = kw_uti,
instituicao_macro = kw_inst,
treinamento_2anos = kw_treino
)
## $tempo_experiencia
##
## Kruskal-Wallis rank sum test
##
## data: score_prontidao by tempo_experiencia
## Kruskal-Wallis chi-squared = 18.405, df = 5, p-value = 0.002479
##
##
## $escolaridade
##
## Kruskal-Wallis rank sum test
##
## data: score_prontidao by escolaridade
## Kruskal-Wallis chi-squared = 9.8879, df = 2, p-value = 0.007126
##
##
## $graduacao_uti
##
## Kruskal-Wallis rank sum test
##
## data: score_prontidao by informacoes_profissionais_possui_graduacao_uti
## Kruskal-Wallis chi-squared = 3.0084, df = 1, p-value = 0.08283
##
##
## $instituicao_macro
##
## Kruskal-Wallis rank sum test
##
## data: score_prontidao by instituicao_macro
## Kruskal-Wallis chi-squared = 9.1637, df = 4, p-value = 0.05714
##
##
## $treinamento_2anos
##
## Kruskal-Wallis rank sum test
##
## data: score_prontidao by treinamento_2anos
## Kruskal-Wallis chi-squared = 33.457, df = 1, p-value = 7.284e-09
Kruskal–Wallis por tempo de experiência
p = 0,002 (significativo) eta²[H] = 0,067 (efeito moderado, pela sua regra)
Significado: a prontidão percebida varia com experiência.
Kruskal–Wallis por escolaridade
p = 0,007 (significativo) eta²[H] = 0,039 (efeito pequeno)
Significado: escolaridade também se associa, mas com impacto menor.
Graduação em UTI (sim/não)
p = 0,083 (não significativo) Instituição macro
p = 0,057 (tendência; não atinge 0,05)
Treinamento últimos 2 anos
p < 0,001 (muito significativo) r = 0,403 (efeito moderado)
Treinamento recente está associado a maior prontidão percebida.
eff_exp <- df3 %>% rstatix::kruskal_effsize(score_prontidao ~ tempo_experiencia)
eff_esc <- df3 %>% rstatix::kruskal_effsize(score_prontidao ~ escolaridade)
eff_tre <- df3 %>% rstatix::wilcox_effsize(score_prontidao ~ treinamento_2anos)
eff_exp
eff_esc
eff_tre
# Dunn para tempo de experiência (somente se p<0.05)
if (!is.na(kw_exp$p.value) && kw_exp$p.value < 0.05) {
dunn_exp <- df3 %>%
filter(!is.na(score_prontidao), !is.na(tempo_experiencia)) %>%
rstatix::dunn_test(score_prontidao ~ tempo_experiencia, p.adjust.method = "holm")
dunn_exp
}
# Dunn para escolaridade (somente se p<0.05)
if (!is.na(kw_esc$p.value) && kw_esc$p.value < 0.05) {
dunn_esc <- df3 %>%
filter(!is.na(score_prontidao), !is.na(escolaridade)) %>%
rstatix::dunn_test(score_prontidao ~ escolaridade, p.adjust.method = "holm")
dunn_esc
}
Dunn-Holm
Após ajuste, pares que ficaram significativos envolvem principalmente:
11–20 anos vs menos de 1 ano
6–10 anos vs menos de 1 ano
Ou seja, a diferença “real” está nos extremos (iniciante vs mais experiente), não entre faixas intermediárias.
Escolaridade: Dunn-Holm
Significativos:
Doutorado vs Mestrado (com n muito pequeno em Doutorado = 3)
Mestrado vs Pós-graduação
Cuidado técnico: o grupo Doutorado é minúsculo, então esse resultado é instável e deve ser reportado com ressalva.
Interpretação:
- Se o teste de Kruskal–Wallis for significativo, o pós-teste identifica
quais pares diferem.
- Reporte sempre: estatística do teste, p-valor
ajustado e tamanho de efeito (eta²[H] ou
r).
kw_sinais_treino <- kruskal.test(score_sinais_5 ~ treinamento_2anos, data = df3)
kw_sinais_inst <- kruskal.test(score_sinais_5 ~ instituicao_macro, data = df3)
kw_sinais_treino
##
## Kruskal-Wallis rank sum test
##
## data: score_sinais_5 by treinamento_2anos
## Kruskal-Wallis chi-squared = 0.2276, df = 1, p-value = 0.6333
kw_sinais_inst
##
## Kruskal-Wallis rank sum test
##
## data: score_sinais_5 by instituicao_macro
## Kruskal-Wallis chi-squared = 2.9961, df = 4, p-value = 0.5585
df3 %>% rstatix::wilcox_effsize(score_sinais_5 ~ treinamento_2anos)
Treinamento vs sinais: p = 0,633 (não significativo) Efeito: r ≈ 0,033 (pequeno)
Interpretação:
- Se score_sinais_5 não variar com treinamento recente,
isso sugere que a capacitação (como medida aqui) impacta mais a
prontidão percebida do que o reconhecimento
autoavaliado de sinais (possível efeito teto / desejabilidade
social).
df_long <- df3 %>%
select(score_prontidao, score_sinais_5, score_sinais_6) %>%
pivot_longer(everything(), names_to = "score", values_to = "valor")
ggplot(df_long, aes(x = valor)) +
geom_histogram(binwidth = 0.25) +
facet_wrap(~ score, ncol = 1, scales = "free_y") +
labs(x = "Escore (1 a 5)", y = "Frequência", title = "Distribuição dos escores")
## Warning: Removed 1 row containing non-finite outside the scale range
## (`stat_bin()`).
ggplot(df3, aes(x = treinamento_2anos, y = score_prontidao)) +
geom_boxplot() +
labs(x = "Treinamento nos últimos 2 anos", y = "Score de prontidão (1–5)",
title = "Prontidão percebida por treinamento recente")
## Warning: Removed 1 row containing non-finite outside the scale range
## (`stat_boxplot()`).
n_total <- nrow(df3)
n_pront <- sum(!is.na(df3$score_prontidao))
n_s5 <- sum(!is.na(df3$score_sinais_5))
cat("**Amostra analisada:** ", n_total, " respondentes. ",
"Foram obtidos escores de prontidão para ", n_pront, " (", round(100*n_pront/n_total,1), "%) e escores de sinais (5 itens) para ",
n_s5, " (", round(100*n_s5/n_total,1), "%).\n\n", sep = "")
Amostra analisada: 207 respondentes. Foram obtidos escores de prontidão para 206 (99.5%) e escores de sinais (5 itens) para 207 (100%).
cat("**Consistência interna (Cronbach):** prontidão apresentou boa consistência (alpha ≈ ",
round(alpha_pront$total$raw_alpha,2), "). ",
"Para sinais, a inclusão do item de PIC reduziu a consistência e gerou alerta de correlação negativa, ",
"sugerindo que o item pode representar um construto distinto. ",
"Assim, `score_sinais_5` é preferível como desfecho composto.\n\n", sep = "")
Consistência interna (Cronbach): prontidão
apresentou boa consistência (alpha ≈ 0.77). Para sinais, a inclusão do
item de PIC reduziu a consistência e gerou alerta de correlação
negativa, sugerindo que o item pode representar um construto distinto.
Assim, score_sinais_5 é preferível como desfecho
composto.
cat("**Testes não paramétricos:**\n\n",
"- `score_prontidao` vs tempo de experiência: p = ", fmt_p(kw_exp$p.value), " (eta²[H] = ", round(eff_exp$effsize,3), ").\n",
"- `score_prontidao` vs escolaridade: p = ", fmt_p(kw_esc$p.value), " (eta²[H] = ", round(eff_esc$effsize,3), ").\n",
"- `score_prontidao` vs treinamento recente: p = ", fmt_p(kw_treino$p.value), " (r = ", round(eff_tre$effsize,3), ").\n",
"- `score_prontidao` vs instituição (macro): p = ", fmt_p(kw_inst$p.value), ".\n\n",
"- `score_sinais_5` vs treinamento recente: p = ", fmt_p(kw_sinais_treino$p.value), ".\n",
sep = ""
)
Testes não paramétricos:
score_prontidao vs tempo de experiência: p = 0,002
(eta²[H] = 0.067).
score_prontidao vs escolaridade: p = 0,007 (eta²[H]
= 0.039).
score_prontidao vs treinamento recente: p =
<0,001 (r = 0.403).
score_prontidao vs instituição (macro): p =
0,057.
score_sinais_5 vs treinamento recente: p =
0,633.
As análises estatísticas foram conduzidas no software R (R version 4.5.0, RStudio 2025.05.0 Build 496; Posit Software, PBC). Em caso de dúvidas ou solicitações adicionais, entrar em contato pelo e-mail liliandz@unicamp.br.