El Diseño en Bloques Completos al Azar (DBCA) (en inglés, Randomized Complete Block Design, RCBD) es un diseño de dos vías sin interacción cuyo propósito central es aumentar la precisión de la comparación de tratamientos cuando existe una fuente de variación “molesta” (nuisance factor) que puede controlarse formando bloques homogéneos. La idea es que la variabilidad entre bloques se “separe” explícitamente en el modelo y en la ANOVA, reduciendo el cuadrado medio del error (CME/MSE) y, por tanto, aumentando potencia para detectar efectos de tratamientos.
El documento proporcionado (notas atribuidas a Felipe de Mendiburu) enuncia el modelo aditivo, los estimadores por mínimos cuadrados, y las fórmulas computacionales de sumas de cuadrados con el término de corrección (TC), además de un ejemplo con su tabla ANVA/ANOVA, contrastes ortogonales y la prueba no paramétrica de Friedman.
A partir del ejemplo del documento (5 tratamientos/variedades y 3 bloques; 15 observaciones), al reproducir el cálculo paso a paso se obtiene exactamente la misma ANOVA:
Los contrastes ortogonales propuestos en el documento descomponen exactamente la suma de cuadrados de tratamientos y muestran, por ejemplo, que el contraste “Testigo vs. (V1,V2,V3,V4)” es altamente significativo.
La prueba de Friedman (por rangos, alternativa no paramétrica apropiada cuando se duda de normalidad) aplicada a esos mismos datos produce \(\chi^2\approx 8.8\) y \(p\approx 0.0663\), coherente con lo reportado en las notas: no se rechaza a \(\alpha=0.05\), pero sugiere señal moderada.
En DBCA se asume que las unidades experimentales no son completamente homogéneas; por ello se agrupan en bloques tales que dentro de cada bloque las unidades son “lo más comparables posible”. Cada bloque contiene todos los tratamientos exactamente una vez (bloque completo), y la aleatorización ocurre dentro de cada bloque. Esto coincide con las “características” del diseño enumeradas en el documento: heterogeneidad global, bloques internos homogéneos, y asignación aleatoria de tratamientos en cada bloque.
La justificación estadística del bloqueo se puede expresar así:
Cuándo conviene DBCA. Es especialmente útil en ensayos de campo (agronomía, zootecnia, forestales) donde hay gradientes de suelo, humedad, sombra, fertilidad, etc. El diseño busca que esas diferencias queden “capturadas” por el componente de bloques, no por el error.
Qué no resuelve. DBCA estándar (una observación por celda bloque×tratamiento) no permite estimar una interacción tratamiento×bloque; por tanto, se asume aditividad (interacción despreciable). Algunas guías docentes recomiendan evaluar aditividad cuando hay una observación por celda.
El documento plantea el modelo lineal:
\[ Y_{ij}=\mu+\tau_i+\beta_j+\varepsilon_{ij},\qquad i=1,\dots,t;\; j=1,\dots,b \]
donde \(\mu\) es el promedio general, \(\tau_i\) el efecto del tratamiento \(i\), \(\beta_j\) el efecto del bloque \(j\), y \(\varepsilon_{ij}\) el error experimental.
Este mismo modelo aparece en una fuente oficial de referencia para diseños bloqueados.
Para identificar de manera única los parámetros (la matriz de diseño no es de rango completo), se imponen restricciones como:
\[ \sum_{i=1}^{t}\tau_i=0,\qquad \sum_{j=1}^{b}\beta_j=0 \]
El hecho de requerir “condiciones laterales” (side conditions) y que la solución bajo estas restricciones conduce a estimadores basados en medias se documenta en notas de curso de diseño y análisis de experimentos.
En DBCA, el sustento para inferencia tipo ANOVA típicamente incluye:
Denote:
Bajo mínimos cuadrados con restricciones, los estimadores son:
\[ \hat{\mu}=\bar{Y}_{\cdot\cdot},\qquad \hat{\tau}_i=\bar{Y}_{i\cdot}-\bar{Y}_{\cdot\cdot},\qquad \hat{\beta}_j=\bar{Y}_{\cdot j}-\bar{Y}_{\cdot\cdot} \]
Estos estimadores aparecen explícitamente en el documento y en referencias docentes que discuten la solución bajo restricciones en el diseño en bloques completos.
La predicción (valor ajustado) para la celda \((i,j)\) es:
\[ \hat{Y}_{ij}=\hat{\mu}+\hat{\tau}_i+\hat{\beta}_j=\bar{Y}_{i\cdot}+\bar{Y}_{\cdot j}-\bar{Y}_{\cdot\cdot} \]
y el residuo (estimación del error experimental) queda:
\[ \hat{\varepsilon}_{ij}=Y_{ij}-\hat{Y}_{ij} =Y_{ij}-\bar{Y}_{i\cdot}-\bar{Y}_{\cdot j}+\bar{Y}_{\cdot\cdot} \]
La fórmula del residuo se muestra en las notas proporcionadas y también en material docente de DBCA/RCBD.
El documento incluye una “Tabla ANOVA DBCA” con fórmulas de sumas de cuadrados, grados de libertad, cuadrados medios y razón F. fileciteturn2file0 A continuación se presenta una versión unificada (con notación consistente \(t=\#\) tratamientos, \(b=\#\) bloques).
Para DBCA balanceado (una observación por celda), la descomposición es:
\[ SC_T = SC_{\text{Trt}} + SC_{\text{Bloq}} + SC_E \]
con:
\[ SC_T=\sum_{i=1}^t\sum_{j=1}^b \left(Y_{ij}-\bar{Y}_{\cdot\cdot}\right)^2 \]
\[ SC_{\text{Trt}} = b\sum_{i=1}^t\left(\bar{Y}_{i\cdot}-\bar{Y}_{\cdot\cdot}\right)^2 \]
\[ SC_{\text{Bloq}} = t\sum_{j=1}^b\left(\bar{Y}_{\cdot j}-\bar{Y}_{\cdot\cdot}\right)^2 \]
\[ SC_E = \sum_{i=1}^t\sum_{j=1}^b\left(Y_{ij}-\bar{Y}_{i\cdot}-\bar{Y}_{\cdot j}+\bar{Y}_{\cdot\cdot}\right)^2 \]
Estas expresiones son estándar en notas de curso de diseños bloqueados y coinciden con la tabla incluida en el documento y con referencias docentes externas.
Las notas usan el término de corrección (TC):
\[ TC=\frac{G^2}{N},\qquad N=tb \]
y reportan formas computacionales equivalentes, particularmente útiles para cálculo manual.
La equivalencia con las expresiones anteriores se enseña en material docente de DBCA que deriva las sumas de cuadrados a partir de totales y del término \(C=G^2/N\).
A continuación se muestra una tabla comparativa de fórmulas (balanceado):
| Componente | Forma con medias | Forma con totales + TC |
|---|---|---|
| \(SC_T\) | \(\sum\sum (Y_{ij}-\bar{Y}_{\cdot\cdot})^2\) | \(\sum\sum Y_{ij}^2 - TC\) |
| \(SC_{\text{Trt}}\) | \(b\sum(\bar{Y}_{i\cdot}-\bar{Y}_{\cdot\cdot})^2\) | \(\sum \dfrac{T_i^2}{b}-TC\) |
| \(SC_{\text{Bloq}}\) | \(t\sum(\bar{Y}_{\cdot j}-\bar{Y}_{\cdot\cdot})^2\) | \(\sum \dfrac{B_j^2}{t}-TC\) |
| \(SC_E\) | \(\sum\sum \hat{\varepsilon}_{ij}^2\) | \(SC_T - SC_{\text{Trt}} - SC_{\text{Bloq}}\) |
(Estas fórmulas aparecen, en esencia, en la tabla ANOVA del documento y en notas universitarias de DBCA/RCBD.)
Para el DBCA balanceado:
\[ gl_{\text{Trt}}=t-1,\qquad gl_{\text{Bloq}}=b-1,\qquad gl_E=(t-1)(b-1),\qquad gl_T=tb-1 \]
tal como se enuncia en el documento.
Cuadrados medios (CM/MS):
\[ CM_{\text{Trt}}=\frac{SC_{\text{Trt}}}{t-1},\quad CM_{\text{Bloq}}=\frac{SC_{\text{Bloq}}}{b-1},\quad CM_E=\frac{SC_E}{(t-1)(b-1)} \]
Hipótesis típicas:
Estadísticos:
\[ F_{\text{Trt}}=\frac{CM_{\text{Trt}}}{CM_E},\qquad F_{\text{Bloq}}=\frac{CM_{\text{Bloq}}}{CM_E} \]
Rechazo si \(F_{\text{obs}} > F_{1-\alpha;gl_1,gl_2}\). (En el ejemplo del documento se listan valores críticos \(F_{0.05}(4,8)\) y \(F_{0.01}(4,8)\).)
El valor-p se define como:
\[ p=\Pr\big(F_{gl_1,gl_2}\ge F_{\text{obs}}\;\big|\;H_0\big) \]
La distribución F y el uso de funciones de distribución/colas (CDF y survival function) están documentados en manuales oficiales de R y SciPy.
Nota docente sobre bloques. En muchas aplicaciones, los bloques se incluyen para controlar variación y no necesariamente para “probar” su significancia; existen advertencias en material de curso sobre la interpretación de la prueba F de bloques.
El documento presenta un ensayo de 5 variedades (V1, V2, V3, V4 y Testigo) evaluadas en 3 bloques (I, II, III), total \(N=15\) parcelas. La tabla de datos (follaje fresco) y los totales por tratamiento y por bloque están en las notas.
| Bloque | V1 | Testigo | V2 | V3 | V4 | Total bloque |
|---|---|---|---|---|---|---|
| I | 17.9 | 7.0 | 19.8 | 15.2 | 12.7 | 72.6 |
| II | 20.8 | 5.9 | 16.7 | 21.0 | 14.2 | 78.6 |
| III | 21.4 | 4.2 | 16.7 | 8.8 | 11.5 | 62.6 |
| Total trt | 60.1 | 17.1 | 53.2 | 45.0 | 38.4 | 213.8 |
En el documento se indica explícitamente: \[ TC=(213.8)^2/15,\quad SC_{\text{Variedades}}=\frac{(17.1)^2+\cdots+(38.4)^2}{3}-TC,\quad SC_{\text{Bloques}}=\frac{(72.6)^2+\cdots+(62.6)^2}{5}-TC \]
La siguiente tabla reproduce cada etapa con sustitución numérica:
| Cantidad | Fórmula | Sustitución | Resultado |
|---|---|---|---|
| \(N\) | \(N=b\,t\) | \(3\cdot 5\) | 15 |
| \(G\) | \(G=\sum\sum Y_{ij}\) | 213.8 | |
| \(\bar{Y}_{\cdot\cdot}\) | \(G/N\) | \(213.8/15\) | 14.2533 |
| \(TC\) | \(G^2/N\) | \(213.8^2/15\) | 3047.3627 |
| \(\sum\sum Y_{ij}^2\) | 3506.94 | ||
| \(SC_T\) | \(\sum\sum Y_{ij}^2-TC\) | \(3506.94-3047.3627\) | 459.5773 |
| \(\sum T_i^2/b\) | \(\sum T_i^2/b\) | \(\frac{60.1^2+\cdots+38.4^2}{3}\) | 3411.4067 |
| \(SC_{\text{Trt}}\) | \(\sum T_i^2/b-TC\) | \(3411.4067-3047.3627\) | 364.0440 |
| \(\sum B_j^2/t\) | \(\sum B_j^2/t\) | \(\frac{72.6^2+78.6^2+62.6^2}{5}\) | 3073.4960 |
| \(SC_{\text{Bloq}}\) | \(\sum B_j^2/t-TC\) | \(3073.4960-3047.3627\) | 26.1333 |
| \(SC_E\) | \(SC_T-SC_{\text{Trt}}-SC_{\text{Bloq}}\) | \(459.5773-364.0440-26.1333\) | 69.4000 |
(Estos valores coinciden con los reportados en “Resultados del ANVA” en el documento.)
Con \(t=5\), \(b=3\):
| Fuente | gl | SC | CM | F | \(p\) |
|---|---|---|---|---|---|
| Bloques | 2 | 26.1333 | 13.0667 | 1.5062 | 0.2785 |
| Tratamientos (Variedades) | 4 | 364.0440 | 91.0110 | 10.4912 | 0.0029 |
| Error | 8 | 69.4000 | 8.6750 | ||
| Total corregido | 14 | 459.5773 |
Los valores-p se obtienen con la cola superior de \(F\) (survival function), consistente con documentación oficial de SciPy/R para distribución F.
La tabla coincide con la salida incluida en el documento.
El documento incluye:
\[ CV(\%)=\frac{\sqrt{CM_E}}{\bar{Y}_{\cdot\cdot}}\cdot 100 \]
y reporta \(CV\approx 20.6\%\) y \(\bar{Y}_{\cdot\cdot}\approx 14.25\). Esto se verifica con los valores anteriores.
Esta sección justifica formalmente tres elementos presentes en las notas: comparaciones múltiples paramétricas, contrastes ortogonales y la alternativa no paramétrica de Friedman.
Tras una ANOVA significativa para tratamientos, es común evaluar qué pares de medias difieren. Tres procedimientos solicitados:
Para tratamientos \(i\) y \(k\), el estadístico t (con varianza combinada por \(CM_E\)) se escribe:
\[ t=\frac{\bar{Y}_{i\cdot}-\bar{Y}_{k\cdot}}{\sqrt{CM_E\left(\frac{1}{b}+\frac{1}{b}\right)}}= \frac{\bar{Y}_{i\cdot}-\bar{Y}_{k\cdot}}{\sqrt{\frac{2CM_E}{b}}} \]
La diferencia mínima significativa (balanceado) es:
\[ LSD_{\alpha}=t_{1-\alpha/2,\;gl_E}\sqrt{\frac{2CM_E}{b}} \]
Esta forma aparece en material docente en español para diseños balanceados.
Advertencia clásica: Fisher-LSD controla el error por comparación, pero no necesariamente el error familiar si se hacen muchas comparaciones.
Aplicación al ejemplo. Con \(CM_E=8.675\), \(b=3\), \(gl_E=8\) y \(\alpha=0.05\):
\[ LSD_{0.05}\approx 2.306\sqrt{\frac{2(8.675)}{3}}\approx 5.546 \]
(El valor crítico \(t\) coincide con el usado en las hojas/ejemplos de las notas para \(gl=8\).)
Tukey controla el error familiar para todas las comparaciones por pares mediante la distribución del rango studentizado. R lo documenta explícitamente (intervalos basados en el Studentized range statistic).
Para tamaños iguales, el umbral suele expresarse como:
\[ HSD_{\alpha}=q_{1-\alpha;\;t,\;gl_E}\sqrt{\frac{CM_E}{b}} \]
donde \(q\) es el cuantil de la
distribución del rango studentizado (implementada en R como
qtukey y en SciPy como studentized_range).
Aplicación al ejemplo. Con \(t=5\), \(gl_E=8\), \(CM_E=8.675\), \(b=3\):
\[ HSD_{0.05}\approx 4.886\sqrt{\frac{8.675}{3}}\approx 8.308 \]
Interpretación: Tukey es más conservador que LSD, por lo que requiere diferencias mayores para declarar significancia.
Bonferroni controla el error familiar ajustando el
nivel o los valores-p. En R,
p.adjust(..., method="bonferroni") documenta que la
corrección Bonferroni multiplica los valores-p por el número de
comparaciones.
Un resumen docente sobre control de FWER también lo formula como umbral \(p<\alpha/m\).
En forma de umbral para diferencias (balanceado, dos colas), con \(m=\binom{t}{2}\):
\[ LSD_{\text{Bonf}}=t_{1-\alpha/(2m),\;gl_E}\sqrt{\frac{2CM_E}{b}} \]
Aplicación al ejemplo. \(m=\binom{5}{2}=10\):
\[ LSD_{\text{Bonf}}\approx 3.833\sqrt{\frac{2(8.675)}{3}}\approx 9.217 \]
Las notas proponen un conjunto de contrastes ortogonales que permiten comparar grupos de tratamientos (“Testigo vs los demás”, “V1,V2 vs V3,V4”, etc.).
Un contraste lineal en tratamientos se define como:
\[ L=\sum_{i=1}^{t} c_i\,\bar{Y}_{i\cdot}, \qquad \text{con}\quad \sum c_i =0 \]
En diseño balanceado (mismo \(b\) para todos), la suma de cuadrados asociada al contraste es:
\[ SC(L)=\frac{L^2}{\operatorname{Var}(L)/\sigma^2}\approx \frac{\left(\sum c_i T_i\right)^2}{b\sum c_i^2} \]
Esta es precisamente la forma usada en el documento (con \(r\) como número de repeticiones/bloques).
Dos contrastes \(c\) y \(d\) son ortogonales (balanceado) si:
\[ \sum_{i=1}^t c_i d_i = 0 \]
y entonces la suma de cuadrados de tratamientos se particiona:
\[ SC_{\text{Trt}}=\sum_k SC(L_k) \]
En el ejemplo, las notas muestran que los cuatro contrastes ortogonales suman \(SC_{\text{Trt}}\).
Reproducción numérica de los contrastes del documento. Con totales \(T_i\) (V1, Testigo, V2, V3, V4) = (60.1, 17.1, 53.2, 45.0, 38.4), \(b=3\), \(CM_E=8.675\):
| Contraste | Coeficientes \((c_{V1},c_T,c_{V2},c_{V3},c_{V4})\) | \((\sum c_iT_i)^2\) | \(b\sum c_i^2\) | \(SC\) | \(F=SC/CM_E\) |
|---|---|---|---|---|---|
| C1: Testigo vs resto | \((-1,4,-1,-1,-1)\) | 16460.89 | 60 | 274.35 | 31.63 |
| C2: (V1,V2) vs (V3,V4) | \((-1,0,-1,1,1)\) | 894.01 | 12 | 74.50 | 8.59 |
| C3: V1 vs V2 | \((-1,0,1,0,0)\) | 47.61 | 6 | 7.94 | 0.91 |
| C4: V3 vs V4 | \((0,0,0,-1,1)\) | 43.56 | 6 | 7.26 | 0.84 |
La suma \(274.35+74.50+7.94+7.26\approx 364.04\) coincide con \(SC_{\text{Trt}}\).
Las notas incluyen la prueba de Friedman para DBCA
cuando no se desea asumir normalidad (usa rangos por bloque).
fileciteturn2file0
En la literatura, Friedman (1937) se reconoce como el proponente de una
prueba libre de distribución para diseños en bloques completos, basada
en rangos intra-bloque.
Para \(t\) tratamientos y \(b\) bloques (sin empates), la estadística típica es:
\[ \chi^2_F=\frac{12}{b\,t(t+1)}\sum_{i=1}^t R_i^2 - 3b(t+1) \]
donde \(R_i\) es la suma de rangos del tratamiento \(i\). Esta expresión aparece en el documento.
Aplicación al ejemplo de follaje (rangos en las notas). El documento presenta rangos por bloque y sumas \(R_i=(13,3,12,10,7)\) para (V1, Testigo, V2, V3, V4).
Entonces:
Esto coincide con la salida “Prueba de Friedman’s” y su valor-p reportado en las notas.
Comparaciones múltiples por rangos (LSD sobre \(R_i\)). Las notas proponen un umbral tipo LSD para diferencias de sumas de rangos y muestran su cálculo en hoja de cálculo.
En el ejemplo (DBCA con \(b=3,t=5\)), se usa:
\[ |R_i-R_j|>LSD_R,\qquad LSD_R=t_{1-\alpha/2,\;(b-1)(t-1)}\sqrt{\frac{2(bA-\sum R_i^2)}{(b-1)(t-1)}} \]
donde \(A=\sum\sum r_{ij}^2\). Con \(A=165\), \(\sum R_i^2=471\) y \(gl=(3-1)(5-1)=8\), el documento obtiene \(LSD_R\approx 5.6485\).
Didácticamente, se debe remarcar que (como en otras pruebas post hoc) conviene condicionar comparaciones post hoc a un resultado global suficientemente significativo, o usar métodos post hoc específicamente desarrollados para Friedman cuando sea el caso.
Dado el modelo ajustado, el diagnóstico se centra en los residuos \(\hat{\varepsilon}_{ij}\):
scipy.stats.normaltest) descrita en la
documentación de SciPy.En R, debe recordarse que aov está orientado a diseños
balanceados; si hay pérdida de balance por faltantes, la interpretación
puede complicarse y puede ser preferible un enfoque de modelos
lineales/mistos.
En términos prácticos, en DBCA el “tamaño de muestra” más relevante para potencia de tratamientos es el número de bloques \(b\) (réplicas por tratamiento). El bloqueo puede reducir \(CM_E\) y así aumentar potencia para un mismo \(b\).
Una forma estándar de pensar potencia en ANOVA usa la distribución
F no central; en R se recuerda que la F no central
introduce el parámetro ncp (parámetro de no
centralidad).
En ANOVA de un factor, se usa con frecuencia:
\[ \lambda = \frac{n\sum_{i=1}^t \alpha_i^2}{\sigma^2},\qquad \alpha_i=\mu_i-\mu \]
y se evalúa potencia con una F no central.
En DBCA balanceado, una heurística común es tratar \(n\) como el número de réplicas por tratamiento, es decir, \(n=b\).
Herramientas actuales recomendadas (R y Python).
En R, power.anova.test calcula potencia o despeja
parámetros para ANOVA balanceada.
En Python, statsmodels.stats.power.FTestAnovaPower
implementa potencia para ANOVA balanceada usando el tamaño de efecto de
Cohen \(f\).
Nota didáctica: Para DBCA, en cursos introductorios suele ser suficiente enseñar planificación como “ANOVA de un factor con \(n=b\)”, aclarando que el \(CM_E\) proviene del modelo con bloques.
Cuando falta una observación \(Y_{ij}\) en un DBCA, el diseño deja de ser perfectamente ortogonal; las fórmulas simples por TC siguen siendo útiles, pero requieren cuidado.
Imputación por mínimos cuadrados (un faltante). Notas docentes muestran que si la celda \((i,j)\) falta y se denota como \(x\), con:
entonces:
\[ \hat{x}=\frac{tT_i' + bB_j' - G'}{(t-1)(b-1)} \]
Ajuste de grados de libertad. Material docente advierte que luego de imputar debe ajustarse el \(gl_E\) (se “pierde” 1 gl por el parámetro estimado al imputar), y también se enfatiza el cuidado al recalcular \(CM_E\).
Alternativa robusta en software.
En R, evitar depender de que aov sea balanceado si
hay NA; la documentación advierte que los faltantes suelen romper
balance.
En Python, ajustar el modelo lineal y usar anova_lm
con el tipo de suma de cuadrados apropiado (I/II/III) está documentado
en statsmodels.
flowchart TD
A[Plantear objetivo y variable respuesta] --> B[Identificar fuente molesta y definir bloques]
B --> C[Asignar tratamientos aleatoriamente dentro de cada bloque]
C --> D[Recolectar datos y verificar balance (1 dato por celda)]
D --> E[Ajustar modelo: y_ij = mu + tau_i + beta_j + e_ij]
E --> F[Calcular ANOVA (SC, gl, CM, F, p)]
F --> G{F tratamientos significativo?}
G -->|Sí| H[Post hoc: Tukey / LSD / Bonferroni + contrastes]
G -->|No| I[Reportar sin comparaciones múltiples]
H --> J[Diagnóstico: residuos, normalidad, homocedasticidad]
I --> J
J --> K{Supuestos razonables?}
K -->|Sí| L[Conclusiones e informe]
K -->|No| M[Transformación / modelo alternativo / Friedman / mixtos]
M --> L
(La necesidad de diagnóstico y la alternativa de pruebas no paramétricas como Friedman están alineadas con lo incluido en las notas y con prácticas comunes de análisis.)
Qué “compra” el bloqueo: disminución del error al comparar tratamientos al “descontar” variación entre bloques; enlazar esto con la idea de factores molestos.
Por qué el modelo es aditivo: con una sola observación por celda, la interacción tratamiento×bloque no se estima; por ello se asume pequeña o se usa un test de aditividad cuando procede.
Doble lectura de fórmulas: (i) fórmulas con medias (interpretación geométrica) y (ii) fórmulas computacionales con TC (cálculo rápido y reproducible), tal como hace el documento.
Comparaciones múltiples: mostrar que LSD puede encontrar más diferencias que Tukey; conectarlo con control de error familiar (Bonferroni/Tukey) según documentación de R.
Reproducción manual de ANOVA
(obligatorio).
A partir de la tabla de datos del documento, pedir: \(TC\), \(SC_T\), \(SC_{\text{Trt}}\), \(SC_{\text{Bloq}}\), \(SC_E\), gl, CM, \(F\) y \(p\). Verificar que coincide con la tabla
“Resultados del ANVA”.
Demostrar equivalencia de fórmulas.
Probar algebraicamente que: \[
b\sum(\bar{Y}_{i\cdot}-\bar{Y}_{\cdot\cdot})^2=\sum
\frac{T_i^2}{b}-\frac{G^2}{tb}
\] usando \(T_i=b\bar{Y}_{i\cdot}\) y \(G=tb\bar{Y}_{\cdot\cdot}\).
Contrastes ortogonales.
Verificar ortogonalidad (\(\sum
c_id_i=0\)) entre los contrastes C1–C4 del documento y comprobar
que sus sumas de cuadrados suman \(SC_{\text{Trt}}\).
Post hoc comparativo (mismo conjunto de
datos).
Calcular \(LSD_{0.05}\), \(HSD_{0.05}\) y \(LSD_{\text{Bonf}}\). Listar qué pares son
“significativos” bajo cada método y discutir por qué cambian.
Friedman vs ANOVA.
Con los rangos del documento, calcular \(\chi^2_F\) y su valor-p, e interpretar la
diferencia frente al resultado paramétrico.
Caso con dato faltante (extensión).
Eliminar una celda (simular NA), estimar \(\hat{x}\) con la fórmula de un faltante,
recalcular y explicar el ajuste de grados de libertad.
R (modelo y ANOVA; Tukey; Bonferroni).
La documentación oficial de aov advierte que está
diseñado para balance y que faltantes suelen romperlo. Además,
TukeyHSD basa intervalos en el rango studentizado.
# Datos del documento
datos <- data.frame(
bloque = factor(rep(c("I","II","III"), each = 5)),
trt = factor(rep(c("V1","Testigo","V2","V3","V4"), times = 3)),
y = c(17.9,7.0,19.8,15.2,12.7,
20.8,5.9,16.7,21.0,14.2,
21.4,4.2,16.7,8.8,11.5)
)
# DBCA: efectos principales (sin interacción)
m <- aov(y ~ trt + bloque, data = datos)
summary(m)
# Tukey HSD para tratamientos
TukeyHSD(m, which = "trt")
# Comparaciones pareadas con ajuste Bonferroni (vía pairwise.t.test)
pairwise.t.test(datos$y, datos$trt, p.adjust.method = "bonferroni", pool.sd = TRUE)
Python (statsmodels + ANOVA; potencia con Cohen f).
anova_lm y sus tipos (I/II/III) están documentados en
statsmodels. Para potencia, FTestAnovaPower se basa en
Cohen \(f\).
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
from statsmodels.stats.anova import anova_lm
from statsmodels.stats.power import FTestAnovaPower
df = pd.DataFrame({
"bloque": ["I"]*5 + ["II"]*5 + ["III"]*5,
"trt": ["V1","Testigo","V2","V3","V4"]*3,
"y": [17.9,7.0,19.8,15.2,12.7,
20.8,5.9,16.7,21.0,14.2,
21.4,4.2,16.7,8.8,11.5]
})
# Modelo aditivo DBCA: y ~ C(trt) + C(bloque)
model = smf.ols("y ~ C(trt) + C(bloque)", data=df).fit()
# ANOVA tipo II (útil cuando hay desbalance; aquí es balanceado)
anova = anova_lm(model, typ=2)
print(anova)
# Ejemplo de potencia (ANOVA 1-factor como aproximación didáctica):
# estimar potencia para k grupos con un f dado y nobs total
power = FTestAnovaPower().power(effect_size=0.5, nobs=df.shape[0], alpha=0.05, k_groups=5)
print(power)
(Para interpretaciones de colas y cuantiles en distribuciones t/F, SciPy documenta CDF, SF y PPF para t/F y el rango studentizado para Tukey.)