Diseños experimentales en R: Plackett-Burman, Diseño Central Compuesto (DCC) y pruebas estadísticas
Enviado por Chuletator online y clasificado en Diseño e Ingeniería
Escrito el en
español con un tamaño de 160,72 KB
Diferencias entre Plackett-Burman y Diseño Central Compuesto (DCC)
Plackett-Burman: Su propósito es identificar qué factores tienen efecto en el proceso. Es un diseño de cribado que permite detectar factores importantes entre muchos candidatos con un número reducido de corridas.
Diseño Central Compuesto (DCC): Se utiliza para la optimización y para modelar la respuesta con términos cuadráticos; permite explicar un alto porcentaje de la variabilidad y estudiar interacciones y curvaturas.
Supuestos generales
- Los errores siguen una distribución normal.
- Los errores son independientes.
- Los errores tienen varianza constante (homocedasticidad).
El DCC se aplica comúnmente en la optimización de procesos químicos; por ejemplo: determinar la temperatura y presión exactas en un reactor para maximizar el rendimiento de un polímero específico.
Diseños fraccionados
Un diseño fraccionado es un diseño experimental donde solo se realiza una fracción (un subconjunto) de las corridas totales de un diseño factorial completo. La fórmula del factorial completo es 2k, donde k es el número de factores (por ejemplo, 23 = 8).
Diseño al azar (aleatorización) — Ejemplo en R
Ejemplo de código para generar réplicas y aleatorizar tratamientos:
# Se ha generado un vector con 3 réplicas de cada elemento
a = rep(c('AS','2,4D','TDZ'), c(3,3,3)) # 9 elementos
# Se aleatorizan las unidades experimentales
b = sample(a, 9)
Unidad_experimental = c(1:9) # Serie de números del 1 al 9
data.frame(Unidad.experimental = Unidad_experimental, Tratamiento = b)
Diseño factorial — Ejemplo en R
Combinar niveles de factores y generar réplicas:
# Combinar los niveles de los factores
a = expand.grid(Medio = c('Medio 1', 'Medio 2'), Luz = c(125, 150))
# Generación de réplicas
b = rbind(a, a, a, a) # 4 réplicas
# Aleatorizar el orden
b[sample(1:nrow(b)), ]
Contraste: 1 muestra
Prueba t para una muestra:
# Prueba t de una muestra (ejemplo)
t.test(plomocon, alternative = 'greater', mu = 14) # mu = media del enunciado
# Valor crítico para t con alfa=0.05 y df=9
qt(0.95, 9)
Alternativas: greater (mayor), less (menor), two.sided (dos colas; dividir alfa).
2 muestras independientes
# Cargar datos desde Excel
install.packages('readxl')
library(readxl)
# Leer datos
d = read_xlsx('Dos_independientes.xlsx', sheet = 1)
attach(d)
# Varianzas de cada muestra
var(Placebo) # ejemplo: 303.2545
var(`H-cloro`) # ejemplo: 458.8545
# Prueba de igualdad de varianzas (F test)
?var.test
var.test(`H-cloro`, Placebo, alternative = 'two.sided')
# Ejemplo de percentiles de la distribución F
qf(0.005, 10, 10) # límite inferior
qf(0.995, 10, 10) # límite superior
# (H0) Sus varianzas son iguales
# Prueba t asumiendo varianzas iguales
t.test(`H-cloro`, Placebo, alternative = 'two.sided', var.equal = TRUE)
Ejemplos de cálculos de cuantiles t: dividir el alfa y obtener qt(0.005, 20), qt(0.995, 20) para el valor crítico.
2 muestras dependientes (pareadas)
# Cargar datos desde Excel
install.packages('readxl')
library(readxl)
# Leer datos pareados
a = read_xlsx('Dos_dependientes.xlsx', sheet = 1)
attach(a)
# Prueba t pareada (el orden importa)
t.test(Temp_8AM, Temp_12AM, alternative = 'two.sided', paired = TRUE)
# Cuantiles t para alfa=0.05 (dos colas) y gl correspondientes
qt(0.025, 6)
qt(0.975, 6)
ANOVA de 1 factor
# Generar factor con el número de observaciones por grupo
c = rep(1:4, c(14,14,10,16)) # números de datos de cada grupo
# Convertir a factor
antibiotico = factor(c)
# Vector respuesta (diámetros)
diametro = c(Control_1, Antibiotico_A, Antibiotico_B, `Antibiótico C`)
cbind(antibiotico, diametro) # Agrupa vectores por columnas
# Ajustar modelo ANOVA
d = aov(diametro ~ antibiotico)
# Tabla ANOVA
anova(d)
# Valor crítico F ejemplo
qf(0.95, 3, 50)
Diseño Central Compuesto (CCD) y superficie de respuesta — Ejemplo en R
# Paquete rsm para CCD
install.packages('rsm')
library(rsm)
?ccd
# Crear un CCD con 2 factores y codificación personalizada
a = ccd(basis = 2, n0 = 2, randomize = FALSE, coding = list(x1 ~ (Tiempo - 85)/10, x2 ~ (Temperatura - 175)/5), oneblock = TRUE)
# Codificar los datos
b = coded.data(a, x1 ~ (Tiempo - 85)/10, x2 ~ (Temperatura - 175)/5)
print(b, decode = FALSE)
# Agregar vector con resultados de la variable de respuesta
rendimiento = c(80.5, 81.5, 82, 83.5, 83.9, 84.3, 84, 79.7, 79.8, 79.5, 81.7, 80.5)
# Construya el modelo de regresión que surge de este caso
?rsm
c = rsm(rendimiento ~ SO(x1, x2), data = b)
summary(c)
Interpretación breve del ejemplo: el R2 es bajo (por ejemplo 0.34), lo que indica que el modelo explica una pequeña proporción de la variabilidad y no sería un buen modelo para predecir. El p-valor del modelo puede ser mayor que alfa (por ejemplo, p = 0.69 > 0.05), lo que indica que el modelo no es significativo. El p-valor de la falta de ajuste (lack of fit) también puede ser no significativo (por ejemplo 0.39), lo que sugiere que no hay evidencia fuerte de falta de ajuste con los datos disponibles.
Diseño factorial fraccionado y paquete FrF2
# Paquete FrF2 para diseños factoriales fraccionados
install.packages('FrF2')
library(FrF2)
?pb
# Generar un diseño Plackett-Burman / fraccionado de 8 corridas y 6 factores
d = pb(8, 6, factor.names = c('Tipo Levadura', 'Inoculo', 'pH', 'Temperatura', 'Aire', 'Tiempo'), randomize = FALSE)
# Construya el modelo de regresión que surge de este caso.
actividad_enzimatica = c(5.4, 2.3, 10.4, 15.5, 3.4, 7.8, 5.9, 8.4)
e = add.response(d, actividad_enzimatica)
f = lm(e)
summary(f)
En este ejemplo el modelo podría explicar, por ejemplo, el 93.4% de la variabilidad en la degradación. Sin embargo, el p-value del modelo puede ser 0.0577 (> 0.05), lo que indicaría que no se rechaza H0 al 5% (el modelo global no fue significativo al nivel 0.05).
Notas finales y recomendaciones
- Siempre verifique los supuestos (normalidad, independencia, homocedasticidad) antes de interpretar los resultados.
- Use aleatorización y réplicas para controlar fuentes de variación no deseadas.
- Para optimización, prefiera diseños de superficie de respuesta (CCD, Box–Behnken) si anticipa curvatura en la respuesta.
- Documente claramente la codificación de factores y unidades experimentales en el script R para reproducibilidad.