Aviso. Este documento es un ejercicio metodológico. Todos los datos fueron simulados para ilustrar el procedimiento de análisis, por lo que los resultados no constituyen evidencia sobre el comportamiento de personas reales.
La eutrofización ocurre cuando el exceso de nitrógeno y fósforo en un cuerpo de agua favorece el crecimiento de algas y cianobacterias y, al descomponerse, reduce el oxígeno disuelto. Estos nutrientes llegan al agua por descargas de aguas residuales, escorrentía agrícola y manejo inadecuado de fertilizantes.
Una noticia o pieza de divulgación sobre este problema puede centrarse en sus causas, en las mediciones que lo dimensionan o en sus consecuencias para los ecosistemas y las comunidades. Los tres énfasis describen el mismo fenómeno, pero podrían orientar la atención del público hacia aspectos distintos. Este estudio evalúa si ese énfasis cambia la comprensión que alcanzan las personas.
Pregunta de investigación. ¿Cambia la comprensión de la eutrofización según el énfasis con que se presenta un mismo contenido científico, una vez controlado el conocimiento previo de los participantes?
Objetivo general. Comparar el efecto de tres énfasis informativos sobre la comprensión de la eutrofización mediante un diseño de bloques completos al azar.
Como objetivos específicos, se compara el puntaje de comprensión entre los énfasis causal, cuantitativo y de consecuencias, y se evalúa cuánta variación entre participantes se explica por el conocimiento previo.
Hipótesis. La hipótesis nula (H0) plantea que el puntaje medio de comprensión es igual en los tres tratamientos, una vez controlado el bloque. La hipótesis alternativa (H1) plantea que al menos un tratamiento tiene un puntaje medio distinto. No se asume de antemano que algún énfasis sea superior.
Se emplea un diseño de bloques completos al azar (DBA) con tres tratamientos y doce bloques, para un total de 36 participantes. Cada participante es una unidad experimental, porque recibe un único material y aporta una sola observación.
El bloqueo se justifica porque las personas llegan con niveles muy distintos de conocimiento sobre contaminación del agua. Sin bloques, el efecto del material podría confundirse con lo que cada persona ya sabía. Por eso los participantes se ordenan según una prueba previa y se agrupan en tríos con puntajes contiguos. Dentro de cada bloque se sortea qué persona recibe cada tratamiento.
| Elemento | Descripción |
|---|---|
| Diseño | Bloques completos al azar |
| Tratamientos | Causal, Cuantitativo y Consecuencias |
| Bloques | 12 grupos de 3 personas con conocimiento previo similar |
| Unidad experimental | Cada participante |
| Total | 36 participantes (12 por tratamiento) |
| Variable de bloqueo | Puntaje en la prueba de conocimiento previo (0 a 10) |
| Variable respuesta | Puntaje de comprensión posterior a la exposición (0 a 12) |
Los tres materiales explican el mismo fenómeno con la misma información factual. Lo único que cambia es el orden y el énfasis. El material causal organiza la explicación según cómo llegan los nutrientes, crecen las algas y baja el oxígeno. El cuantitativo la organiza según concentraciones de nutrientes e indicadores de calidad del agua. El de consecuencias la organiza según los efectos sobre los organismos, la pesca, la recreación y los costos asociados.
Para que el énfasis sea la única diferencia sistemática, los tres materiales mantienen constantes la información científica esencial, la extensión aproximada, el nivel de legibilidad, el tiempo de exposición, la fuente atribuida y la cantidad de datos y recursos visuales. Antes de aplicarlos se construye una matriz de contenido común, y tanto los textos como el instrumento se derivan de ella. Los tres énfasis no son categorías excluyentes, por lo que el estudio compara formas de jerarquizar información equivalente y no tres tipos de comunicación independientes.
Primero cada persona responde una prueba breve de conocimiento previo, con preguntas distintas a las del examen final. Luego se forman los bloques, se asignan aleatoriamente los tratamientos dentro de cada bloque y cada participante lee solo su material, de forma individual y sin consultar otras fuentes. Por último todos responden el mismo instrumento de 12 preguntas cerradas de un punto cada una, con cuatro sobre el proceso, cuatro sobre la interpretación de evidencia y cuatro sobre las consecuencias. Varias preguntas parten de una situación nueva, una laguna recreativa con agua verdosa y acumulación de algas cerca de terrenos con fertilizantes, para comprobar si lo aprendido se aplica a un caso distinto del presentado. Quien corrige no sabe qué material vio cada participante.
El puntaje de comprensión se genera como una base de 4 puntos, más 0,5 puntos por cada punto de conocimiento previo, más el efecto del tratamiento y un error aleatorio con desviación estándar de 1,3. Los efectos de tratamiento se fijan en 0,6 para el énfasis causal, 0 para el cuantitativo y 0,3 para el de consecuencias. Son diferencias pequeñas a propósito, para no forzar un resultado significativo. Los puntajes se redondean y se truncan al rango de 0 a 12.
set.seed(2028)
b <- 12 # bloques
k <- 3 # tratamientos
niveles <- c("Causal", "Cuantitativo", "Consecuencias")
tau <- c(Causal = 0.6, Cuantitativo = 0, Consecuencias = 0.3)
# Conocimiento previo (0 a 10), ordenado para formar bloques de 3 contiguos
pretest <- sort(round(pmin(10, pmax(0, rnorm(b * k, mean = 5, sd = 2))), 1))
datos <- data.frame(
id = 1:(b * k),
pretest = pretest,
bloque = factor(rep(1:b, each = k))
)
# Aleatorización independiente dentro de cada bloque
datos$tratamiento <- factor(
unlist(lapply(1:b, function(i) sample(niveles))),
levels = niveles
)
# Puntaje de comprensión
datos$puntaje <- 4 + 0.5 * datos$pretest +
tau[as.character(datos$tratamiento)] +
rnorm(nrow(datos), mean = 0, sd = 1.3)
datos$puntaje <- pmin(12, pmax(0, round(datos$puntaje)))
head(datos, 9)
El diccionario de variables es el siguiente. id
identifica al participante, pretest es el puntaje de
conocimiento previo de 0 a 10, bloque es el trío de
conocimiento similar, tratamiento es el material recibido y
puntaje es la comprensión posterior de 0 a 12.
medias <- tapply(datos$puntaje, datos$tratamiento, mean)
desv <- tapply(datos$puntaje, datos$tratamiento, sd)
tabla_desc <- data.frame(
Tratamiento = names(medias),
n = as.vector(table(datos$tratamiento)),
Media = round(as.vector(medias), 2),
DE = round(as.vector(desv), 2),
Mediana = as.vector(tapply(datos$puntaje, datos$tratamiento, median))
)
knitr::kable(tabla_desc, caption = "Puntaje de comprensión por tratamiento")
| Tratamiento | n | Media | DE | Mediana |
|---|---|---|---|---|
| Causal | 12 | 6.83 | 1.53 | 7.0 |
| Cuantitativo | 12 | 6.50 | 1.45 | 6.5 |
| Consecuencias | 12 | 7.25 | 1.22 | 7.5 |
Las medias observadas fueron de 6.83 puntos para el énfasis causal, 6.5 para el cuantitativo y 7.25 para el de consecuencias.
boxplot(puntaje ~ tratamiento, data = datos,
xlab = "Tratamiento", ylab = "Puntaje de comprensión (0 a 12)",
main = "Comprensión según el énfasis informativo", col = "grey90")
stripchart(puntaje ~ tratamiento, data = datos, vertical = TRUE,
method = "jitter", pch = 16, add = TRUE)
Para ver cómo se comporta el bloqueo, se grafica el puntaje de cada tratamiento a lo largo de los bloques ordenados por conocimiento previo.
interaction.plot(datos$bloque, datos$tratamiento, datos$puntaje,
xlab = "Bloque (ordenado por conocimiento previo)",
ylab = "Puntaje", trace.label = "Tratamiento", lty = 1, lwd = 2)
Si las líneas suben de forma aproximadamente paralela, el supuesto de aditividad entre bloque y tratamiento es razonable.
El modelo del diseño es
\[Y_{ij} = \mu + \tau_i + \beta_j + \varepsilon_{ij}\]
donde \(Y_{ij}\) es el puntaje del participante que recibió el tratamiento \(i\) en el bloque \(j\), \(\mu\) es la media general, \(\tau_i\) es el efecto del tratamiento, \(\beta_j\) es el efecto del bloque y \(\varepsilon_{ij}\) es el error experimental.
modelo <- aov(puntaje ~ bloque + tratamiento, data = datos)
tabla_anova <- summary(modelo)[[1]]
tabla_anova
Para el factor tratamiento, el estadístico F fue de 1.33 con un valor p de 0.284. Con un nivel de significancia de 0,05, no se rechaza H0, de modo que los datos simulados no muestran diferencias claras entre los énfasis. El tamaño de efecto, medido con eta cuadrado parcial, fue de 0.108. El bloque tuvo un valor p de 0.025, lo que indica que el conocimiento previo explica una parte importante de la variación entre participantes.
tk <- TukeyHSD(modelo, "tratamiento")
knitr::kable(round(tk$tratamiento, 3),
caption = "Comparaciones de Tukey (diferencia, límites del IC 95 % y valor p ajustado)")
| diff | lwr | upr | p adj | |
|---|---|---|---|---|
| Cuantitativo-Causal | -0.333 | -1.489 | 0.822 | 0.752 |
| Consecuencias-Causal | 0.417 | -0.739 | 1.572 | 0.643 |
| Consecuencias-Cuantitativo | 0.750 | -0.406 | 1.906 | 0.254 |
plot(tk, las = 1)
La interpretación de estas comparaciones solo es pertinente si el ANOVA mostró diferencias. Aun así, los intervalos de confianza son informativos. Un intervalo que incluye el cero indica que, con estos datos, no puede descartarse que no haya diferencia entre esos dos tratamientos.
La eficiencia relativa compara este diseño con un diseño completamente al azar con el mismo número de observaciones. Un valor mayor que 1 indica que el bloqueo ganó precisión.
MSB <- tabla_anova[1, "Mean Sq"]
MSE <- tabla_anova[3, "Mean Sq"]
RE <- ((b - 1) * MSB + b * (k - 1) * MSE) / ((b * k - 1) * MSE)
round(RE, 2)
## [1] 1.52
La eficiencia relativa fue de 1.52, es decir que un DCA habría necesitado aproximadamente 1.5 veces más participantes para lograr la misma precisión.
par(mfrow = c(1, 2))
plot(modelo, which = 1) # residuos frente a valores ajustados
plot(modelo, which = 2) # gráfico cuantil-cuantil
par(mfrow = c(1, 1))
shapiro.test(residuals(modelo))
##
## Shapiro-Wilk normality test
##
## data: residuals(modelo)
## W = 0.97582, p-value = 0.6037
bartlett.test(puntaje ~ tratamiento, data = datos)
##
## Bartlett test of homogeneity of variances
##
## data: puntaje by tratamiento
## Bartlett's K-squared = 0.57829, df = 2, p-value = 0.7489
Los residuos deben distribuirse sin patrón en torno a cero y seguir aproximadamente la diagonal en el gráfico cuantil-cuantil. La prueba de Shapiro-Wilk evalúa la normalidad de los residuos y la de Bartlett evalúa la homogeneidad de varianzas entre tratamientos. Con solo 36 observaciones, estas pruebas tienen poca potencia, por lo que los gráficos pesan más que el valor p. Como alternativa que no requiere normalidad, se aplica la prueba de Friedman, que respeta la estructura de bloques.
friedman.test(puntaje ~ tratamiento | bloque, data = datos)
##
## Friedman rank sum test
##
## data: puntaje and tratamiento and bloque
## Friedman chi-squared = 2.8889, df = 2, p-value = 0.2359
Como el bloque se construyó a partir del conocimiento previo, se compara con un modelo que usa ese puntaje como covariable continua. Si ambos modelos llegan a conclusiones similares sobre el tratamiento, el resultado es más robusto a la forma de controlar el conocimiento previo.
modelo_cov <- aov(puntaje ~ pretest + tratamiento, data = datos)
summary(modelo_cov)
## Df Sum Sq Mean Sq F value Pr(>F)
## pretest 1 20.69 20.688 14.791 0.000539 ***
## tratamiento 2 2.86 1.430 1.022 0.371284
## Residuals 32 44.76 1.399
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
La potencia de este diseño también depende de la diferencia que se quiera detectar. Se estima por simulación con 1000 repeticiones para distintas diferencias entre el mejor y el peor tratamiento.
set.seed(99)
potencia <- function(delta, nsim = 1000, sigma = 1.3) {
mean(replicate(nsim, {
pre <- sort(rnorm(b * k, 5, 2))
bl <- factor(rep(1:b, each = k))
tr <- factor(unlist(lapply(1:b, function(i) sample(1:3))))
y <- 4 + 0.5 * pre + c(delta, 0, delta / 2)[tr] + rnorm(b * k, 0, sigma)
summary(aov(y ~ bl + tr))[[1]][["Pr(>F)"]][2] < 0.05
}))
}
deltas <- c(0.3, 0.6, 1, 1.5)
pot <- sapply(deltas, potencia)
knitr::kable(data.frame(`Diferencia máxima (puntos)` = deltas,
Potencia = round(pot, 2), check.names = FALSE),
caption = "Potencia estimada con 12 bloques y 3 tratamientos")
| Diferencia máxima (puntos) | Potencia |
|---|---|
| 0.3 | 0.06 |
| 0.6 | 0.13 |
| 1.0 | 0.34 |
| 1.5 | 0.63 |
Esta tabla muestra que, con 36 participantes, solo diferencias relativamente grandes se detectan con alta probabilidad. Para un estudio real habría que fijar la diferencia mínima de interés y recalcular el tamaño de muestra.
La principal amenaza es que los materiales difieran en algo más que el énfasis, por ejemplo en extensión, dificultad o atractivo visual, porque entonces no podría atribuirse el resultado al énfasis. Se previene con la matriz de contenido común, una revisión de equivalencia y un piloto con pocas personas. La prueba previa podría orientar la atención de los participantes, y por eso usa preguntas distintas a las del instrumento final. El bloqueo reduce la variación por conocimiento previo pero no elimina otras diferencias individuales, de modo que la aleatorización dentro del bloque sigue siendo necesaria. Con una observación por celda no puede probarse la interacción entre bloque y tratamiento, y solo se revisa con el gráfico de perfiles.
La medición es inmediata, así que no informa sobre la retención en el tiempo. Además, evalúa un fenómeno ambiental específico y no permite concluir nada sobre la alfabetización científica en general. La dimensión de evidencia podría favorecer al material cuantitativo, por lo que cualquier análisis por dimensión debe tratarse como exploratorio y ajustarse por comparaciones múltiples. Un estudio real exigiría además consentimiento informado y datos anónimos.
Este ejercicio muestra cómo analizar un DBA desde la simulación hasta el diagnóstico, y cómo el bloqueo por conocimiento previo aumenta la precisión al separar la variación entre participantes del efecto del tratamiento. En cuanto a la pregunta de comunicación ambiental, los resultados deben leerse solo como una demostración del procedimiento. Una respuesta empírica requeriría aplicar el diseño con participantes reales y materiales validados.
sessionInfo()
## R version 4.6.0 (2026-04-24)
## Platform: aarch64-apple-darwin23
## Running under: macOS Ventura 13.5
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/4.6/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.6/Resources/lib/libRlapack.dylib; LAPACK version 3.12.1
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## time zone: America/Panama
## tzcode source: internal
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## loaded via a namespace (and not attached):
## [1] digest_0.6.39 R6_2.6.1 fastmap_1.2.0 xfun_0.58
## [5] cachem_1.1.0 knitr_1.52 htmltools_0.5.9 rmarkdown_2.32
## [9] lifecycle_1.0.5 cli_3.6.6 vctrs_0.7.3 sass_0.4.10
## [13] jquerylib_0.1.4 compiler_4.6.0 rstudioapi_0.19.0 tools_4.6.0
## [17] evaluate_1.0.5 bslib_0.11.0 yaml_2.3.12 otel_0.2.0
## [21] jsonlite_2.0.0 rlang_1.3.0