Regressão linear em uma amostra que abrange muitas ordens de magnitude

8

A lei de Beer da química diz que a absorvância de um líquido é proporcional à concentração , então: O padrão a ser feito é preparar um conjunto de soluções com concentrações conhecidas, medir a absorvância para formar uma curva padrão '(uma curva de calibração basicamente) e faça uma regressão linear simples nesses dados para obter a proporcionalidade (que pode ser usada para prever as concentrações de soluções desconhecidas).C A = k CAC

A=kC

Uma maneira fácil de fazer isso é começar com uma concentração conhecida e realizar uma diluição em série, o que resultaria em diluição de 2x, 4x, 8x, 16x ... etc. Ou seja, se você começar com uma solução de obterá soluções com , , , etc ... 50 μ g / m L 25 μ g / m L 12,5 μ g / m L100μg/mL50μg/mL25μg/mL12.5μg/mL

Agora, quando você faz a regressão linear, você tem um conjunto de dados com muitos pontos de dados em baixas concentrações e muito poucos em concentrações mais altas. Parece muito mais natural representar esse problema em uma escala de log. Minha pergunta é: devo fazer uma regressão linear de vs. ou vs. ? Quando comparo os modelos, eles parecem dar respostas da mesma ordem de magnitude, mas da ordem de 30% diferentes.log C Um log CAClogAlogC

dados plotados em escala linear dados plotados em escala de log log

user40087
fonte

Respostas:

13

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.

(Ci,Ai)

  • κA/Cκ^=iAiCi

  • A^(C)=κ^C.

  • AiAi^Ci

É 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.)

Figuras

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")
whuber
fonte
5

Nenhum dos seus modelos ajustados pode estar correto para sua equação original e sua equação original não pode ser um modelo correto para as variáveis ​​aleatórias que você observa.

Vamos abordar alguns problemas, um de cada vez.

A=kCxyk=y/x

2) Se ambas as variáveis ​​forem observadas com erro, você precisará de técnicas mais especializadas do que modelos simples de regressão linear.

CAE(A|C)=kC

AC

a) Como você sugeriu, você pode ajustar um modelo linear diretamente aos dados na escala original:

E(A|C)=kC

Var(A|C)

Observe que este modelo, com base no seu modelo de população, não possui termo de interceptação; passa pela origem.

Var(A|C)Cp

b) Como você mencionou, outro modelo possível pode ser montado na escala logarítmica:

E(log10A|log10C)=log10k+log10C

Var(log10A|log10C)

Observe que este modelo possui um intercepto, mas tem um coeficiente de inclinação de 1. Uma maneira de ajustar esse modelo é:

E(log10A|log10C)log10C=log10k

(Dito isso, convém verificar um modelo mais geral que o original, como considerar uma inclinação não unitária em (b), por exemplo.

p=2

p

(Por acaso, uma pequena análise residual sugere para mim que pode haver problemas em potencial com (a) com variação constante e com o modelo em (b); nem modelo, nem mesmo, talvez, os modelos mais gerais (a) - with0intercept e (b) -with-non-slope são necessariamente adequados (há uma sugestão de curvatura sobre a linha) .Uma das preocupações é a alavancagem em (a), que deriva das 'muitas ordens de magnitude')

4) Observe que existem vários outros modelos que podem ser instalados.

E(Aq|C)=kqCqqq=0

Glen_b -Reinstate Monica
fonte