pacman::p_load(tidyverse, ggsignif)
df <- read_csv("https://docs.google.com/spreadsheets/d/e/2PACX-1vSciIQTEh-E-He--1Om0C0EPf8jVT-DFwMsjYv-VeE9nLd8j0EQp6YT1Wybczpa7Y6dQP1YQzz5ymfp/pub?gid=460790857&single=true&output=csv")
Parsed with column specification:
cols(
`Marca temporal` = [31mcol_character()[39m,
seYeson = [31mcol_character()[39m,
nombre = [31mcol_character()[39m,
grupo = [31mcol_character()[39m,
Alta = [31mcol_character()[39m,
Clasificacion_tto = [32mcol_double()[39m,
`Edad (en años)` = [32mcol_double()[39m,
Sexo = [31mcol_character()[39m,
n_sesiones = [32mcol_double()[39m,
minuto_sesiones = [32mcol_double()[39m,
Ansiedad_padre = [32mcol_double()[39m,
Ansiedad_nino = [32mcol_double()[39m,
Ansiedad_dentista_nino = [32mcol_double()[39m,
cortisol = [31mcol_character()[39m,
cortisol2 = [31mcol_character()[39m,
cortisol3 = [31mcol_character()[39m
)
df <- janitor::clean_names(df)
names(df)
[1] "marca_temporal" "se_yeson" "nombre"
[4] "grupo" "alta" "clasificacion_tto"
[7] "edad_en_anos" "sexo" "n_sesiones"
[10] "minuto_sesiones" "ansiedad_padre" "ansiedad_nino"
[13] "ansiedad_dentista_nino" "cortisol" "cortisol2"
[16] "cortisol3"
df <- rename(df, sesion = se_yeson)
table(df$grupo, df$sesion)
Baseline Final
Non-sedation 24 24
Sedation 25 25
df$cortisol <- scan(text=df$cortisol2, dec=",", sep=".")
Read 98 items
Corregir un valor de cortisol que aparece elevado
df <- df %>%
mutate(cortisol = case_when(
cortisol > 0.1 ~ (cortisol/10),
TRUE ~ as.numeric(as.character(.$cortisol)
)))
df$clasificacion_tto <- as.factor(df$clasificacion_tto)
df$ansiedad_nino <- as.factor(df$ansiedad_nino)
df$ansiedad_dentista_nino <- as.factor(df$ansiedad_dentista_nino)
head(df)
glimpse(df)
Rows: 98
Columns: 16
$ marca_temporal [3m[38;5;246m<chr>[39m[23m "25/08/2019 13:39:20", "25/08/2019 13:40:10",…
$ sesion [3m[38;5;246m<chr>[39m[23m "Baseline", "Final", "Baseline", "Final", "Ba…
$ nombre [3m[38;5;246m<chr>[39m[23m "Acevedo, Sebastian", "Acevedo, Sebastian", "…
$ grupo [3m[38;5;246m<chr>[39m[23m "Non-sedation", "Non-sedation", "Non-sedation…
$ alta [3m[38;5;246m<chr>[39m[23m "No", "No", "Yes", "Yes", "Yes", "Yes", "No",…
$ clasificacion_tto [3m[38;5;246m<fct>[39m[23m 2, 2, 3, 3, 2, 2, 1, 1, 3, 3, 2, 2, 2, 2, 2, …
$ edad_en_anos [3m[38;5;246m<dbl>[39m[23m 7, 7, 5, 5, 8, 8, 8, 8, 6, 6, 6, 6, 5, 5, 8, …
$ sexo [3m[38;5;246m<chr>[39m[23m "Male", "Male", "Female", "Female", "Male", "…
$ n_sesiones [3m[38;5;246m<dbl>[39m[23m 5, 5, 9, 9, 5, 5, 3, 3, 11, 11, 6, 6, 10, 10,…
$ minuto_sesiones [3m[38;5;246m<dbl>[39m[23m 81, 81, 350, 350, 171, 171, 49, 49, 407, 407,…
$ ansiedad_padre [3m[38;5;246m<dbl>[39m[23m 4, 4, 12, 4, 12, 4, 11, 11, 4, 8, 9, 6, 20, 1…
$ ansiedad_nino [3m[38;5;246m<fct>[39m[23m 2, 1, 4, 1, 1, 1, 2, 4, 2, 1, 4, 2, 5, 1, 2, …
$ ansiedad_dentista_nino [3m[38;5;246m<fct>[39m[23m 3, 3, 1, 4, 3, 3, 2, 1, 3, 4, 3, 3, 1, 4, 4, …
$ cortisol [3m[38;5;246m<dbl>[39m[23m 0.0510, 0.0450, 0.0560, 0.0440, 0.0510, 0.050…
$ cortisol2 [3m[38;5;246m<chr>[39m[23m "0,051", "0,045", "0,056", "0,044", "0,051", …
$ cortisol3 [3m[38;5;246m<chr>[39m[23m "0,051", "0,045", "0,056", "0,044", "0,051", …
skimr::skim(df)
Registered S3 methods overwritten by 'htmltools':
method from
print.html tools:rstudio
print.shiny.tag tools:rstudio
print.shiny.tag.list tools:rstudio
── Data Summary ────────────────────────
Values
Name df
Number of rows 98
Number of columns 16
_______________________
Column type frequency:
character 8
factor 3
numeric 5
________________________
Group variables
── Variable type: character ───────────────────────────────────────────────────
skim_variable n_missing complete_rate min max empty n_unique whitespace
1 marca_temporal 0 1 19 19 0 98 0
2 sesion 0 1 5 8 0 2 0
3 nombre 0 1 10 20 0 54 0
4 grupo 0 1 8 12 0 2 0
5 alta 0 1 2 3 0 2 0
6 sexo 0 1 4 6 0 2 0
7 cortisol2 10 0.898 5 5 0 19 0
8 cortisol3 10 0.898 5 5 0 19 0
── Variable type: factor ──────────────────────────────────────────────────────
skim_variable n_missing complete_rate ordered n_unique
1 clasificacion_tto 0 1 FALSE 3
2 ansiedad_nino 0 1 FALSE 5
3 ansiedad_dentista_nino 0 1 FALSE 4
top_counts
1 3: 48, 2: 44, 1: 6
2 1: 56, 2: 15, 3: 11, 5: 10
3 3: 38, 4: 35, 2: 19, 1: 6
── Variable type: numeric ─────────────────────────────────────────────────────
skim_variable n_missing complete_rate mean sd p0 p25
1 edad_en_anos 0 1 6.56 1.75 4 5
2 n_sesiones 0 1 4.63 2.57 2 3
3 minuto_sesiones 0 1 142. 81.5 42 69
4 ansiedad_padre 0 1 7.13 3.69 4 4
5 cortisol 10 0.898 0.0510 0.00415 0.041 0.05
p50 p75 p100 hist
1 6 8 12 ▇▇▃▃▁
2 4 6 11 ▇▅▂▂▁
3 122 187 407 ▇▆▃▁▁
4 6 10 20 ▇▂▂▁▁
5 0.052 0.053 0.061 ▂▁▇▃▁
El propósito del ECA fue evaluar la efectividad de la sedación vs no sedación (terapia conductiva conductual) en relación al número de altas logradas, número de sessiones y tiempo de sessiones requeridas para el logro del alta, disminución de la ansiedad de padres, niños (escala FIS), niño_dentista( escala FRANKL) y los niveles de cortisol salival. V. Independiente: grupo (sedacion, no sedacion) V. Dependiente: - Alta (si/no) - numero sessiones (promedio) - minuto_sessiones (promedio) - Ansiedad padre (promedio /escala CORAH rango: 4 -menos ansioso- hasta 20 - más ansioso-) - Ansiedad Niño (categorica /escala FIS: 1-muy feliz; 2-feliz; 3-triste; 4-muy triste) - Ansiedad Niño by Dentista (categorica /Escala FRANKL: 1-definitivamente negativo; 2-negativo; 3-positivo; 4-definitivamente positivo) - Cortisol (promedio en microgramos/decilitro)
Puede hacerse un analisis de covariable según: -Clasificacion_tto: (Categorica: tipo 1-Higiene/educacion; tipo 2-restaurador; tipo 3-endodontico/quirúrgico) - sexo (masculino/femenino) - datos basales (session = inicio)
NOTA: casillas D50 debe decir “no sedacion” Columna N (cortisol) son todas con 3 decimales (ej casilla N2 = 51; debe decir 0.051)
La idea es presentar una tabla con datos basales y en gráficos destacando la diferencia entre grupo sobre 1. el número de altas, 2. número de sessiones, 3. tiempo de sessiones y 4. nivel de cortisol. (barra con margen de error?). Otros gráficos según el cambio de niveles de ansiedad padre, niño y niño_dentista.
names(df)
[1] "marca_temporal" "sesion" "nombre"
[4] "grupo" "alta" "clasificacion_tto"
[7] "edad_en_anos" "sexo" "n_sesiones"
[10] "minuto_sesiones" "ansiedad_padre" "ansiedad_nino"
[13] "ansiedad_dentista_nino" "cortisol" "cortisol2"
[16] "cortisol3"
head(df)
table(df$grupo)
Non-sedation Sedation
48 50
df <- df %>%
mutate(grupo = fct_recode(grupo, "CBT" = "Non-sedation"))
| Overall (n=0) |
|
|---|---|
| edad_en_anos | NA |
| sexo | NA |
| clasificacion_tto | NA |
| ansiedad_padre | NA |
| ansiedad_nino | NA |
| ansiedad_dentista_nino | NA |
| cortisol | NA |
El propósito del ECA fue evaluar la efectividad de la sedación vs no sedación (terapia conductiva conductual) en relación al número de altas logradas, número de sessiones y tiempo de sessiones requeridas para el logro del alta, disminución de la ansiedad de padres, niños (escala FIS), niño_dentista( escala FRANKL) y los niveles de cortisol salival.
Cuántos niños tuvieron el alta por grupo?
df %>%
filter(sesion == "Final") %>%
group_by(grupo) %>%
summarise(sessiones = mean(n_sesiones),
sd = sd(n_sesiones))
df %>%
filter(sesion == "Final") %>%
ggplot(aes(x = grupo, y = n_sesiones, fill = grupo)) +
geom_boxplot() +
geom_jitter(alpha = 0.3) +
ggpubr::theme_pubr() +
labs(title = "Boxplot of number of sessions by group",
x = "Group",
y = "Number of sessions",
fill = "Group") +
ggsignif::geom_signif(comparisons=list(c("CBT", "Sedation")),
y_position = 12, tip_length = 0.05, vjust=0) +
ylim(0,13) +
annotate("text", x = 1.31, y = 12.4, label = "T-test p =")
NA
NA
df %>%
mutate(tpoPromedio = minuto_sesiones / n_sesiones) %>%
filter(sesion == "Final") %>%
ggplot(aes(x = grupo, y = tpoPromedio, fill = grupo)) +
geom_boxplot() +
geom_jitter(alpha = 0.3) +
ggpubr::theme_pubr() +
labs(title = "Boxplot of time per session required by group",
x = "Group",
y = "Time (minutes)",
fill = "Group") +
ggsignif::geom_signif(comparisons=list(c("CBT", "Sedation")),
y_position = 56, tip_length = 0.05, vjust=0) +
ylim(0,58) +
annotate("text", x = 1.31, y = 57.9, label = "T-test p =")
df %>%
ggplot(aes(x = sesion, y = cortisol, fill = grupo)) +
geom_boxplot() +
geom_jitter(alpha = 0.3) +
ggpubr::theme_pubr() +
labs(title = "Cortisol levels comparison by session and group",
x = "Session",
y = "Cortisol μg/dl",
fill = "Group") +
ylim(0, 0.075) +
ggsignif::geom_signif(
comparisons = list(c("Baseline", "Final")),
y_position = 0.070,
tip_length = 0.1,
vjust = 0
) +
annotate("text",
x = 1.25,
y = 0.0725,
label = "ANOVA p =") +
ggpubr::stat_compare_means(method = "anova", label.y = 0.065 )