ANOVA APLICADO

Los cálculos que se utilizan se basan en los documentos siguientes:

ANOVA

library(DT)
## Warning: package 'DT' was built under R version 4.5.2
# 1. Cargar los datos obtenidos en el muestreo (clorpirifos en lechuga µg/kg)
datos_A1 <- data.frame(
  Lote = rep(1:10, each = 4),
  Muestra = rep(rep(c("W1", "W2"), each = 2), 10),
  Valor = c(
    8.98, 8.41, 7.09, 9.13,  # Porcion 1 de la W en rojo (WR1), Porción 2 de la W en rojo (WR2) y lo mismo para la W en negro (WN1 y WN2)
    8.10, 8.95, 6.32, 6.41,  # WR1,WR2,WN1 y WN2
    8.51, 8.46, 9.11, 9.94,  # WR1,WR2,WN1 y WN2
    9.11, 9.33, 7.72, 7.41,  # WR1,WR2,WN1 y WN2
    8.05, 8.35, 6.42, 6.75,  # WR1,WR2,WN1 y WN2
    8.29, 7.91, 9.44, 9.96,  # WR1,WR2,WN1 y WN2
    8.24, 8.32, 10.33, 10.31,  # WR1,WR2,WN1 y WN2
    8.35, 8.36, 9.06, 9.43,  # WR1,WR2,WN1 y WN2
    9.51, 9.53, 9.52, 9.56,  # WR1,WR2,WN1 y WN2
    8.40, 8.69, 8.11, 8.43   # WR1,WR2,WN1 y WN2
  )
)
promedio<-mean(datos_A1$Valor)
# 2. Análisis de Varianza (ANOVA)
# En este diseño jerárquico, 'Muestra' está anidada en 'Lote'
# para separar varianza entre lotes, entre muestras y analítica.
modelo_a1 <- aov(Valor ~ Lote + Error(Lote/Muestra), data = datos_A1)

# Resumen del modelo para ver las fuentes de variabilidad
summary(modelo_a1)
## 
## Error: Lote
##      Df Sum Sq Mean Sq
## Lote  1   3.86    3.86
## 
## Error: Lote:Muestra
##           Df Sum Sq Mean Sq F value Pr(>F)
## Residuals  1 0.3709  0.3709               
## 
## Error: Within
##           Df Sum Sq Mean Sq F value Pr(>F)
## Residuals 37  36.46  0.9855
# 3. Cálculo de componentes de varianza (Incertidumbre)
# La guía recomienda usar ANOVA para separar s_sampling y s_analytical.
# Aquí usamos la función lme para obtener los componentes directamente.
library(nlme)
library(htmltools)
modelo_mixto <- lme(Valor ~ 1, random = ~1|Lote/Muestra, data = datos_A1)
var_comp <- as.numeric(VarCorr(modelo_mixto))
## Warning: NAs introducidos por coerción
# Extracción de desviaciones estándar (s)
s_entre_lotes <- as.numeric(var_comp[2])    # Variabilidad entre los lotes
s_muestreo    <- as.numeric(var_comp[4])    # Varianza entre muestras (intralote)
s_analitica   <- as.numeric(var_comp[5])    # Varianza intramuestra (error analítico)
incert_analisis<-14
rsd_muestreo<-round(100*s_muestreo/promedio, 1)
incert_combinada<-2*sqrt((incert_analisis)^2+(rsd_muestreo)^2)

# 4. Resultados
cat("Resultados del Diseño anidado:\n")
## Resultados del Diseño anidado:
cat("------------------------------------\n")
## ------------------------------------
cat("Desviación estándar de Muestreo (s_muestreo):", round(s_muestreo, 2), "µg/kg\n")
## Desviación estándar de Muestreo (s_muestreo): 0.86 µg/kg
cat("RSD de Muestreo (s_muestreo):", round(rsd_muestreo, 1), "%\n")
## RSD de Muestreo (s_muestreo): 10.1 %
cat("Desviación estándar porciones (s_analitica):", round(s_analitica, 2), "µg/kg\n")
## Desviación estándar porciones (s_analitica): 0.17 µg/kg
cat("RSD de porciones (s_analitica):", round(100*s_analitica/promedio, 1), "%\n")
## RSD de porciones (s_analitica): 2 %
cat("------------------------------------\n")
## ------------------------------------
cat("Incertidumbre del análisis  (calculado segun capitulo 10):", incert_analisis, "%\n")
## Incertidumbre del análisis  (calculado segun capitulo 10): 14 %
cat("Incertidumbre global  (muestreo + analisis):", round(incert_combinada,1), "%\n")
## Incertidumbre global  (muestreo + analisis): 34.5 %
if (incert_combinada > 50) {
  # Este bloque genera el mensaje en rojo si se visualiza en HTML
  HTML(paste0('<p style="color:red; font-weight:bold; border:2px solid red; padding:10px;">',
              '⚠️ AVISO: La incertidumbre (', round(incert_combinada, 1), 
              '%) supera el umbral del 50%. Se recomienda revisar el protocolo de muestreo.',
              '</p>'))
} else {
  HTML(paste0('<p style="color:green; font-weight:bold;">',
              '✅ Incertidumbre dentro de los límites aceptables (', 
              round(incert_combinada, 1), '%).',
              '</p>'))
}

✅ Incertidumbre dentro de los límites aceptables (34.5%).