library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
library(knitr)
data <- read.csv("/Users/lorandacalderonzamora/Downloads/Likert_Base_de_Datos.csv")
dim(data )
## [1] 96 22
names(data )
## [1] "Código.Participante"
## [2] "Grupo_de_estudio"
## [3] "Entendió.principios.teóricos"
## [4] "Explicó.conceptos.anatómicos"
## [5] "Conocimiento.en.terminología"
## [6] "Identificó.estructuras.en.cadáver"
## [7] "Comprendió.funciones.y.relaciones"
## [8] "Relacionó.teoría.con.práctica"
## [9] "Demostró.comprensión.de.anatomías.normales"
## [10] "Realizó.disecciones.con.destreza"
## [11] "Usó.herramientas.de.disección"
## [12] "Aplicó.técnicas.de.disección.correctamente"
## [13] "Colaboró.en.actividades.grupales"
## [14] "Identificó.y.resolvió.problemas"
## [15] "Mantuvo.entorno.seguro"
## [16] "Aplicó.conocimientos.a.problemas.clínicos"
## [17] "Mostró.interés.en.prácticas"
## [18] "Respetó.opiniones.en.grupo"
## [19] "Actitud.ética.y.profesional"
## [20] "Aceptó.retroalimentación"
## [21] "Mostró.empatía"
## [22] "Fomentó.ambiente.colaborativo"
str(data)
## 'data.frame': 96 obs. of 22 variables:
## $ Código.Participante : chr "M05C" "F02C" "F03C" "F04C" ...
## $ Grupo_de_estudio : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Entendió.principios.teóricos : int 5 3 3 2 5 3 2 5 2 3 ...
## $ Explicó.conceptos.anatómicos : int 5 5 2 5 2 5 5 5 5 3 ...
## $ Conocimiento.en.terminología : int 2 2 2 5 3 5 5 5 5 3 ...
## $ Identificó.estructuras.en.cadáver : int 5 5 5 3 5 5 3 5 2 5 ...
## $ Comprendió.funciones.y.relaciones : int 3 5 2 5 3 5 3 5 5 3 ...
## $ Relacionó.teoría.con.práctica : int 5 3 5 2 5 5 5 3 5 5 ...
## $ Demostró.comprensión.de.anatomías.normales: int 3 3 5 5 2 5 3 2 2 3 ...
## $ Realizó.disecciones.con.destreza : int 5 2 3 3 5 5 5 2 5 3 ...
## $ Usó.herramientas.de.disección : int 5 5 3 2 5 5 2 3 3 3 ...
## $ Aplicó.técnicas.de.disección.correctamente: int 5 5 3 3 3 3 2 3 3 5 ...
## $ Colaboró.en.actividades.grupales : int 5 3 3 2 3 5 3 2 3 5 ...
## $ Identificó.y.resolvió.problemas : int 3 5 2 5 2 3 5 2 3 2 ...
## $ Mantuvo.entorno.seguro : int 3 5 3 3 5 2 5 2 2 3 ...
## $ Aplicó.conocimientos.a.problemas.clínicos : int 2 5 2 3 5 5 3 2 2 2 ...
## $ Mostró.interés.en.prácticas : int 3 3 3 2 5 2 5 2 2 2 ...
## $ Respetó.opiniones.en.grupo : int 5 2 2 3 2 2 2 5 3 5 ...
## $ Actitud.ética.y.profesional : int 2 2 5 2 2 2 3 3 3 5 ...
## $ Aceptó.retroalimentación : int 2 5 2 2 2 3 3 5 5 2 ...
## $ Mostró.empatía : int 2 2 2 2 2 2 5 2 5 3 ...
## $ Fomentó.ambiente.colaborativo : int 5 3 3 2 2 2 3 2 3 5 ...
library(reshape2)
##
## Attaching package: 'reshape2'
## The following object is masked from 'package:tidyr':
##
## smiths
data$Grupo_de_estudio <- factor(data$Grupo_de_estudio, labels = c("Control", "Experimental"))
competencias_teoricas <- data[, c("Entendió.principios.teóricos",
"Explicó.conceptos.anatómicos",
"Conocimiento.en.terminología",
"Identificó.estructuras.en.cadáver",
"Comprendió.funciones.y.relaciones",
"Relacionó.teoría.con.práctica",
"Demostró.comprensión.de.anatomías.normales",
"Grupo_de_estudio")]
competencias_long <- melt(competencias_teoricas, id.vars = "Grupo_de_estudio")
competencias_long$value <- factor(competencias_long$value,
levels = c(1, 2, 3, 4, 5),
labels = c("Totalmente de acuerdo", "De acuerdo", "Neutro", "En desacuerdo", "Totalmente en desacuerdo"))
ggplot(competencias_long, aes(x = variable, fill = value)) +
geom_bar(position = "fill", aes(y = ..count../sum(..count..))) +
facet_wrap(~ Grupo_de_estudio) +
scale_fill_brewer(palette = "Set3") +
scale_y_continuous(labels = scales::percent_format(scale = 100)) +
labs(title = "Proporción de items en competencias teóricas por grupo",
x = "",
y = "",
fill = "Escala de Likert") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

data <- data %>%
mutate(
Entendió_principios_teóricos = as.numeric(as.character(Entendió.principios.teóricos)),
Explicó_conceptos_anatómicos = as.numeric(as.character(Explicó.conceptos.anatómicos)),
Conocimiento_en_terminología = as.numeric(as.character(Conocimiento.en.terminología)),
Identificó_estructuras_en_cadáver = as.numeric(as.character(Identificó.estructuras.en.cadáver)),
Comprendió_funciones_y_relaciones = as.numeric(as.character(Comprendió.funciones.y.relaciones)),
Relacionó_teoría_con_práctica = as.numeric(as.character(Relacionó.teoría.con.práctica)),
Demostró_comprensión_de_anatomías_normales = as.numeric(as.character(Demostró.comprensión.de.anatomías.normales))
)
variables_teoricas <- c("Entendió_principios_teóricos",
"Explicó_conceptos_anatómicos",
"Conocimiento_en_terminología",
"Identificó_estructuras_en_cadáver",
"Comprendió_funciones_y_relaciones",
"Relacionó_teoría_con_práctica",
"Demostró_comprensión_de_anatomías_normales")
for (variable in variables_teoricas) {
p <- ggplot(data, aes_string(x = variable, color = "Grupo_de_estudio")) +
geom_freqpoly(stat = "bin", binwidth = 1, size = 1.5) +
scale_x_continuous(breaks = c(1, 2, 3, 4, 5), labels = c("Totalmente en desacuerdo",
"En desacuerdo",
"Neutro",
"De acuerdo",
"Totalmente de acuerdo")) +
labs(title = paste("Polígono de Frecuencias para", variable),
x = "Puntaje en Escala de Likert",
y = "Frecuencia",
color = "Grupo de Estudio") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
print(p)
}
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.







data$Competencias_Teoricas <- rowSums(data[, c("Entendió.principios.teóricos",
"Explicó.conceptos.anatómicos",
"Conocimiento.en.terminología",
"Identificó.estructuras.en.cadáver",
"Comprendió.funciones.y.relaciones",
"Relacionó.teoría.con.práctica",
"Demostró.comprensión.de.anatomías.normales")])
t_test_teoricas <- t.test(data$Competencias_Teoricas ~ data$Grupo_de_estudio)
print(t_test_teoricas)
##
## Welch Two Sample t-test
##
## data: data$Competencias_Teoricas by data$Grupo_de_estudio
## t = 4.6584, df = 93.493, p-value = 1.053e-05
## alternative hypothesis: true difference in means between group Control and group Experimental is not equal to 0
## 95 percent confidence interval:
## 1.803556 4.483401
## sample estimates:
## mean in group Control mean in group Experimental
## 24.04348 20.90000
ggplot(data, aes(x = Grupo_de_estudio, y = Competencias_Teoricas, fill = Grupo_de_estudio)) +
geom_boxplot() +
labs(title = "",
x = "",
y = "Puntaje total de las competencias teóricas") +
theme_minimal()

competencias_practicas <- data[, c("Realizó.disecciones.con.destreza",
"Usó.herramientas.de.disección",
"Aplicó.técnicas.de.disección.correctamente",
"Colaboró.en.actividades.grupales",
"Identificó.y.resolvió.problemas",
"Mantuvo.entorno.seguro",
"Aplicó.conocimientos.a.problemas.clínicos",
"Grupo_de_estudio")]
competencias_long <- melt(competencias_practicas, id.vars = "Grupo_de_estudio")
competencias_long$value <- factor(competencias_long$value,
levels = c(1, 2, 3, 4, 5),
labels = c("Totalmente de acuerdo", "De acuerdo", "Neutro", "En desacuerdo", "Totalmente en desacuerdo"))
ggplot(competencias_long, aes(x = variable, fill = value)) +
geom_bar(position = "fill", aes(y = ..count../sum(..count..))) +
facet_wrap(~ Grupo_de_estudio) +
scale_fill_brewer(palette = "Set3") +
scale_y_continuous(labels = scales::percent_format(scale = 100)) + # Cambiar las proporciones a porcentaje
labs(title = "Proporción de items en competencias prácticas por grupo",
x = "",
y = "",
fill = "Escala de Likert") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

data <- data %>%
mutate(
Realizó_disecciones_con_destreza = as.numeric(as.character(Realizó.disecciones.con.destreza)),
Usó_herramientas_de_disección = as.numeric(as.character(Usó.herramientas.de.disección)),
Aplicó_técnicas_de_disección_correctamente = as.numeric(as.character(Aplicó.técnicas.de.disección.correctamente)),
Colaboró_en_actividades_grupales = as.numeric(as.character(Colaboró.en.actividades.grupales)),
Identificó_y_resolvió_problemas = as.numeric(as.character(Identificó.y.resolvió.problemas)),
Mantuvo_entorno_seguro = as.numeric(as.character(Mantuvo.entorno.seguro)),
Aplicó_conocimientos_a_problemas_clínicos = as.numeric(as.character(Aplicó.conocimientos.a.problemas.clínicos))
)
variables_practicas <- c("Realizó_disecciones_con_destreza",
"Usó_herramientas_de_disección",
"Aplicó_técnicas_de_disección_correctamente",
"Colaboró_en_actividades_grupales",
"Identificó_y_resolvió_problemas",
"Mantuvo_entorno_seguro",
"Aplicó_conocimientos_a_problemas_clínicos")
for (variable in variables_practicas) {
p <- ggplot(data, aes_string(x = variable, color = "Grupo_de_estudio")) +
geom_freqpoly(stat = "bin", binwidth = 1, size = 1.5) +
scale_x_continuous(breaks = c(1, 2, 3, 4, 5), labels = c("Totalmente en desacuerdo",
"En desacuerdo",
"Neutro",
"De acuerdo",
"Totalmente de acuerdo")) +
labs(title = paste("Polígono de Frecuencias para", variable),
x = "Puntaje en Escala de Likert",
y = "Frecuencia",
color = "Grupo de Estudio") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
print(p)
}







data$Competencias_Practicas <- rowSums(data[, c("Realizó.disecciones.con.destreza",
"Usó.herramientas.de.disección",
"Aplicó.técnicas.de.disección.correctamente",
"Colaboró.en.actividades.grupales",
"Identificó.y.resolvió.problemas",
"Mantuvo.entorno.seguro",
"Aplicó.conocimientos.a.problemas.clínicos")])
t_test_practicas <- t.test(data$Competencias_Practicas ~ data$Grupo_de_estudio)
print(t_test_practicas)
##
## Welch Two Sample t-test
##
## data: data$Competencias_Practicas by data$Grupo_de_estudio
## t = 1.9599, df = 93.881, p-value = 0.05297
## alternative hypothesis: true difference in means between group Control and group Experimental is not equal to 0
## 95 percent confidence interval:
## -0.02042783 3.14564522
## sample estimates:
## mean in group Control mean in group Experimental
## 23.28261 21.72000
ggplot(data, aes(x = Grupo_de_estudio, y = Competencias_Practicas, fill = Grupo_de_estudio)) +
geom_boxplot() +
labs(title = "",
x = "",
y = "Puntaje total de las competencias prácticas") +
theme_minimal()

competencias_actitudinales <- data[, c("Mostró.interés.en.prácticas",
"Respetó.opiniones.en.grupo",
"Actitud.ética.y.profesional",
"Aceptó.retroalimentación",
"Mostró.empatía",
"Fomentó.ambiente.colaborativo",
"Grupo_de_estudio")]
competencias_long <- melt(competencias_actitudinales, id.vars = "Grupo_de_estudio")
competencias_long$value <- factor(competencias_long$value,
levels = c(1, 2, 3, 4, 5),
labels = c("Totalmente de acuerdo", "De acuerdo", "Neutro", "En desacuerdo", "Totalmente en desacuerdo"))
ggplot(competencias_long, aes(x = variable, fill = value)) +
geom_bar(position = "fill", aes(y = ..count../sum(..count..))) +
facet_wrap(~ Grupo_de_estudio) +
scale_fill_brewer(palette = "Set3") +
scale_y_continuous(labels = scales::percent_format(scale = 100)) + # Cambiar las proporciones a porcentaje
labs(title = "Proporción de items en competencias actitudinales por grupo",
x = "",
y = "Porcentaje de Respuestas",
fill = "Escala de Likert") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

data <- data %>%
mutate(
Mostró_interés_en_prácticas = as.numeric(as.character(Mostró.interés.en.prácticas)),
Respetó_opiniones_en_grupo = as.numeric(as.character(Respetó.opiniones.en.grupo)),
Actitud_ética_y_profesional = as.numeric(as.character(Actitud.ética.y.profesional)),
Aceptó_retroalimentación = as.numeric(as.character(Aceptó.retroalimentación)),
Mostró_empatía = as.numeric(as.character(Mostró.empatía)),
Fomentó_ambiente_colaborativo = as.numeric(as.character(Fomentó.ambiente.colaborativo))
)
variables_actitudinales <- c("Mostró_interés_en_prácticas",
"Respetó_opiniones_en_grupo",
"Actitud_ética_y_profesional",
"Aceptó_retroalimentación",
"Mostró_empatía",
"Fomentó_ambiente_colaborativo")
for (variable in variables_actitudinales) {
# Crear el gráfico de polígono de frecuencias
p <- ggplot(data, aes_string(x = variable, color = "Grupo_de_estudio")) +
geom_freqpoly(stat = "bin", binwidth = 1, size = 1.5) +
scale_x_continuous(breaks = c(1, 2, 3, 4, 5), labels = c("Totalmente en desacuerdo",
"En desacuerdo",
"Neutro",
"De acuerdo",
"Totalmente de acuerdo")) +
labs(title = paste("Polígono de Frecuencias para", variable),
x = "Puntaje en Escala de Likert",
y = "Frecuencia",
color = "Grupo de Estudio") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
print(p)
}






data$Competencias_Actitudinales <- rowSums(data[, c("Mostró.interés.en.prácticas",
"Respetó.opiniones.en.grupo",
"Actitud.ética.y.profesional",
"Aceptó.retroalimentación",
"Mostró.empatía",
"Fomentó.ambiente.colaborativo")])
t_test_actitudinales <- t.test(data$Competencias_Actitudinales ~ data$Grupo_de_estudio)
print(t_test_actitudinales)
##
## Welch Two Sample t-test
##
## data: data$Competencias_Actitudinales by data$Grupo_de_estudio
## t = 2.3052, df = 93.514, p-value = 0.02337
## alternative hypothesis: true difference in means between group Control and group Experimental is not equal to 0
## 95 percent confidence interval:
## 0.219255 2.944223
## sample estimates:
## mean in group Control mean in group Experimental
## 19.52174 17.94000
ggplot(data, aes(x = Grupo_de_estudio, y = Competencias_Actitudinales, fill = Grupo_de_estudio)) +
geom_boxplot() +
labs(title = "Boxplot de Competencias Actitudinales por Grupo",
x = "",
y = "Puntaje total de las competencias actitudinales") +
theme_minimal()

# Interpretación para Competencias Teóricas
data$Interpretacion_Teoricas <- cut(data$Competencias_Teoricas,
breaks = c(-Inf, 14, 19, 24, 29, 35),
labels = c("Deficiencias graves",
"Dificultades para aplicar conceptos teóricos",
"Comprensión aceptable con áreas de mejora",
"Desempeño sólido y aplicación adecuada",
"Dominio excepcional"))
# Interpretación para Competencias Prácticas
data$Interpretacion_Practicas <- cut(data$Competencias_Practicas,
breaks = c(-Inf, 14, 19, 24, 29, 35),
labels = c("Deficiencias graves en la práctica",
"Deficiencias en la ejecución de técnicas",
"Rendimiento adecuado con áreas de mejora",
"Desempeño efectivo en la manipulación",
"Destreza técnica avanzada"))
# Interpretación para Competencias Actitudinales
data$Interpretacion_Actitudinales <- cut(data$Competencias_Actitudinales,
breaks = c(-Inf, 9, 14, 19, 24, 30),
labels = c("Actitud inadecuada",
"Falta de interés o actitud negativa",
"Actitud aceptable con posibilidad de mejora",
"Responsabilidad y motivación",
"Participación activa e interés"))
tabla_teoricas <- table(data$Grupo_de_estudio, data$Interpretacion_Teoricas)
chi_teoricas <- chisq.test(tabla_teoricas)
## Warning in chisq.test(tabla_teoricas): Chi-squared approximation may be
## incorrect
resultados_teoricas <- data.frame(
Interpretacion = names(tabla_teoricas["Control", ]),
Control = as.numeric(tabla_teoricas["Control", ]),
Experimental = as.numeric(tabla_teoricas["Experimental", ]),
Chi_square = rep(chi_teoricas$statistic, length(colnames(tabla_teoricas))),
p_value = rep(chi_teoricas$p.value, length(colnames(tabla_teoricas)))
)
kable(resultados_teoricas, caption = "Frecuencia de Interpretaciones en Competencias Teóricas")
Frecuencia de Interpretaciones en Competencias
Teóricas
| Deficiencias graves |
0 |
1 |
15.39853 |
0.0039422 |
| Dificultades para aplicar conceptos teóricos |
4 |
12 |
15.39853 |
0.0039422 |
| Comprensión aceptable con áreas de mejora |
20 |
30 |
15.39853 |
0.0039422 |
| Desempeño sólido y aplicación adecuada |
19 |
7 |
15.39853 |
0.0039422 |
| Dominio excepcional |
3 |
0 |
15.39853 |
0.0039422 |
tabla_practicas <- table(data$Grupo_de_estudio, data$Interpretacion_Practicas)
chi_practicas <- chisq.test(tabla_practicas)
## Warning in chisq.test(tabla_practicas): Chi-squared approximation may be
## incorrect
resultados_practicas <- data.frame(
Interpretacion = names(tabla_practicas["Control", ]),
Control = as.numeric(tabla_practicas["Control", ]),
Experimental = as.numeric(tabla_practicas["Experimental", ]),
Chi_square = rep(chi_practicas$statistic, length(colnames(tabla_practicas))),
p_value = rep(chi_practicas$p.value, length(colnames(tabla_practicas)))
)
kable(resultados_practicas, caption = "Frecuencia de Interpretaciones en Competencias Prácticas")
Frecuencia de Interpretaciones en Competencias
Prácticas
| Deficiencias graves en la práctica |
0 |
2 |
8.315606 |
0.0806778 |
| Deficiencias en la ejecución de técnicas |
6 |
13 |
8.315606 |
0.0806778 |
| Rendimiento adecuado con áreas de mejora |
25 |
20 |
8.315606 |
0.0806778 |
| Desempeño efectivo en la manipulación |
12 |
15 |
8.315606 |
0.0806778 |
| Destreza técnica avanzada |
3 |
0 |
8.315606 |
0.0806778 |
tabla_actitudinales <- table(data$Grupo_de_estudio, data$Interpretacion_Actitudinales)
chi_actitudinales <- chisq.test(tabla_actitudinales)
## Warning in chisq.test(tabla_actitudinales): Chi-squared approximation may be
## incorrect
resultados_actitudinales <- data.frame(
Interpretacion = names(tabla_actitudinales["Control", ]),
Control = as.numeric(tabla_actitudinales["Control", ]),
Experimental = as.numeric(tabla_actitudinales["Experimental", ]),
Chi_square = rep(chi_actitudinales$statistic, length(colnames(tabla_actitudinales))),
p_value = rep(chi_actitudinales$p.value, length(colnames(tabla_actitudinales)))
)
kable(resultados_actitudinales, caption = "Frecuencia de Interpretaciones en Competencias")
Frecuencia de Interpretaciones en Competencias
| Actitud inadecuada |
0 |
1 |
3.22012 |
0.5216873 |
| Falta de interés o actitud negativa |
2 |
6 |
3.22012 |
0.5216873 |
| Actitud aceptable con posibilidad de mejora |
23 |
22 |
3.22012 |
0.5216873 |
| Responsabilidad y motivación |
19 |
20 |
3.22012 |
0.5216873 |
| Participación activa e interés |
2 |
1 |
3.22012 |
0.5216873 |