Comprender qué es un diseño en bloques completos aleatorizados y cuándo utilizarlo.
Control de variabilidad mediante agrupación en bloques homogéneos para mejorar la precisión experimental.
Situación Problemática
Cuando las unidades experimentales son distintas, las diferencias entre respuestas pueden deberse a los tratamientos O a la heterogeneidad de las unidades, haciendo imposible determinar la causa real.
En los diseños experimentales se supone homogeneidad entre las unidades experimentales. Sin embargo, cuando esta suposición no se cumple:
El error experimental refleja la variabilidad entre unidades, haciéndolo grande y reduciendo la potencia del diseño.
Se sustrae del error experimental la variabilidad producida por las diferencias entre unidades, reduciéndolo.
Para controlar la variabilidad entre unidades experimentales, el experimentador puede considerar dos alternativas fundamentales:
Considerar unidades experimentales muy homogéneas entre sí desde el inicio del experimento.
Formar bloques donde las unidades dentro de cada bloque sean homogéneas y los bloques entre sí sean heterogéneos.
Dividir Bloques
Cada bloque se divide en tantas unidades como tratamientos
Probar Tratamientos
Cada tratamiento se prueba en cada uno de los bloques
Asignar al Azar
Asignación aleatoria e independiente en cada bloque
Un diseño en bloques completos aleatorizados es aquel en el que todos los tratamientos se prueban en cada bloque. La palabra "completo" indica que todos los tratamientos se encuentran representados en cada bloque. Cada tratamiento aparece exactamente una vez en cada bloque, y la asignación de tratamientos a las unidades dentro de cada bloque se realiza de manera aleatoria e independiente.
Todos los tratamientos
en cada bloque
Una vez por bloque
cada tratamiento
Aleatorización
independiente por bloque
Cuando No Es Posible el Diseño Completo
Puede suceder que no puedan realizarse los ensayos de todos los tratamientos dentro de cada bloque debido a escasez de recursos o al tamaño físico de los bloques.
En estos casos, se usan diseños aleatorizados por bloques incompletos, donde:
No todos los tratamientos
No todos los tratamientos se encuentran representados en cada bloque
Una sola vez
Aquellos que están representados se ensayan una sola vez en cada bloque
Los tratamientos se asignan al azar a las unidades experimentales sin restricción alguna.
Aleatorización Libre
Primero se agrupan las unidades en bloques y luego se asignan los tratamientos dentro de cada bloque.
Aleatorización Restringida
Concepto Fundamental
Un diseño en bloques aleatorizados es un diseño con aleatorización restringida en el cual las unidades experimentales son primero clasificadas en grupos homogéneos (bloques), y los tratamientos son entonces asignados aleatoriamente dentro de los bloques.
Estudiar los principios de bloqueo y la estructura experimental del DBCA.
Bases conceptuales y notación matemática para el diseño en bloques completos aleatorizados.
Para el desarrollo formal del modelo DBCA, se establece la siguiente notación:
| Símbolo | Descripción |
|---|---|
| $I$ | Número de tratamientos (niveles del factor principal) |
| $J$ | Número de bloques (niveles del factor secundario) |
| $N = IJ$ | Número total de observaciones |
| $y_{ij}$ | Observación del tratamiento i-ésimo en el bloque j-ésimo |
| $y_{i.}$ | Total de observaciones bajo el i-ésimo tratamiento |
| $y_{.j}$ | Total de observaciones en el j-ésimo bloque |
| $y_{..}$ | Total general de todas las observaciones |
| $\bar{y}_{i.}$ | Media de las observaciones del tratamiento i-ésimo |
| $\bar{y}_{.j}$ | Media de las observaciones del bloque j-ésimo |
| $\bar{y}_{..}$ | Media general de todas las observaciones |
Total por tratamiento:
para i = 1, 2, ..., I
Total por bloque:
para j = 1, 2, ..., J
Total general:
Media general:
Media por tratamiento:
Media por bloque:
Las observaciones en un DBCA se disponen en una tabla de doble entrada, donde las filas corresponden a los tratamientos y las columnas a los bloques:
| Trat \ Bloq | 1 | 2 | ... | J | Total |
|---|---|---|---|---|---|
| 1 | $y_{11}$ | $y_{12}$ | ... | $y_{1J}$ | $y_{1.}$ |
| 2 | $y_{21}$ | $y_{22}$ | ... | $y_{2J}$ | $y_{2.}$ |
| ... | ... | ... | ... | ... | ... |
| I | $y_{I1}$ | $y_{I2}$ | ... | $y_{IJ}$ | $y_{I.}$ |
| Total | $y_{.1}$ | $y_{.2}$ | ... | $y_{.J}$ | $y_{..}$ |
| Tratamientos | Bloques | Total | |||
|---|---|---|---|---|---|
| 1 | 2 | ... | J | $y_{i.}$ | |
| 1 | $y_{11}$ | $y_{12}$ | ... | $y_{1J}$ | $y_{1.}$ |
| 2 | $y_{21}$ | $y_{22}$ | ... | $y_{2J}$ | $y_{2.}$ |
| ... | ... | ... | ... | ... | ... |
| I | $y_{I1}$ | $y_{I2}$ | ... | $y_{IJ}$ | $y_{I.}$ |
| Total $y_{.j}$ | $y_{.1}$ | $y_{.2}$ | ... | $y_{.J}$ | $y_{..}$ |
Formular el modelo lineal del DBCA y sus componentes.
Formulación matemática del diseño en bloques completos aleatorizados y sus supuestos fundamentales.
El modelo estadístico para el diseño en bloques completos aleatorizados se expresa como:
$y_{ij} = \mu + \tau_i + \beta_j + u_{ij}$
$y_{ij}$
Observación del tratamiento i-ésimo en el bloque j-ésimo
$\mu$
Media global (efecto constante)
$\tau_i$
Efecto del tratamiento i-ésimo (factor principal)
$\beta_j$
Efecto del bloque j-ésimo (factor secundario)
$u_{ij}$
Error experimental ~ N(0, σ²), independiente entre observaciones
El modelo está sujeto a las siguientes condiciones fundamentales:
Aditividad
Normalidad
Independencia
Restricciones
Las condiciones para la perturbación se formulan también en términos de la variable respuesta. Las observaciones $y_{ij}$ son variables aleatorias independientes con distribución normal.
Media (Valor Esperado)
$E[y_{ij}] = \mu + \tau_i + \beta_j$
Varianza Constante
$Var[y_{ij}] = \sigma^2$ ∀i, j
Homocedasticidad: La varianza es constante para todas las combinaciones tratamiento-bloque, lo que garantiza la validez de las pruebas F del ANOVA.
Los contrastes de hipótesis permiten determinar si existen diferencias significativas entre tratamientos y bloques.
Hipótesis Nula
$H_0: \tau_i = 0$ ∀i
No hay efecto de los tratamientos
Hipótesis Alternativa
$H_1: \tau_i \neq 0$ para al menos algún i
Al menos un tratamiento tiene efecto
Hipótesis Nula
$H_0: \beta_j = 0$ ∀j
No hay efecto de los bloques
Hipótesis Alternativa
$H_1: \beta_j \neq 0$ para al menos algún j
Al menos un bloque tiene efecto
Interpretación de Resultados
Si se rechaza $H_0$ para tratamientos (valor p < α), existe evidencia de que al menos un tratamiento produce un efecto diferente. El contraste de bloques permite verificar si la estrategia de bloqueo fue efectiva para reducir el error experimental.
Obtener los estimadores de los parámetros del modelo.
Métodos para obtener estimadores de los parámetros del modelo y sus propiedades estadísticas.
Los estimadores máximo verosímiles de los parámetros del modelo se obtienen a partir de la función de verosimilitud:
Media Global
$\hat{\mu} = \bar{y}_{..} = \frac{y_{..}}{N}$
Promedio de todas las observaciones
Efecto Tratamientos
$\hat{\tau}_i = \bar{y}_{i.} - \bar{y}_{..}$
Desviación de la media del tratamiento
Efecto Bloques
$\hat{\beta}_j = \bar{y}_{.j} - \bar{y}_{..}$
Desviación de la media del bloque
Los estimadores de máxima verosimilitud poseen propiedades estadísticas deseables:
Insesgadez
$E[\hat{\mu}] = \mu$
Varianza
$Var[\hat{\mu}] = \frac{\sigma^2}{N}$
Distribución
Normal
Insesgadez
$E[\hat{\tau}_i] = \tau_i$
Varianza
$Var[\hat{\tau}_i] = \frac{(I-1)\sigma^2}{N}$
Distribución
Normal
Insesgadez
$E[\hat{\beta}_j] = \beta_j$
Varianza
$Var[\hat{\beta}_j] = \frac{(J-1)\sigma^2}{N}$
Distribución
Normal
El estimador máximo verosímil de la varianza no es insesgado. El estimador insesgado de σ² es la varianza residual:
$S^2_R = \frac{\sum_{i=1}^{I} \sum_{j=1}^{J} (y_{ij} - \bar{y}_{i.} - \bar{y}_{.j} + \bar{y}_{..})^2}{(I-1)(J-1)}$
Nota Importante
El denominador $(I-1)(J-1)$ corresponde a los grados de libertad del error en el DBCA.
Distribución Muestral
$\frac{(I-1)(J-1)S^2_R}{\sigma^2} \sim \chi^2_{(I-1)(J-1)}$
Los residuos son las diferencias entre los valores observados y los valores estimados por el modelo:
$e_{ij} = y_{ij} - \hat{y}_{ij} = y_{ij} - \hat{\mu} - \hat{\tau}_i - \hat{\beta}_j$
$= y_{ij} - \bar{y}_{i.} - \bar{y}_{.j} + \bar{y}_{..}$
La suma de los residuos por filas y por columnas es cero:
Por tratamientos (filas)
$\sum_{j=1}^{J} e_{ij} = 0$ para i = 1, ..., I
Por bloques (columnas)
$\sum_{i=1}^{I} e_{ij} = 0$ para j = 1, ..., J
Interpretación
Los residuos representan la variabilidad no explicada por el modelo. Un análisis adecuado de residuos es fundamental para validar los supuestos del DBCA (normalidad, homocedasticidad, independencia).
Construir la tabla ANOVA y realizar pruebas de hipótesis.
Descomposición de la variabilidad total para evaluar la significancia de tratamientos y bloques.
El ANOVA se basa en descomponer la variabilidad total de los datos en componentes atribuibles a diferentes fuentes:
Identidad Fundamental:
$y_{ij} - \bar{y}_{..} = (\bar{y}_{i.} - \bar{y}_{..}) + (\bar{y}_{.j} - \bar{y}_{..}) + (y_{ij} - \bar{y}_{i.} - \bar{y}_{.j} + \bar{y}_{..})$
SCT = SCTr + SCBl + SCR
SCT
Total
SCTr
Tratamientos
SCBl
Bloques
SCR
Residual
Considerando la identidad fundamental para los $N = IJ$ datos, la descomposición se puede expresar en forma vectorial (todos los vectores de dimensión $N$):
$\mathbf{Y} = \boldsymbol{\mu} + \boldsymbol{\tau} + \boldsymbol{\beta} + \mathbf{e}$
$\mathbf{Y}$
Contiene los $N$ términos independientes $y_{ij}$. Tiene $N$ grados de libertad.
$\boldsymbol{\mu}$
Contiene $N$ coordenadas iguales a $\bar{y}_{..}$. Tiene 1 grado de libertad.
$\boldsymbol{\tau}$
Contiene $I$ valores distintos $\bar{y}_{i.} - \bar{y}_{..}$, cada uno repetido $J$ veces. Tiene $I-1$ g.l. ya que $\sum_i \hat{\tau}_i = 0$.
$\boldsymbol{\beta}$
Contiene $J$ valores distintos $\bar{y}_{.j} - \bar{y}_{..}$, cada uno repetido $I$ veces. Tiene $J-1$ g.l. ya que $\sum_j \hat{\beta}_j = 0$.
$\mathbf{e}$
Contiene los $N$ residuos estimados, que suman cero por filas y por columnas. Tiene $N - (I + J - 1) = (I-1)(J-1)$ g.l.
Verificación de grados de libertad:
$N = 1 + (I-1) + (J-1) + (I-1)(J-1)$
La descomposición está formada por componentes ortogonales dos a dos, lo que garantiza que los grados de libertad de $\mathbf{Y}$ son la suma de los grados de libertad de los componentes. Se comprueba directamente:
$\boldsymbol{\mu}' \boldsymbol{\tau} = \bar{y}_{..}\sum_{i}\sum_{j} \hat{\tau}_i = 0$
$\boldsymbol{\mu}' \boldsymbol{\beta} = \bar{y}_{..}\sum_{i}\sum_{j}\hat{\beta}_j = 0$
$\boldsymbol{\mu}' \mathbf{e} = \bar{y}_{..}\sum_{i}\sum_{j}e_{ij} = 0$
$\boldsymbol{\tau}' \boldsymbol{\beta} = \sum_i \hat{\tau}_i \sum_j \hat{\beta}_j = 0$
$\boldsymbol{\tau}' \mathbf{e} = \sum_i \hat{\tau}_i \sum_j e_{ij} = 0$
$\boldsymbol{\beta}' \mathbf{e} = \sum_j \hat{\beta}_j \sum_i e_{ij} = 0$
Consecuencia: Al ser ortogonales, al elevar al cuadrado y sumar la identidad fundamental, los productos cruzados se anulan, obteniéndose directamente la ecuación básica $SCT = SCTr + SCBl + SCR$.
Partiendo de la identidad fundamental, elevamos al cuadrado ambos miembros y sumamos para todas las observaciones:
$\displaystyle\sum_{i=1}^{I}\sum_{j=1}^{J}(y_{ij} - \bar{y}_{..})^2 = \sum_{i=1}^{I}\sum_{j=1}^{J}\left[(\bar{y}_{i.} - \bar{y}_{..}) + (\bar{y}_{.j} - \bar{y}_{..}) + (y_{ij} - \bar{y}_{i.} - \bar{y}_{.j} + \bar{y}_{..})\right]^2$
Al desarrollar el cuadrado del trinomio aparecen tres términos cuadrados y tres dobles productos. Los dobles productos se anulan por la ortogonalidad demostrada:
Producto cruzado 1
$2\sum_{i,j}(\bar{y}_{i.}-\bar{y}_{..})(\bar{y}_{.j}-\bar{y}_{..}) = 0$
Producto cruzado 2
$2\sum_{i,j}(\bar{y}_{.j}-\bar{y}_{..})(y_{ij}-\bar{y}_{i.}-\bar{y}_{.j}+\bar{y}_{..}) = 0$
Producto cruzado 3
$2\sum_{i,j}(\bar{y}_{i.}-\bar{y}_{..})(y_{ij}-\bar{y}_{i.}-\bar{y}_{.j}+\bar{y}_{..}) = 0$
Por lo tanto, la ecuación queda:
$\displaystyle\underbrace{\sum_{i,j}(y_{ij} - \bar{y}_{..})^2}_{SCT} = \underbrace{J\sum_i(\bar{y}_{i.} - \bar{y}_{..})^2}_{SCTr} + \underbrace{I\sum_j(\bar{y}_{.j} - \bar{y}_{..})^2}_{SCBl} + \underbrace{\sum_{i,j}(y_{ij} - \bar{y}_{i.} - \bar{y}_{.j} + \bar{y}_{..})^2}_{SCR}$
| Componente | Expresión | Grados de libertad |
|---|---|---|
| SCT (Suma total de cuadrados) | $\sum_{i,j} (y_{ij} - \bar{y}_{..})^2$ | IJ - 1 |
| SCTr (Entre tratamientos) | $J \sum_i (\bar{y}_{i.} - \bar{y}_{..})^2$ | I - 1 |
| SCBl (Entre bloques) | $I \sum_j (\bar{y}_{.j} - \bar{y}_{..})^2$ | J - 1 |
| SCR (Residual) | $\sum_{i,j} (y_{ij} - \bar{y}_{i.} - \bar{y}_{.j} + \bar{y}_{..})^2$ | (I-1)(J-1) |
Para facilitar los cálculos manuales, se utilizan las siguientes expresiones abreviadas:
Suma Total de Cuadrados
$SCT = \sum_{i=1}^{I}\sum_{j=1}^{J} y_{ij}^2 - \frac{y_{..}^2}{IJ}$
Tratamientos
$SCTr = \frac{1}{J}\sum_{i=1}^{I} y_{i.}^2 - \frac{y_{..}^2}{IJ}$
Bloques
$SCBl = \frac{1}{I}\sum_{j=1}^{J} y_{.j}^2 - \frac{y_{..}^2}{IJ}$
Residual (por diferencia)
$SCR = SCT - SCTr - SCBl$
Los cuadrados medios se obtienen dividiendo cada suma de cuadrados por sus grados de libertad:
Tratamientos
$S^2_{Tr} = \frac{SCTr}{I-1}$
Bloques
$S^2_{Bl} = \frac{SCBl}{J-1}$
Residual
$S^2_R = \frac{SCR}{(I-1)(J-1)}$
| Cuadrado Medio | Esperanza Matemática |
|---|---|
| $S^2_{Tr}$ | $\sigma^2 + \frac{J}{I-1}\sum\tau_i^2$ |
| $S^2_{Bl}$ | $\sigma^2 + \frac{I}{J-1}\sum\beta_j^2$ |
| $S^2_R$ | $\sigma^2$ |
Recordando el modelo $y_{ij} = \mu + \tau_i + \beta_j + u_{ij}$, se tiene que $\bar{y}_{i.} = \mu + \tau_i + \bar{u}_{i.}$ e $\bar{y}_{..} = \mu + \bar{u}_{..}$, por lo que:
Paso 1: Expresar en función de los parámetros
$S^2_{Tr} = \frac{J\sum_{i=1}^{I}(\bar{y}_{i.} - \bar{y}_{..})^2}{I-1} = \frac{J\sum_{i=1}^{I}[\tau_i + (\bar{u}_{i.} - \bar{u}_{..})]^2}{I-1}$
Paso 2: Expandir el cuadrado en tres sumandos
Sumando (a)
$\frac{J\sum_i \tau_i^2}{I-1}$
Sumando (b)
$\frac{J\sum_i (\bar{u}_{i.} - \bar{u}_{..})^2}{I-1}$
Sumando (c)
$\frac{2J\sum_i \tau_i(\bar{u}_{i.} - \bar{u}_{..})}{I-1}$
Paso 3: Calcular la esperanza de cada sumando
Como el modelo es de efectos fijos, $E[\tau_i] = \tau_i$:
$E\left[\frac{J\sum_i \tau_i^2}{I-1}\right] = \frac{J}{I-1}\sum_i \tau_i^2$
Usando que $\text{Var}(\hat{\tau}_i) = (I-1)\sigma^2 / N$:
$E\left[\frac{J\sum_i (\bar{u}_{i.} - \bar{u}_{..})^2}{I-1}\right] = \frac{J}{I-1}\cdot \frac{I(I-1)\sigma^2}{N} = \sigma^2$
Como $E(\bar{u}_{i.} - \bar{u}_{..}) = 0$:
$E\left[\frac{2J\sum_i \tau_i(\bar{u}_{i.} - \bar{u}_{..})}{I-1}\right] = 0$
Resultado:
$E(S^2_{Tr}) = \sigma^2 + \frac{J}{I-1}\sum_{i=1}^{I}\tau_i^2$
$E(S^2_{Bl}) = \sigma^2 + \frac{I}{J-1}\sum_{j=1}^{J}\beta_j^2$
$E(S^2_R) = \sigma^2$
$E(S^2_T) = \frac{J\sum\tau_i^2 + I\sum\beta_j^2}{N-1} + \sigma^2$
Nota: $E(S^2_T)$ se obtiene de la ecuación básica del ANOVA expresada en cuadrados medios: $(N-1)S^2_T = (I-1)S^2_{Tr} + (J-1)S^2_{Bl} + (I-1)(J-1)S^2_R$, tomando esperanzas en ambos miembros.
En el modelo en bloques completos aleatorizados, las ecuaciones normales para tratamientos no contienen información sobre los efectos de bloques, y recíprocamente. Por tanto, un contraste entre efectos de tratamientos se realiza comparando las medias de tratamientos, e idénticamente para bloques. Cuando esto ocurre, se dice que los efectos de bloques y tratamientos son ortogonales.
Bajo las hipótesis nulas de igualdad de efectos, los estadísticos F siguen distribuciones F de Fisher-Snedecor:
$F_\tau = \frac{S^2_{Tr}}{S^2_R}$
~ $F_{(I-1), (I-1)(J-1)}$
$F_\beta = \frac{S^2_{Bl}}{S^2_R}$
~ $F_{(J-1), (I-1)(J-1)}$
Regla de Decisión
$\text{Se rechaza la hipótesis nula cuando } F_{exp} > F_{\alpha}\ \text{, donde }F_{\alpha}$ $\text{es el valor crítico de la distribución } F \text{ para un nivel de significancia } \alpha$.
La construcción de los estadísticos de contraste $F$ se fundamenta en propiedades distribucionales precisas de las sumas de cuadrados y sus esperanzas matemáticas.
Cuando ambas hipótesis nulas son ciertas ($\tau_1 = \cdots = \tau_I = 0$ y $\beta_1 = \cdots = \beta_J = 0$), las $N$ observaciones provienen de la misma población $N(\mu, \sigma^2)$. Bajo estas condiciones se demuestra que:
Tratamientos
$\frac{SCTr}{\sigma^2} \sim \chi^2_{I-1}$
Bloques
$\frac{SCBl}{\sigma^2} \sim \chi^2_{J-1}$
Residual
$\frac{SCR}{\sigma^2} \sim \chi^2_{(I-1)(J-1)}$
Además, estas tres variables aleatorias son mutuamente independientes (consecuencia de la ortogonalidad demostrada en la sección 5.1).
Por definición, el cociente de dos variables $\chi^2$ independientes, cada una dividida por sus grados de libertad, sigue una distribución $F$ de Fisher-Snedecor. Por tanto, bajo $H_0$:
Para tratamientos
$F_\tau = \frac{SCTr/(I-1)}{SCR/[(I-1)(J-1)]} = \frac{S^2_{Tr}}{S^2_R} \sim F_{(I-1),(I-1)(J-1)}$
Para bloques
$F_\beta = \frac{SCBl/(J-1)}{SCR/[(I-1)(J-1)]} = \frac{S^2_{Bl}}{S^2_R} \sim F_{(J-1),(I-1)(J-1)}$
La clave está en las esperanzas matemáticas derivadas anteriormente:
Cuando $H_0$ es cierta ($\tau_i = 0 \;\forall i$):
$E(S^2_{Tr}) = \sigma^2 + \frac{J}{I-1}\underbrace{\sum \tau_i^2}_{=\,0} = \sigma^2$
→ Numerador y denominador estiman lo mismo
$F_\tau \approx 1$
Cuando $H_0$ es falsa ($\exists\; \tau_i \ne 0$):
$E(S^2_{Tr}) = \sigma^2 + \frac{J}{I-1}\underbrace{\sum \tau_i^2}_{>\,0} > \sigma^2$
→ El numerador es mayor que el denominador
$F_\tau \gg 1$
Por tanto, valores grandes de $F_{exp}$ son evidencia contra $H_0$, y se rechaza cuando $F_{exp} > F_{\alpha, \nu_1, \nu_2}$.
Sobre el contraste de bloques
Un valor significativo de $F_\beta$ indica que el bloqueo fue efectivo en reducir la variabilidad residual. Si $F_\beta \approx 1$, el bloqueo puede no estar justificado y podría ser incluso perjudicial, ya que se reducen los grados de libertad del error (de $I(J-1)$ en el DCA a $(I-1)(J-1)$ en el DBCA) sin ganancia compensatoria en la reducción de la varianza residual.
| Fuente de variación | Suma de cuadrados | g.l. | Cuadrado medio | $F_{exp}$ |
|---|---|---|---|---|
| Entre tratamientos | SCTr | I-1 | $S^2_{Tr}$ | $S^2_{Tr}/S^2_R$ |
| Entre bloques | SCBl | J-1 | $S^2_{Bl}$ | $S^2_{Bl}/S^2_R$ |
| Residual | SCR | (I-1)(J-1) | $S^2_R$ | - |
| TOTAL | SCT | IJ-1 | - | - |
El coeficiente de determinación R² mide la proporción de variabilidad total explicada por el modelo:
Coeficiente de Determinación Total
$R^2 = \frac{SCTr + SCBl}{SCT}$
Proporción de variabilidad explicada por el modelo
Para Tratamientos
$R^2_\tau = \frac{SCTr}{SCT}$
Variabilidad explicada por tratamientos
Para Bloques
$R^2_\beta = \frac{SCBl}{SCT}$
Variabilidad explicada por bloques
$R^2 = R^2_\tau + R^2_\beta$
Visualizar el proceso de análisis del DBCA.
Representación visual de la estructura y flujo experimental del DBCA.
El siguiente diagrama ilustra la estructura del diseño en bloques completos aleatorizados. Cada bloque contiene todas las unidades experimentales, y los tratamientos se asignan aleatoriamente dentro de cada bloque.
$y_{ij} = \mu + \tau_i + \beta_j + u_{ij}$
SCT = SCTr + SCBl + SCR
| Fuente | g.l. | Esperanza |
|---|---|---|
| Tratamientos | I-1 | σ² + J·Στᵢ²/(I-1) |
| Bloques | J-1 | σ² + I·Σβⱼ²/(J-1) |
| Residual | (I-1)(J-1) | σ² |
El diseño experimental sigue la siguiente secuencia metodológica:
Se identifica una variable que puede influir en la respuesta y cuyos efectos se desea controlar.
Se agrupan las unidades experimentales en J bloques homogéneos internamente.
Cada bloque se divide en I unidades, tantas como tratamientos.
Los I tratamientos se asignan aleatoriamente dentro de cada bloque, de forma independiente.
Se obtiene una observación por cada combinación tratamiento-bloque.
Se aplica el ANOVA para bloques aleatorizados y se interpretan resultados.
Aplicar el DBCA a un problema concreto con cálculos paso a paso.
Caso práctico: Análisis del rendimiento de semilla de algodón con diferentes fertilizantes.
Una industria algodonera quiere comprobar si el rendimiento de la semilla de algodón depende del tipo de fertilizante utilizado. Tiene disponibles 5 tipos de fertilizantes.
Tratamientos
Fertilizantes
Bloques
Parcelas de terreno
Total
Observaciones
| Fertilizantes | A | B | C | D | $y_{i.}$ | $y^2_{i.}$ |
|---|---|---|---|---|---|---|
| 1 | 87 | 86 | 88 | 83 | 344 | 118336 |
| 2 | 85 | 87 | 95 | 85 | 352 | 123904 |
| 3 | 90 | 92 | 95 | 90 | 367 | 134689 |
| 4 | 89 | 97 | 98 | 88 | 372 | 138384 |
| 5 | 99 | 96 | 91 | 90 | 376 | 141376 |
| $y_{.j}$ | 450 | 458 | 467 | 436 | 1811 | 656689 |
| $y^2_{.j}$ | 202500 | 209764 | 218089 | 190096 | 820449 | - |
El siguiente código implementa el análisis completo del DBCA para el ejemplo de la industria algodonera:
"""
Análisis de Diseño en Bloques Completos Aleatorizados (DBCA)
Ejemplo: Rendimiento de semilla de algodón con diferentes fertilizantes
"""
import numpy as np
import pandas as pd
from scipy import stats
# Datos del experimento
datos = np.array([
[87, 86, 88, 83], # Fertilizante 1
[85, 87, 95, 85], # Fertilizante 2
[90, 92, 95, 90], # Fertilizante 3
[89, 97, 98, 88], # Fertilizante 4
[99, 96, 91, 90] # Fertilizante 5
])
I, J = 5, 4 # tratamientos, bloques
N = I * J
# Cálculos principales
y_i = datos.sum(axis=1) # Totales por tratamiento
y_j = datos.sum(axis=0) # Totales por bloque
y_total = datos.sum() # Total general
# Sumas de cuadrados
SCT = np.sum(datos**2) - (y_total**2) / N
SCTr = (1/J) * np.sum(y_i**2) - (y_total**2) / N
SCBl = (1/I) * np.sum(y_j**2) - (y_total**2) / N
SCR = SCT - SCTr - SCBl
# Cuadrados medios
gl_trat, gl_bloq = I-1, J-1
gl_res = gl_trat * gl_bloq
CM_trat = SCTr / gl_trat
CM_bloq = SCBl / gl_bloq
CM_res = SCR / gl_res
# Estadísticos F
F_trat = CM_trat / CM_res
F_bloq = CM_bloq / CM_res
# Coeficientes de determinación
R2_tau = SCTr / SCT
R2_beta = SCBl / SCT
| Fuente de variación | SC | g.l. | CM | $F_{exp}$ |
|---|---|---|---|---|
| Entre tratamientos | 186.20 | 4 | 46.5500 | 4.264* |
| Entre bloques | 103.75 | 3 | 34.5833 | 3.168 |
| Residual | 131.00 | 12 | 10.9166 | - |
| TOTAL | 420.95 | 19 | - | - |
* Significativo al nivel α = 0.05
$F_{exp} = 4.264 > F_{0.05; 4, 12} = 3.26$
Conclusión: Se rechaza H₀. El rendimiento de la semilla difiere significativamente según el fertilizante.
$F_{exp} = 3.168 < F_{0.05; 3, 12} = 3.49$
Conclusión: No se rechaza H₀. Los bloques no son significativamente distintos.
Variabilidad explicada por el tipo de fertilizante
Variabilidad explicada por el tipo de terreno
Si se hubiera prescindido del factor "tipo de terreno" y realizado un DCA:
| Fuente | SC | g.l. | CM | $F_{exp}$ |
|---|---|---|---|---|
| Entre tratamientos | 186.20 | 4 | 46.55 | 2.974 |
| Residual | 234.75 | 15 | 15.65 | - |
| TOTAL | 420.95 | 19 | - | - |
F = 4.264
Valor crítico: 3.26
✓ SIGNIFICATIVO
F = 2.974
Valor crítico: 3.05
✗ NO SIGNIFICATIVO
Conclusión Importante
El diseño en bloques permitió detectar diferencias significativas entre fertilizantes que el diseño completamente aleatorizado no habría detectado. Esto demuestra la utilidad del bloqueo para controlar la variabilidad del terreno.
Criterio Práctico
Experimentalmente se ha comprobado que si $F_{\beta(exp)} > 3$, no conviene prescindir de los bloques, incluso aunque el contraste de bloques no sea significativo.
Realizar comparaciones post-hoc entre tratamientos.
Procedimiento de Tukey para identificar qué tratamientos difieren significativamente entre sí.
Si el ANOVA confirma diferencias significativas entre tratamientos, es conveniente investigar qué medias son distintas mediante comparaciones múltiples. Para el DBCA, el procedimiento de Tukey se adapta considerando:
Los grados de libertad del error son (I-1)(J-1) en lugar de (N-I)
El número de repeticiones n se reemplaza por el número de bloques J
Valor Crítico HSD (Honestly Significant Difference)
$HSD = q_{\alpha, I,(I-1)(J-1)}\sqrt{S^2_{R} / J}$
donde $q_{\alpha, I, (I-1)(J-1)}$ es el valor de la distribución de rango studentizado
Regla de Decisión
Si $|ȳ_{i.} - ȳ_{k.}| > \text{HSD,}$ entonces las medias de los tratamientos i y k difieren significativamente.
Para el ejemplo de la industria algodonera, con los cinco promedios de tratamientos:
| Tratamiento | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| Media $ȳ_{i.}$ | 86.00 | 88.00 | 91.75 | 93.00 | 94.00 |
$HSD = q_{0.05, 5, 12} \cdot \sqrt{\frac{10.9166}{4}}$
$= 4.51\cdot 1.65 =7.4415$
$\left|ȳ_{1.} - ȳ_{2.}\right| = |86 - 88| = 2$
2 < HSD = 7.4415
Conclusión: Las medias de los tratamientos 1 y 2 no difieren significativamente.
"""
Comparaciones múltiples usando el procedimiento de Tukey
para el ejemplo de la industria algodonera
"""
import numpy as np
from scipy import stats
# Datos del ejemplo
medias = np.array([86.00, 88.00, 91.75, 93.00, 94.00])
I, J = 5, 4 # tratamientos, bloques
S2_R = 10.9166 # CM residual
alpha = 0.05
# Valor crítico de Tukey (q_0.05, 5, 12)
q_critico = 4.51
# Cálculo del HSD
HSD = q_critico * np.sqrt(S2_R / J)
print(f"HSD = {HSD:.4f}")
# Matriz de comparaciones
print("\nComparaciones por pares:")
print("-" * 50)
for i in range(len(medias)):
for j in range(i+1, len(medias)):
diferencia = abs(medias[i] - medias[j])
decision = "Significativa" if diferencia > HSD else "No significativa"
print(f"|y{i+1}. - y{j+1}.| = {diferencia:.2f} -> {decision}")
# Ordenar medias para grupos homogéneos
indices_ordenados = np.argsort(medias)[::-1]
print("\nMedias ordenadas (mayor a menor):")
for idx in indices_ordenados:
print(f"Tratamiento {idx+1}: y = {medias[idx]:.2f}")
HSD = 7.4469 Comparaciones por pares: -------------------------------------------------- |y1. - y2.| = 2.00 -> No significativa |y1. - y3.| = 5.75 -> No significativa |y1. - y4.| = 7.00 -> No significativa |y1. - y5.| = 8.00 -> Significativa |y2. - y3.| = 3.75 -> No significativa |y2. - y4.| = 5.00 -> No significativa |y2. - y5.| = 6.00 -> No significativa |y3. - y4.| = 1.25 -> No significativa |y3. - y5.| = 2.25 -> No significativa |y4. - y5.| = 1.00 -> No significativa Medias ordenadas (mayor a menor): Tratamiento 5: y = 94.00 Tratamiento 4: y = 93.00 Tratamiento 3: y = 91.75 Tratamiento 2: y = 88.00 Tratamiento 1: y = 86.00
Verificar los supuestos del modelo mediante análisis de residuos.
La validación de los supuestos del modelo y la comprobación de la inexistencia de interacción son fundamentales para garantizar la fiabilidad del análisis.
Calcular Residuos
$e_{ij} = y_{ij} - \hat{y}_{ij}$
Verificar Normalidad
Shapiro-Wilk, Anderson-Darling
Verificar Homocedasticidad
Levene, Bartlett
Verificar Aditividad
Test de Tukey
La comprobación de la idoneidad del modelo requiere contrastar las siguientes hipótesis principales:
Normalidad: Los errores $u_{ij}$ siguen una distribución normal.
Tests: Shapiro-Wilk, Anderson-Darling, Kolmogorov-Smirnov, Jarque-Bera
Homocedasticidad: La varianza es constante para todos los tratamientos y bloques.
Tests: Levene, Bartlett, Breusch-Pagan
Independencia: Los errores son independientes entre sí.
Tests: Durbin-Watson, gráfico de residuos vs. orden
Aditividad: Sin interacción entre tratamientos y bloques.
Test: Tukey (1 df para interacción)
¿Qué es la interacción?
La interacción ocurre cuando el efecto de un tratamiento depende del bloque en el que se aplica. En un DBCA, asumimos que tratamientos y bloques actúan de forma aditiva, es decir, el efecto relativo de los tratamientos es consistente a través de todos los bloques.
⚠️ Ejemplo de interacción: Si un fertilizante funciona mejor en suelos fértiles pero peor en suelos pobres, hay interacción fertilizante × bloque.
Cuando existe interacción, el modelo general sería:
$y_{ij} = \mu + \tau_i + \beta_j + (\tau\beta)_{ij} + u_{ij}$
con las restricciones $\sum_i \tau_i = \sum_j \beta_j = \sum_i (\tau\beta)_{ij} = \sum_j (\tau\beta)_{ij} = 0$. El número de parámetros independientes sería:
$1 + (I-1) + (J-1) + (I-1)(J-1) = IJ$
⚠️ Con una sola observación por celda, hay $IJ$ parámetros e $IJ$ observaciones → 0 grados de libertad para estimar $\sigma^2$
Tukey propuso suponer que la interacción tiene una forma particularmente simple:
$(\tau\beta)_{ij} = \gamma \cdot \tau_i \cdot \beta_j$
donde $\gamma$ es una constante desconocida. Así, la interacción añade únicamente un parámetro (de ahí el nombre "test de un grado de libertad"), y el modelo resultante es:
Modelo de Tukey:
$y_{ij} = \mu + \tau_i + \beta_j + \gamma\tau_i\beta_j + u_{ij}$
La función de log-verosimilitud del modelo es:
$\ln L = -\frac{N}{2}\ln(2\pi) - \frac{N}{2}\ln(\sigma^2) - \frac{1}{2\sigma^2}\sum_{i,j}(y_{ij} - \mu - \tau_i - \beta_j - \gamma\tau_i\beta_j)^2$
Derivando respecto de $\gamma$ e igualando a cero:
$\frac{\partial \ln L}{\partial \gamma} = \frac{1}{\sigma^2}\sum_{i,j} (y_{ij} - \mu - \tau_i - \beta_j - \gamma\tau_i\beta_j)\tau_i\beta_j = 0$
Resolviendo y sustituyendo las estimaciones muestrales $\hat{\tau}_i = \bar{y}_{i.} - \bar{y}_{..}$ y $\hat{\beta}_j = \bar{y}_{.j} - \bar{y}_{..}$:
Efecto tratamiento
$\hat{\tau}_i = \bar{y}_{i.} - \bar{y}_{..}$
Efecto bloque
$\hat{\beta}_j = \bar{y}_{.j} - \bar{y}_{..}$
Estimador de $\gamma$:
$\hat{\gamma} = \frac{\displaystyle\sum_{i=1}^{I}\sum_{j=1}^{J}\hat{\tau}_i\hat{\beta}_j\,y_{ij}}{\displaystyle\left(\sum_{i=1}^{I}\hat{\tau}_i^2\right)\left(\sum_{j=1}^{J}\hat{\beta}_j^2\right)}$
La suma de cuadrados debida a la interacción (o no-aditividad) se denota por $SCIT$:
$SCIT = \hat{\gamma}^2 \left(\sum_{i=1}^{I}\hat{\tau}_i^2\right)\left(\sum_{j=1}^{J}\hat{\beta}_j^2\right) = \frac{\left[\sum_{i,j}\hat{\tau}_i\hat{\beta}_j\,y_{ij}\right]^2}{\left(\sum_i\hat{\tau}_i^2\right)\left(\sum_j\hat{\beta}_j^2\right)}$
La ecuación básica del ANOVA se modifica incorporando la interacción:
Ecuación ANOVA con interacción:
$SCT = SCTr + SCBl + SCIT + SCR^*$
donde $SCR^* = SCT - SCTr - SCBl - SCIT$ es la suma de cuadrados residual después de remover la interacción.
Se demuestra que si $\gamma = 0$ (no hay interacción), entonces $SCIT/\sigma^2$ y $SCR^*/\sigma^2$ son variables aleatorias independientes distribuidas como $\chi^2$ con 1 y $IJ-I-J$ grados de libertad, respectivamente.
$H_0$: $\gamma = 0$ (no hay interacción → modelo aditivo es adecuado)
$H_1$: $\gamma \neq 0$ (hay interacción del tipo $\gamma\tau_i\beta_j$)
Estadístico de contraste:
$F_{exp} = \frac{SCIT / 1}{SCR^* / (IJ - I - J)} \sim F_{1,\,IJ-I-J}$
No rechazar $H_0$
$F_{exp} \leq F_{\alpha,\,1,\,IJ-I-J}$
→ Modelo aditivo adecuado
Rechazar $H_0$
$F_{exp} > F_{\alpha,\,1,\,IJ-I-J}$
→ Hay interacción
Para el caso de la industria algodonera (5 tratamientos × 4 bloques):
Valor crítico: $F_{0.05; 1, 11} = 4.84$
Decisión: Como $F_{exp} = 0.0401 < 4.84$, no se rechaza $H_0$.
Interpretación: No hay evidencia de interacción entre tratamientos y bloques. El efecto de los tratamientos es consistente a través de todos los bloques, validando el supuesto de aditividad del DBCA. Los bloques y tratamientos actúan con independencia aditiva.
El test de Shapiro-Wilk evalúa si los residuos provienen de una distribución normal.
Hipótesis:
Estadístico:
donde $e_{(i)}$ son los residuos ordenados y $a_i$ son constantes tabuladas.
El test de Levene verifica si la varianza de los residuos es constante entre tratamientos.
Hipótesis:
donde $Z_{ij} = |e_{ij} - \bar{e}_{i.}|$ (desviaciones absolutas de los residuos).
Compara los cuantiles de los residuos con los cuantiles teóricos de una distribución normal.
Patrón esperado bajo normalidad:
Evalúa homocedasticidad y detecta patrones no lineales.
Patrón esperado (homocedasticidad):
📊 Embudo (Heterocedasticidad)
La varianza aumenta con los valores ajustados. Solución: Transformación de datos.
📈 Curva (No linealidad)
Patrón curvo indica relación no lineal. Solución: Añadir términos cuadráticos o transformar.
📉 Outliers
Puntos extremadamente alejados. Solución: Investigar causa, considerar robustez.
Cuando los supuestos del modelo no se cumplen, las transformaciones de la variable respuesta pueden ayudar a estabilizar la varianza y lograr normalidad.
| Problema Detectado | Transformación Recomendada | Fórmula | Casos de Uso |
|---|---|---|---|
| Varianza proporcional a la media | Raíz cuadrada | $y' = \sqrt{y}$ | Datos de conteo (Poisson) |
| Varianza proporcional al cuadrado de la media | Logarítmica | $y' = \ln(y)$ | Datos positivos con CV constante |
| Varianza proporcional a la cuarta potencia | Recíproca | $y' = 1/y$ | Tiempos de reacción, tasas |
| Proporciones o porcentajes | Arcoseno | $y' = \arcsin(\sqrt{y})$ | Datos binomiales (0-100%) |
| Desconocido / Búsqueda óptima | Box-Cox | $y' = \frac{y^\lambda - 1}{\lambda}$ | Búsqueda automática de λ óptimo |
La transformación de Box-Cox encuentra automáticamente el parámetro λ óptimo que maximiza la verosimilitud:
Valores comunes de λ: -2 (recíproca cuadrada), -1 (recíproca), -0.5 (raíz cuadrada recíproca), 0 (log), 0.5 (raíz cuadrada), 1 (sin transformación), 2 (cuadrada).
"""
Validación completa de supuestos para DBCA
Incluye: normalidad, homocedasticidad, independencia y aditividad
"""
import numpy as np
import pandas as pd
from scipy import stats
from scipy.stats import shapiro, anderson, levene, boxcox, durbinwatson
import matplotlib.pyplot as plt
import seaborn as sns
# Configuración de estilo para gráficos
plt.style.use('seaborn-v0_8-whitegrid')
sns.set_palette("husl")
# Datos del ejemplo: 5 tratamientos (filas) x 4 bloques (columnas)
datos = np.array([
[87, 86, 88, 83],
[85, 87, 95, 85],
[90, 92, 95, 90],
[89, 97, 98, 88],
[99, 96, 91, 90]
])
I, J = datos.shape
n_total = I * J
# ============================================================
# 1. CÁLCULO DE RESIDUOS
# ============================================================
y_total_mean = datos.mean()
y_i_mean = datos.mean(axis=1) # Medias por tratamiento
y_j_mean = datos.mean(axis=0) # Medias por bloque
# Efectos estimados
tau_hat = y_i_mean - y_total_mean
beta_hat = y_j_mean - y_total_mean
# Valores ajustados (modelo aditivo)
y_hat = np.zeros((I, J))
for i in range(I):
for j in range(J):
y_hat[i, j] = y_total_mean + tau_hat[i] + beta_hat[j]
# Residuos
residuos = datos - y_hat
residuos_planos = residuos.flatten()
print("=" * 60)
print("ANÁLISIS DE RESIDUOS - DBCA")
print("=" * 60)
print(f"\nMedia de residuos: {residuos_planos.mean():.6f} (debe ser ≈ 0)")
print(f"Suma de residuos: {residuos_planos.sum():.6f} (debe ser ≈ 0)")
# ============================================================
# 2. TEST DE NORMALIDAD - SHAPIRO-WILK
# ============================================================
print("\n" + "=" * 60)
print("TEST DE NORMALIDAD - SHAPIRO-WILK")
print("=" * 60)
stat_shapiro, p_valor_shapiro = shapiro(residuos_planos)
print(f"\nEstadístico W: {stat_shapiro:.4f}")
print(f"Valor p: {p_valor_shapiro:.4f}")
print(f"Decisión: {'No se rechaza H0 (normal)' if p_valor_shapiro > 0.05 else 'Se rechaza H0 (no normal)'}")
# Test de Anderson-Darling
ad_test = anderson(residuos_planos, dist='norm')
print(f"\nAnderson-Darling:")
print(f" Estadístico: {ad_test.statistic:.4f}")
for cv, sig in zip(ad_test.critical_values, ad_test.significance_level):
print(f" Nivel {sig}%: {'Rechazar' if ad_test.statistic > cv else 'No rechazar'} (CV={cv:.3f})")
# ============================================================
# 3. TEST DE HOMOCESTICIDAD - LEVENE
# ============================================================
print("\n" + "=" * 60)
print("TEST DE HOMOCESTICIDAD - LEVENE")
print("=" * 60)
# Levene por tratamientos
residuos_por_trat = [residuos[i, :] for i in range(I)]
stat_levene, p_valor_levene = levene(*residuos_por_trat, center='median')
print(f"\nLevene (por tratamientos):")
print(f" Estadístico W: {stat_levene:.4f}")
print(f" Valor p: {p_valor_levene:.4f}")
print(f" Decisión: {'No se rechaza H0 (varianzas iguales)' if p_valor_levene > 0.05 else 'Se rechaza H0 (varianzas diferentes)'}")
# Test de Bartlett (alternativa)
try:
stat_bartlett, p_valor_bartlett = stats.bartlett(*residuos_por_trat)
print(f"\nBartlett (por tratamientos):")
print(f" Estadístico: {stat_bartlett:.4f}")
print(f" Valor p: {p_valor_bartlett:.4f}")
except Exception as e:
print(f"\nBartlett: No se pudo calcular ({e})")
# ============================================================
# 4. TEST DE INDEPENDENCIA - DURBIN-WATSON
# ============================================================
print("\n" + "=" * 60)
print("TEST DE INDEPENDENCIA - DURBIN-WATSON")
print("=" * 60)
dw_stat = durbinwatson(residuos_planos)
print(f"\nEstadístico Durbin-Watson: {dw_stat:.4f}")
print(f"Interpretación:")
print(f" • DW ≈ 2: No hay autocorrelación")
print(f" • DW < 1.5: Posible autocorrelación positiva")
print(f" • DW > 2.5: Posible autocorrelación negativa")
if 1.5 <= dw_stat <= 2.5:
print(f" → Conclusión: No hay evidencia de autocorrelación")
else:
print(f" → Conclusión: Posible autocorrelación detectada")
# ============================================================
# 5. TEST DE ADITIVIDAD - TUKEY (1 df)
# ============================================================
print("\n" + "=" * 60)
print("TEST DE ADITIVIDAD - TUKEY")
print("=" * 60)
# Cálculo del estimador gamma de Tukey
numerator = 0
denom_tau = np.sum(tau_hat**2)
denom_beta = np.sum(beta_hat**2)
for i in range(I):
for j in range(J):
numerator += tau_hat[i] * beta_hat[j] * datos[i, j]
gamma_hat = numerator / (denom_tau * denom_beta) if (denom_tau * denom_beta) > 0 else 0
# Suma de cuadrados de interacción (SCIT)
SCIT = (gamma_hat**2) * denom_tau * denom_beta
# SCR* (residual después de remover interacción)
SCT_total = np.sum((datos - y_total_mean)**2)
SCTr = J * np.sum(tau_hat**2)
SCBl = I * np.sum(beta_hat**2)
SCR = SCT_total - SCTr - SCBl
SCR_star = SCR - SCIT
# Estadístico F
F_exp = (SCIT / 1) / (SCR_star / (I * J - I - J)) if SCR_star > 0 else 0
F_critico = stats.f.ppf(0.95, 1, I * J - I - J)
print(f"\nResultados:")
print(f" Gamma estimado: {gamma_hat:.6f}")
print(f" SCIT: {SCIT:.6f}")
print(f" SCR*: {SCR_star:.6f}")
print(f" F experimental: {F_exp:.6f}")
print(f" F crítico (α=0.05): {F_critico:.6f}")
print(f" Decisión: {'No se rechaza H0 (modelo aditivo adecuado)' if F_exp < F_critico else 'Se rechaza H0 (hay interacción)'}")
# ============================================================
# 6. COEFICIENTES DE DETERMINACIÓN
# ============================================================
print("\n" + "=" * 60)
print("COEFICIENTES DE DETERMINACIÓN")
print("=" * 60)
R2_total = 1 - SCR / SCT_total
R2_trat = SCTr / SCT_total
R2_bloq = SCBl / SCT_total
print(f"\nR² total: {R2_total:.4f} ({R2_total*100:.2f}% de la variabilidad explicada)")
print(f"R² tratamientos: {R2_trat:.4f} ({R2_trat*100:.2f}%)")
print(f"R² bloques: {R2_bloq:.4f} ({R2_bloq*100:.2f}%)")
# ============================================================
# 7. DIAGNÓSTICO GRÁFICO
# ============================================================
print("\n" + "=" * 60)
print("GENERANDO GRÁFICOS DE DIAGNÓSTICO")
print("=" * 60)
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
# Q-Q Plot
from scipy import stats as sp_stats
sp_stats.probplot(residuos_planos, dist="norm", plot=axes[0, 0])
axes[0, 0].set_title('Q-Q Plot de Residuos')
axes[0, 0].grid(True, alpha=0.3)
# Residuos vs Ajustados
axes[0, 1].scatter(y_hat.flatten(), residuos_planos, alpha=0.7, s=50)
axes[0, 1].axhline(y=0, color='red', linestyle='--', linewidth=2)
axes[0, 1].set_xlabel('Valores Ajustados')
axes[0, 1].set_ylabel('Residuos')
axes[0, 1].set_title('Residuos vs. Valores Ajustados')
axes[0, 1].grid(True, alpha=0.3)
# Histograma de residuos
axes[1, 0].hist(residuos_planos, bins='auto', edgecolor='black', alpha=0.7)
axes[1, 0].axvline(x=residuos_planos.mean(), color='red', linestyle='--', linewidth=2)
axes[1, 0].set_xlabel('Residuos')
axes[1, 0].set_ylabel('Frecuencia')
axes[1, 0].set_title('Histograma de Residuos')
axes[1, 0].grid(True, alpha=0.3)
# Boxplot por tratamientos
axes[1, 1].boxplot([residuos[i, :] for i in range(I)], labels=[f'T{i+1}' for i in range(I)])
axes[1, 1].axhline(y=0, color='red', linestyle='--', linewidth=2)
axes[1, 1].set_xlabel('Tratamientos')
axes[1, 1].set_ylabel('Residuos')
axes[1, 1].set_title('Boxplot de Residuos por Tratamiento')
axes[1, 1].grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('diagnostico_dbca.png', dpi=150, bbox_inches='tight')
print("\nGráficos guardados en: diagnostico_dbca.png")
plt.show()
# ============================================================
# 8. RESUMEN FINAL
# ============================================================
print("\n" + "=" * 60)
print("RESUMEN DE VALIDACIÓN DEL MODELO")
print("=" * 60)
print(f"""
┌─────────────────────────────────────────────────────────────┐
│ SUPUESTO │ TEST │ RESULTADO │
├─────────────────────────────────────────────────────────────┤
│ Normalidad │ Shapiro-Wilk │ {'CUMPLE' if p_valor_shapiro > 0.05 else 'NO CUMPLE':^17} │
│ Homocedasticidad │ Levene │ {'CUMPLE' if p_valor_levene > 0.05 else 'NO CUMPLE':^17} │
│ Independencia │ Durbin-Watson │ {'CUMPLE' if 1.5 <= dw_stat <= 2.5 else 'NO CUMPLE':^17} │
│ Aditividad │ Tukey (1 df) │ {'CUMPLE' if F_exp < F_critico else 'NO CUMPLE':^17} │
└─────────────────────────────────────────────────────────────┘
→ CONCLUSIÓN: El modelo DBCA es {'ADECUADO' if all([p_valor_shapiro > 0.05, p_valor_levene > 0.05, 1.5 <= dw_stat <= 2.5, F_exp < F_critico]) else 'INADECUADO'} para estos datos.
""")
print("=" * 60)
print("Análisis completado exitosamente.")
print("=" * 60)
Practicar con ejercicios de aplicación del DBCA.
Pon a prueba tu comprensión de los diseños en bloques completos aleatorizados con los siguientes casos prácticos.
Un investigador agrícola desea estudiar el efecto de 4 tipos de semillas (A, B, C, D) sobre el rendimiento de un cultivo. Debido a que el terreno presenta variabilidad en cuanto a fertilidad, se decide utilizar un diseño en bloques completos aleatorizados con 5 bloques.
| Semillas | Bloque 1 | Bloque 2 | Bloque 3 | Bloque 4 | Bloque 5 |
|---|---|---|---|---|---|
| A | 25 | 28 | 24 | 26 | 27 |
| B | 30 | 32 | 29 | 31 | 33 |
| C | 22 | 25 | 21 | 23 | 24 |
| D | 28 | 30 | 27 | 29 | 31 |
donde $i = 1, 2, 3, 4$ (tratamientos) y $j = 1, 2, 3, 4, 5$ (bloques).
Un departamento de educación desea evaluar 3 métodos de enseñanza (M1, M2, M3) aplicados a estudiantes de 4 escuelas diferentes. Se selecciona un grupo representativo de cada escuela y se aplica cada método. Las calificaciones finales obtenidas se presentan en la tabla estructurada.
| Métodos | Escuela 1 | Escuela 2 | Escuela 3 | Escuela 4 |
|---|---|---|---|---|
| M1 | 75 | 82 | 78 | 80 |
| M2 | 85 | 88 | 84 | 87 |
| M3 | 70 | 75 | 72 | 74 |
Media general: $\bar{y}_{..} = 990/12 = 82.5$
Medias por tratamiento:
Consultar las fuentes bibliográficas del material.
Fuentes académicas y literatura especializada en diseño de experimentos y ANOVA.
García Leal, J. & Lara Porras, A.M.
1998
Diseño Estadístico de Experimentos. Análisis de la Varianza.
Grupo Editorial Universitario
Lara Porras, A.M.
2000
Diseño Estadístico de Experimentos, Análisis de la Varianza y Temas Relacionados: Tratamiento Informático mediante SPSS.
Proyecto Sur de Ediciones
Montgomery, D.C.
2017 (9ª ed.)
Design and Analysis of Experiments
John Wiley & Sons
Tukey, J.W.
1949
One degree of freedom for non-additivity
Biometrics, 5(3), 232-242
Cochran, W.G. & Cox, G.M.
1992 (2ª ed.)
Experimental Designs
Wiley Classics Library
Box, G.E.P., Hunter, J.S. & Hunter, W.G.
2005 (2ª ed.)
Statistics for Experimenters: Design, Innovation, and Discovery
Wiley-Interscience