数桁にわたるサンプルの線形回帰


8

化学からベールの法則は、液体の吸光度と言う濃度に比例しているC:そう、 Aは= k個のCを 、次に行うための標準的なものが知られている濃度の溶液のセットを準備することで、「標準を形成するために、吸光度を測定します曲線 '(基本的には検量線)、そしてそのデータに対して単純な線形回帰を行って比例を取得します(これを使用して、未知の溶液の濃度を予測できます)。AC

A=kC

これを行う簡単な方法の1つは、既知の濃度から開始して段階希釈を実行することです。これにより、2倍希釈、4倍、8倍、16倍などが得られます。つまり、あなたがの溶液で開始した場合にあなたが持つソリューション取得したい50 μ G / M L25 μ G / M L12.5 μ G / M Lなどを...100μg/mL50μg/mL25μg/mL12.5μg/mL

これで、線形回帰を行うと、低濃度では多くのデータポイントがあり、高濃度では非常に少ないデータセットがあります。この問題を対数スケールで表すほうがはるかに自然です。私の質問は、Cまたはlog Alog Cの線形回帰を実行する必要があるかどうかです。モデルを比較すると、同じ大きさであるが30%程度異なる答えを出すようです。AClogAlogC

線形スケールでプロットされたデータ ログログスケールでプロットされたデータ

回答:


13

(実験と測定装置の)物理学があなたを導きましょう。

最終的に、吸収は媒体を通過する放射線の量を測定することによって決定され、それらの測定は光子のカウントに帰着します。媒体が巨視的である場合、濃度の熱力学的変動は無視できるため、エラーの主な原因はカウントにあります。このエラー(または「ショットノイズ」)には、ポアソン分布があります。これは、放射線がほとんど通過していない高濃度では、誤差が比較的大きいことを意味します。

実験室で十分な注意を払って、濃度は通常非常に正確に測定されるので、濃度の誤差について心配する必要はありません。

吸光度自体は、測定された放射の対数直接関連しています。対数を取ることで、考えられるすべての濃度範囲でエラーの量が均等になります。この理由だけで、吸光度を再表現するのではなく、通常の値で吸光度を分析するのが最善です。 特に、Beer-Lambert法の表現を簡略化する場合でも、吸光度のログを取ることは避けてください。

また、非線形性の可能性についても注意が必要です。ビールランベールの法則 の導出は、吸光度濃度の曲線が高濃度で非線形になることを示唆しています。これを検出またはテストする方法が必要です。

(Ci,Ai)

  • κA/Cκ^=iAiCi

  • A^(C)=κ^C.

  • AiAi^Ci

もちろん、これらはすべて理論的であり、いくらか推測的なものです-分析するための実際のデータはありません-ですが、開始するには妥当な場所です。実験室での繰り返しの経験から、データがここで説明する統計的行動から逸脱していることが示唆される場合、これらの手順のいくつかの変更が必要になります。


これらのアイデアを説明するために、ポアソンノイズや場合によっては非線形応答など、測定の主要な側面を実装するシミュレーションを作成しました。何度も実行することで、実験室で起こりそうな種類の変動を観察できます。これは、1回のシミュレーション実行の結果です。(他のシミュレーションは、以下のコードの開始シードを変更し、必要に応じてさまざまなパラメーターを変更するだけで実行できます。)

図

11/32

κ^=2.1321000

残差のヒストグラムは見た目が良くありません。右側に歪んでいます。これは、なんらかのトラブルを示しています。この問題は、各濃度での残差の非対称性に起因するものではありません。むしろ、それはフィット感の欠如から来ています。これは、右側の箱ひげ図で明らかです。最初の5つはほぼ水平に並んでいますが、最後の1つ(最高濃度)は、場所(高すぎる)とスケール(長すぎる)が明らかに異なります。 。これは、シミュレーションに組み込んだ非線形応答の結果です。非線形性は濃度の全範囲にわたって存在しますが、非常に高い濃度でのみかなりの影響があります。これも多かれ少なかれ実験室で起こることです。しかし、利用できるキャリブレーション実行が1つしかないため、そのような箱ひげ図を描くことはできませんでした。 非線形性が問題になる可能性がある場合は、複数の独立した実行を分析することを検討してください。


シミュレーションはで実行されましたR。ただし、実際のデータを使用した計算は、手作業またはスプレッドシートを使用して簡単に実行できます。非線形性の残差を確認してください。

#
# 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")

5

どちらの近似モデルも元の方程式に対して正しくなることはありません。また、元の方程式は、観測する確率変数に対して正しいモデルになることはできません。

一度にいくつかの問題に取り組みましょう。

A=kCxyk=y/x

2)両方の変数がエラーで観察される場合、単純な線形回帰モデルよりも専門的な手法が必要です。

CAE(A|C)=kC

AC

a)提案したように、線形モデルを元のスケールのデータに直接当てはめることができます。

E(A|C)=kC

Var(A|C)

人口モデルに基づくこのモデルには切片項がないことに注意してください。それは原点を通過します。

Var(A|C)Cp

b)ご指摘のとおり、別の可能なモデルが対数スケールに適合している場合があります。

E(log10A|log10C)=log10k+log10C

Var(log10A|log10C)

このモデルには切片がありますが、勾配係数は1であることに注意してください。このモデルを適合させる方法は、適合させることです。

E(log10A|log10C)log10C=log10k

(とはいえ、たとえば(b)の非単位勾配を検討するなど、元のモデルよりも一般的なモデルを確認することをお勧めします。

p=2

p

(たまたま、小さな残差分析は、(a)一定の分散と(b)のモデルの両方に潜在的な問題がある可能性があることを示唆しています;モデルも、おそらく、より一般的なモデル(a)- with0interceptと(b)-with-unit-unit勾配は必ず適切です(線の周りに曲率があることが示唆されます)。懸念事項の1つは(a)のてこ比です。

4)取り付けられる可能性のある他の多くモデルがあることに注意してください。

E(Aq|C)=kqCqqq=0

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.