Lineare Regression auf einer Probe, die viele Größenordnungen umfasst

8

Das Gesetz von Beer aus der Chemie besagt, dass die Absorption einer Flüssigkeit proportional zur Konzentration C ist , also: A = k C Der Standard besteht darin, einen Satz von Lösungen mit bekannten Konzentrationen herzustellen und die Absorption zu messen, um einen Standard zu bilden Kurve '(im Grunde eine Kalibrierungskurve) und führen Sie eine einfache lineare Regression dieser Daten durch, um die Proportionalität zu erhalten (die dann verwendet werden kann, um die Konzentrationen unbekannter Lösungen vorherzusagen).AC

A=kC

Eine einfache Möglichkeit, dies zu tun, besteht darin, mit einer bekannten Konzentration zu beginnen und eine Reihenverdünnung durchzuführen, mit der Sie 2x Verdünnung, 4x, 8x, 16x ... usw. Erhalten. Dh , wenn Sie mit einer Lösung von starten Sie Lösungen mit bekommen 50 μ g / m L , 25 μ g / m L , 12,5 μ g / m L etc ...100μg/mL50μg/mL25μg/mL12.5μg/mL

Wenn Sie jetzt die lineare Regression durchführen, haben Sie einen Datensatz mit vielen Datenpunkten bei niedrigen Konzentrationen und sehr wenigen bei höheren Konzentrationen. Es erscheint viel natürlicher, dieses Problem auf einer logarithmischen Skala darzustellen. Meine Frage ist dann, sollte ich eine lineare Regression von gegen C oder log A gegen log C durchführen ? Wenn ich die Modelle vergleiche, scheinen sie Antworten zu geben, die in der gleichen Größenordnung, aber in der Größenordnung von 30% unterschiedlich sind.AClogAlogC

Daten auf linearer Skala aufgezeichnet Daten auf Protokollprotokollskala aufgezeichnet

user40087
quelle

Antworten:

13

Lassen Sie sich von der Physik (des Experiments und des Messgeräts) leiten.

Letztendlich wird die Absorption durch Messen der durch das Medium hindurchtretenden Strahlungsmengen bestimmt, und diese Messungen laufen darauf hinaus, Photonen zu zählen. Wenn das Medium makroskopisch ist, sind thermodynamische Konzentrationsschwankungen vernachlässigbar, so dass die Hauptfehlerquelle in der Zählung liegt. Dieser Fehler (oder "Schussrauschen" ) hat eine Poisson-Verteilung . Dies impliziert, dass der Fehler bei hohen Konzentrationen relativ groß ist, wenn wenig Strahlung durchgelassen wird.

Bei ausreichender Sorgfalt im Labor werden die Konzentrationen normalerweise äußerst genau gemessen, sodass ich mir keine Sorgen über Konzentrationsfehler machen muss.

Die Absorption selbst steht in direktem Zusammenhang mit dem Logarithmus der gemessenen Strahlung . Durch die Verwendung des Logarithmus wird die Fehlermenge über den gesamten möglichen Konzentrationsbereich ausgeglichen. Allein aus diesem Grund ist es am besten, die Extinktion anhand ihrer üblichen Werte zu analysieren, anstatt sie erneut auszudrücken. Insbesondere sollten wir vermeiden, Absorptionsprotokolle zu erstellen, auch wenn dies den Ausdruck des Beer-Lambert-Gesetzes vereinfachen würde.

Wir sollten auch auf mögliche Nichtlinearitäten achten. Die Ableitung des Beer-Lambert - Gesetzes schlägt vor , die Absorption vs Konzentrationskurve bei hohen Konzentrationen nicht - lineare werden wird. Es ist eine Möglichkeit erforderlich, dies zu erkennen oder zu testen.

(Ci,Ai)

  • κA/Cκ^=iAiCi

  • A^(C)=κ^C.

  • AiAi^Ci

Natürlich ist dies alles theoretisch und etwas spekulativ - wir haben keine tatsächlichen Daten zu analysieren -, aber es ist ein vernünftiger Ausgangspunkt. Wenn wiederholte Laborerfahrungen darauf hindeuten, dass die Daten von den hier beschriebenen statistischen Verhaltensweisen abweichen, wären einige Modifikationen dieser Verfahren erforderlich.


Um diese Ideen zu veranschaulichen, habe ich eine Simulation erstellt, die die Schlüsselaspekte der Messung implementiert, einschließlich des Poisson-Rauschens und möglicherweise nichtlinearer Antworten. Wenn wir es viele Male ausführen, können wir die Art von Variation beobachten, die im Labor wahrscheinlich auftritt. Hier sind die Ergebnisse eines Simulationslaufs. (Andere Simulationen können einfach durchgeführt werden, indem der Startwert im folgenden Code geändert und verschiedene Parameter nach Wunsch geändert werden.)

Zahlen

11/32

κ^=2.1321000

Das Histogramm der Residuen sieht nicht gut aus: Es ist nach rechts geneigt. Dies weist auf Probleme hin. Dieses Problem ist nicht auf eine Asymmetrie der Residuen bei jeder Konzentration zurückzuführen. Vielmehr kommt es von einem Mangel an Passform. Dies zeigt sich in den Boxplots auf der rechten Seite: Obwohl die ersten fünf fast horizontal ausgerichtet sind, unterscheidet sich der letzte - bei der höchsten Konzentration - deutlich in Position (zu hoch) und Skalierung (zu lang). . Dies ergibt sich aus einer nichtlinearen Antwort, die ich in die Simulation eingebaut habe. Obwohl die Nichtlinearität im gesamten Konzentrationsbereich vorhanden ist, wirkt sie sich nur bei den höchsten Konzentrationen spürbar aus. Dies würde mehr oder weniger auch im Labor passieren. Mit nur einem verfügbaren Kalibrierungslauf konnten wir jedoch keine solchen Boxplots zeichnen. Erwägen Sie die Analyse mehrerer unabhängiger Läufe, wenn Nichtlinearität ein Problem sein könnte.


Die Simulation wurde in durchgeführt R. Die Berechnungen mit tatsächlichen Daten sind jedoch einfach von Hand oder mit einer Tabelle durchzuführen: Überprüfen Sie nur die Residuen auf Nichtlinearität.

#
# 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
quelle
5

Keines Ihrer angepassten Modelle kann für Ihre ursprüngliche Gleichung korrekt sein, und Ihre ursprüngliche Gleichung kann für die beobachteten Zufallsvariablen kein korrektes Modell sein.

Lassen Sie uns einige Probleme einzeln angehen.

A=kCxyk=y/x

2) Wenn beide Variablen fehlerhaft beobachtet werden, benötigen Sie speziellere Techniken als einfache lineare Regressionsmodelle.

CAE(A|C)=kC

AC

a) Wie Sie vorgeschlagen haben, können Sie ein lineares Modell direkt an die Daten auf der ursprünglichen Skala anpassen:

E(A|C)=kC

Var(A|C)

Beachten Sie, dass dieses Modell, das auf Ihrem Bevölkerungsmodell basiert, keinen Intercept-Term hat. es geht durch den Ursprung.

Var(A|C)Cp

b) Wie Sie bereits erwähnt haben, kann ein anderes mögliches Modell auf der logarithmischen Skala angebracht werden:

E(log10A|log10C)=log10k+log10C

Var(log10A|log10C)

Beachten Sie, dass dieses Modell einen Achsenabschnitt hat, aber einen Steigungskoeffizienten von 1 hat. Eine Möglichkeit, dieses Modell anzupassen, besteht darin, Folgendes anzupassen:

E(log10A|log10C)log10C=log10k

(Das heißt, Sie möchten möglicherweise ein allgemeineres Modell als Ihr ursprüngliches Modell überprüfen, z. B. die Berücksichtigung einer Steigung ohne Einheit in (b).

p=2

p

(Wie es passiert, deutet eine kleine Restanalyse darauf hin, dass es potenzielle Probleme sowohl mit (a) mit konstanter Varianz als auch mit dem Modell in (b) geben kann; weder Modell noch vielleicht sogar die allgemeineren Modelle (a) - with0intercept und (b) -with-non-unit plane sind notwendigerweise geeignet (es gibt einen Hinweis auf eine Krümmung der Linie). Eines der Probleme ist die Hebelwirkung in (a), die sich aus den 'vielen Größenordnungen' ergibt.)

4) Beachten Sie, dass möglicherweise zahlreiche andere Modelle eingebaut sind.

E(Aq|C)=kqCqqq=0

Glen_b -Reinstate Monica
quelle