Deja que la física (del experimento y el aparato de medición) te guíe.
En última instancia, la absorción se determina midiendo las cantidades de radiación que pasan a través del medio y esas mediciones se reducen a contar fotones. Cuando el medio es macroscópico, las fluctuaciones termodinámicas en la concentración son insignificantes, por lo que la principal fuente de error radica en el recuento. Este error (o "ruido de disparo" ) tiene una distribución de Poisson . Esto implica que el error es relativamente grande a altas concentraciones cuando pasa poca radiación.
Con suficiente cuidado en el laboratorio, las concentraciones generalmente se miden con extrema precisión, por lo que no me preocuparé por errores en las concentraciones.
La absorbancia en sí está directamente relacionada con el logaritmo de la radiación medida . Tomar el logaritmo iguala la cantidad de error en todo el rango posible de concentraciones. Solo por esta razón, es mejor analizar la absorbancia en términos de sus valores habituales en lugar de volver a expresarlos. En particular, debemos evitar tomar registros de absorbancia, aunque eso simplificaría la expresión de la ley de Beer-Lambert.
También debemos estar atentos a posibles no linealidades. La derivación de la Ley de Beer-Lambert sugiere que la curva de absorbancia vs concentración se volverá no lineal a altas concentraciones. Se necesita alguna forma de detectar o probar esto.
Estas consideraciones sugieren un procedimiento simple para analizar una serie de de concentraciones y absorbancias medidas:(Ci,Ai)
Estime el coeficiente como la media aritmética de , .κA/Cκ^=∑iAiCi
Predecir la absorbancia en cada concentración en términos del coeficiente estimado:A^(C)=κ^C.
Verifique los residuos aditivos para tendencias no lineales en .Ai−Ai^Ci
Por supuesto, todo esto es teórico y algo especulativo, no tenemos datos reales para analizar, pero es un lugar razonable para comenzar. Si la experiencia de laboratorio repetida sugiere que los datos se apartan de los comportamientos estadísticos descritos aquí, entonces se requerirían algunas modificaciones de estos procedimientos.
Para ilustrar estas ideas, he creado una simulación que implementa los aspectos clave de la medición, incluido el ruido de Poisson y posiblemente las respuestas no lineales. Al ejecutarlo muchas veces, podemos observar el tipo de variación que es probable que se encuentre en el laboratorio. Aquí están los resultados de una ejecución de simulación. (Se pueden realizar otras simulaciones simplemente cambiando la semilla inicial en el siguiente código y modificando varios parámetros según se desee).
Este experimento simulado midió la absorbancia a concentraciones de hasta . Los márgenes verticales en valores aparentes en el diagrama de dispersión muestran los efectos de (a) ruido de disparo en las mediciones de transmisión y (b) ruido de disparo en la medición de transmisión inicial a concentración cero. (Observe cómo esto realmente crea algunos valores de absorbancia negativos ). Aunque los errores resultantes no van a tener exactamente las mismas distribuciones en cada concentración, los spreads más o menos iguales son evidencia empírica de que las distribuciones son lo suficientemente cercanas como para ser lo mismo que necesitamos. No te preocupes por eso. En otras palabras, no hay necesidad de ponderar las absorbancias de acuerdo con las concentraciones.11/32
La línea diagonal roja se ha estimado a partir de las 50 simulaciones. Tiene una pendiente de , que difiere ligeramente de la pendiente físicamente correcta de que se usó en las simulaciones. Esta desviación es muy grande porque supuse que había muy poca radiación para medir; el recuento máximo de fotones fue de solo . En la práctica, los recuentos máximos podrían ser muchos órdenes de magnitud mayores que esto, lo que llevaría a estimaciones de pendiente muy precisas, ¡pero entonces no aprenderíamos mucho de esta cifra!κ^=2.1321000
El histograma de los residuos no se ve bien: está sesgado a la derecha. Esto indica algún tipo de problema. Ese problema no proviene de la asimetría en los residuos en cada concentración; más bien, proviene de una falta de ajuste. Eso es evidente en los diagramas de caja a la derecha: aunque los primeros cinco se alinean casi horizontalmente, el último, en la concentración más alta, difiere claramente en su ubicación (es demasiado alta) y escala (es demasiado larga) . Esto resulta de una respuesta no lineal que construí en la simulación. Aunque la no linealidad está presente en todo el rango completo de concentraciones, tiene un efecto apreciable solo en las concentraciones más altas. Esto es más o menos lo que sucedería también en el laboratorio. Sin embargo, con solo una ejecución de calibración disponible, no pudimos dibujar tales diagramas de caja. Considere analizar múltiples ejecuciones independientes si la no linealidad puede ser un problema.
La simulación se realizó en R
. Sin embargo, los cálculos con datos reales son simples de realizar a mano o con una hoja de cálculo: solo asegúrese de verificar que los residuos no sean lineales.
#
# Simulate instrument responses:
# `concentration` is an array of concentrations to use.
# `kappa` is the Beer-Lambert law coefficient.
# `n.0` is the largest expected photon count (at 0 concentration).
# `start` is a tiny positive value used to avoid logs of zero.
# `beta` is the amount of nonlinearity (it is a quadratic perturbation
# of the Beer-Lambert law).
# The return value is a parallel array of measured absorbances; it is subject
# to random fluctuations.
#
observe <- function(concentration, kappa=1, n.0=10^3, start=1/6, beta=0.2) {
transmission <- exp(-kappa * concentration - beta * concentration^2)
transmission.observed <- start + rpois(length(transmission), transmission * n.0)
absorbance <- -log(transmission.observed / rpois(1, n.0))
return(absorbance)
}
#
# Perform a set of simulations.
#
concentration <- 2^(-(0:5)) # Concentrations to use
n.iter <- 50 # Number of iterations
set.seed(17) # Make the results reproducible
absorbance <- replicate(n.iter, observe(concentration, kappa=2))
#
# Put the results into a data frame for further analysis.
#
a.df <- data.frame(absorbance = as.vector(absorbance))
a.df$concentration <- concentration # ($ interferes with TeX processing on this site)
#
# Create the figures.
#
par(mfrow=c(1,3))
#
# Set up a region for the scatterplot.
#
plot(c(min(concentration), max(concentration)),
c(min(absorbance), max(absorbance)), type="n",
xlab="Concentration", ylab="Absorbance",
main=paste("Scatterplot of", n.iter, "iterations"))
#
# Make the scatterplot.
#
invisible(apply(absorbance, 2,
function(a) points(concentration, a, col="#40404080")))
slope <- mean(a.df$absorbance / a.df$concentration)
abline(c(0, slope), col="Red")
#
# Show the residuals.
#
a.df$residuals <- a.df$absorbance - slope * a.df$concentration # $
hist(a.df$residuals, main="Histogram of residuals", xlab="Absorbance Difference") # $
#
# Study the residual distribution vs. concentration.
#
boxplot(a.df$residuals ~ a.df$concentration, main="Residual distributions",
xlab="Concentration")