Guía pedagógica de DBCA con fundamento teórico, fórmulas completas y ejemplo reproducible

Resumen ejecutivo

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. citeturn3view1turn13search16

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. fileciteturn2file0

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:

  • Tratamientos (variedad): \(F=10.49\), \(p\approx 0.0029\) ⇒ evidencia fuerte de diferencias entre medias de tratamientos. fileciteturn2file0
  • Bloques: \(F=1.51\), \(p\approx 0.2785\) ⇒ evidencia insuficiente de diferencias entre bloques (lo cual no invalida el bloqueo; a veces se bloquea por prevención o por razones de control experimental). fileciteturn2file0turn13search0

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. fileciteturn2file0

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. fileciteturn2file0

Fundamentos del DBCA y lógica de bloqueo

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. fileciteturn2file0

La justificación estadística del bloqueo se puede expresar así:

  • Existe un factor primario de interés (tratamientos) y al menos un factor molesto (bloque) que afecta la respuesta pero no es el foco; al incorporar ese factor molesto en el diseño y el modelo, se reduce la variabilidad residual. citeturn3view1
  • Regla práctica ampliamente citada: “Block what you can, randomize what you cannot.” (bloquee lo que pueda controlar; aleatorice lo que no pueda). citeturn3view1

image_group{“layout”:“carousel”,“aspect_ratio”:“16:9”,“query”:[“diseño en bloques completos al azar esquema de parcelas”,“randomized complete block design field layout diagram”,“RCBD block layout treatments randomized within blocks”],“num_per_query”:1}

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. citeturn3view1turn13search16

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. citeturn13search12

Modelo estadístico y estimación por mínimos cuadrados

Modelo aditivo de dos vías sin interacción

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. fileciteturn2file0
Este mismo modelo aparece en una fuente oficial de referencia para diseños bloqueados. citeturn3view1

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. citeturn6view0

Supuestos del modelo y su lectura “experimental”

En DBCA, el sustento para inferencia tipo ANOVA típicamente incluye:

  1. Independencia de errores (respaldada por la aleatorización dentro de cada bloque). citeturn3view1
  2. Homocedasticidad: \(\operatorname{Var}(\varepsilon_{ij})=\sigma^2\) constante. citeturn9search0
  3. Normalidad aproximada de los errores (especialmente relevante para tamaños pequeños y para intervalos/p-valores exactos de ANOVA). citeturn1search24
  4. Aditividad (sin interacción tratamiento×bloque en el modelo). citeturn13search12

Estimadores por mínimos cuadrados

Denote:

  • Total del tratamiento \(i\): \(T_i=Y_{i\cdot}=\sum_{j=1}^b Y_{ij}\)
  • Total del bloque \(j\): \(B_j=Y_{\cdot j}=\sum_{i=1}^t Y_{ij}\)
  • Total general: \(G=Y_{\cdot\cdot}=\sum_{i=1}^t\sum_{j=1}^b Y_{ij}\)
  • Medias: \(\bar{Y}_{i\cdot}=T_i/b\), \(\bar{Y}_{\cdot j}=B_j/t\), \(\bar{Y}_{\cdot\cdot}=G/(tb)\)

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. fileciteturn2file0turn3view1turn6view0

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. fileciteturn2file0turn13search0

Sumas de cuadrados, tabla ANOVA y pruebas F

El documento incluye una “Tabla ANOVA DBCA” con fórmulas de sumas de cuadrados, grados de libertad, cuadrados medios y razón F. fileciteturn2file0 A continuación se presenta una versión unificada (con notación consistente \(t=\#\) tratamientos, \(b=\#\) bloques).

Descomposición ortogonal de la variabilidad

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. fileciteturn2file0turn13search0turn6view0

Fórmulas computacionales con término de corrección

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. fileciteturn2file0
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\). citeturn6view0turn13search0

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.) fileciteturn2file0turn13search0turn6view0

Grados de libertad y cuadrados medios

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. fileciteturn2file0

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)} \]

citeturn13search0turn6view0

Pruebas F, valores-p y valores críticos

Hipótesis típicas:

  • Tratamientos: \(H_0:\tau_1=\cdots=\tau_t=0\)
  • Bloques: \(H_0:\beta_1=\cdots=\beta_b=0\)

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)\).) fileciteturn2file0

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. citeturn15search0turn1search2turn15search20

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. citeturn13search0

Ejemplo numérico completo con reproducción de la tabla ANOVA

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. fileciteturn2file0

Datos y totales

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

fileciteturn2file0

Tabla de cálculo paso a paso (método con TC)

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 \] fileciteturn2file0

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.) fileciteturn2file0

Tabla ANOVA reproducida

Con \(t=5\), \(b=3\):

  • \(gl_{\text{Trt}}=4\), \(gl_{\text{Bloq}}=2\), \(gl_E=8\), \(gl_T=14\). fileciteturn2file0
  • \(CM_E=69.4/8=8.675\) (coincide con el documento). fileciteturn2file0
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. citeturn1search2turn15search0
La tabla coincide con la salida incluida en el documento. fileciteturn2file0

Índices auxiliares reportados

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. fileciteturn2file0

Comparaciones múltiples y notas adicionales de Mendiburu

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.

Comparaciones múltiples paramétricas sobre medias de tratamientos

Tras una ANOVA significativa para tratamientos, es común evaluar qué pares de medias difieren. Tres procedimientos solicitados:

Método LSD de Fisher

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. citeturn12search15
Advertencia clásica: Fisher-LSD controla el error por comparación, pero no necesariamente el error familiar si se hacen muchas comparaciones. citeturn12search18

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\).) fileciteturn2file0

Método de Tukey HSD

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). citeturn1search0turn1search3turn15search1turn15search3

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). citeturn15search1turn15search3

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

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. citeturn2search13turn12search0
Un resumen docente sobre control de FWER también lo formula como umbral \(p<\alpha/m\). citeturn12search4

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 \]

Contrastes ortogonales

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.). fileciteturn2file0

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). fileciteturn2file0

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}}\). fileciteturn2file0

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}}\). fileciteturn2file0

Prueba de Friedman y su coherencia con el ejemplo

Las notas incluyen la prueba de Friedman para DBCA cuando no se desea asumir normalidad (usa rangos por bloque). fileciteturn2file0
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. citeturn14search0

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. fileciteturn2file0

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). fileciteturn2file0
Entonces:

  • \(\chi^2_F \approx 8.8\) con \(gl=t-1=4\)
  • \(p\approx 0.0663\)

Esto coincide con la salida “Prueba de Friedman’s” y su valor-p reportado en las notas. fileciteturn2file0

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. fileciteturn2file0
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\). fileciteturn2file0
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.

Diagnóstico, potencia, datos faltantes y guía docente

Diagnóstico del modelo (residuos, homocedasticidad, normalidad)

Dado el modelo ajustado, el diagnóstico se centra en los residuos \(\hat{\varepsilon}_{ij}\):

  1. Gráfico residuos vs. ajustados: busca patrones (curvatura) y heterocedasticidad (abanico).
  2. Residuos por tratamiento y por bloque: verifica varianzas similares dentro de grupos.
  3. Normalidad: Q–Q plot; y, si se desea, pruebas como D’Agostino–Pearson (scipy.stats.normaltest) descrita en la documentación de SciPy. citeturn1search24
  4. Homoscedasticidad: pruebas como Bartlett (sensible a no normalidad) están documentadas en SciPy. citeturn1search32

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. citeturn9search0

Potencia y tamaño de muestra en DBCA

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\). citeturn13search16turn3view1

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). citeturn15search0
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. citeturn8search2
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. citeturn8search18
  • En Python, statsmodels.stats.power.FTestAnovaPower implementa potencia para ANOVA balanceada usando el tamaño de efecto de Cohen \(f\). citeturn8search0turn8search3

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.

Datos faltantes en DBCA

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:

  • \(T_i'\): total del tratamiento \(i\) sin el faltante
  • \(B_j'\): total del bloque \(j\) sin el faltante
  • \(G'\): total general sin el faltante

entonces:

\[ \hat{x}=\frac{tT_i' + bB_j' - G'}{(t-1)(b-1)} \]

citeturn7view0turn16search3

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\). citeturn16search3

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. citeturn9search0
  • 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. citeturn1search1

Flujo recomendado de análisis para enseñanza

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.) fileciteturn2file0

Notas didácticas y ejercicios

Ideas clave para explicar en clase

  • 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. citeturn3view1turn13search16
  • 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. citeturn13search12
  • 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. fileciteturn2file0turn6view0
  • 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. citeturn1search0turn2search13turn12search18

Ejercicios sugeridos

  1. 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”. fileciteturn2file0

  2. 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}\). citeturn6view0turn13search0

  3. 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}}\). fileciteturn2file0

  4. 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. citeturn12search15turn1search0turn2search13

  5. 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. fileciteturn2file0turn14search0

  6. 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. citeturn7view0turn16search3

Mini-guía reproducible en R y Python (para laboratorio)

R (modelo y ANOVA; Tukey; Bonferroni).
La documentación oficial de aov advierte que está diseñado para balance y que faltantes suelen romperlo. citeturn9search0 Además, TukeyHSD basa intervalos en el rango studentizado. citeturn1search0

# 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. citeturn1search1turn1search4 Para potencia, FTestAnovaPower se basa en Cohen \(f\). citeturn8search0turn8search3

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.) citeturn1search2turn15search20turn15search3