Deixe a física (do experimento e do aparelho de medição) guiá-lo.
Por fim, a absorção é determinada medindo quantidades de radiação que passam pelo meio e essas medições se resumem à contagem de fótons. Quando o meio é macroscópico, as flutuações termodinâmicas na concentração são desprezíveis, portanto a principal fonte de erro está na contagem. Este erro (ou "ruído do tiro" ) tem uma distribuição Poisson . Isso implica que o erro é relativamente grande em altas concentrações quando pouca radiação está passando.
Com bastante cuidado no laboratório, as concentrações normalmente são medidas com extrema precisão, portanto não me preocuparei com erros nas concentrações.
A absorvância em si está diretamente relacionada ao logaritmo da radiação medida . Tomar o logaritmo reduz a quantidade de erros em toda a faixa possível de concentrações. Por esse motivo, é melhor analisar a absorvância em termos de seus valores usuais, em vez de reexpressá-los. Em particular, devemos evitar registros de absorvância, mesmo que isso simplifique a expressão da lei de Beer-Lambert.
Também devemos estar alertas para possíveis não linearidades. A derivação da Lei de Beer-Lambert sugere que a curva de absorbância versus concentração se tornará não-linear em altas concentrações. É necessária alguma maneira de detectar ou testar isso.
( CEu, AEu)
É claro que tudo isso é teórico e um tanto especulativo - não temos dados reais para analisar - mas é um ponto de partida razoável. Se a experiência repetida do laboratório sugerir que os dados se afastam dos comportamentos estatísticos descritos aqui, algumas modificações desses procedimentos seriam necessárias.
Para ilustrar essas idéias, criei uma simulação que implementa os principais aspectos da medição, incluindo o ruído de Poisson e, possivelmente, respostas não lineares. Ao executá-lo várias vezes, podemos observar o tipo de variação que provavelmente será encontrada em laboratório. Aqui estão os resultados de uma simulação. (Outras simulações podem ser realizadas simplesmente alterando a semente inicial no código abaixo e modificando vários parâmetros conforme desejado.)
11 / 32
κ^= 2,1321000
O histograma de resíduos não parece bom: está inclinado para a direita. Isso indica algum tipo de problema. Esse problema não vem da assimetria nos resíduos em cada concentração; pelo contrário, vem de uma falta de ajuste. Isso é evidente nos gráficos da caixa à direita: embora os cinco primeiros se alinhem quase na horizontal, o último - na concentração mais alta - difere claramente na localização (é muito alto) e na escala (é muito longo) . Isso resulta de uma resposta não linear que eu construí na simulação. Embora a não linearidade esteja presente em toda a faixa de concentrações, ela tem um efeito apreciável apenas nas concentrações mais altas. Isso é mais ou menos o que aconteceria em laboratório também. No entanto, com apenas uma execução de calibração disponível, não foi possível desenhar tais gráficos de caixa. Considere analisar várias execuções independentes se a não linearidade puder ser um problema.
A simulação foi realizada em R
. Os cálculos com dados reais, no entanto, são simples de realizar manualmente ou com uma planilha: verifique os resíduos quanto à não linearidade.
#
# 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")