誤差
誤差(ごさ、error)は、測定や計算などで得られた値 M と、指定値あるいは理論的に正しい値あるいは真値 T の差 ε であり、
\varepsilon = M - T
で表される。
基本的には、何らかの特定の意味をもつ対象について、実際に得られた値が、本来の値からどれだけずれているかを表す量である。ただし、一般には真値が分からない場合に測定や見積りを行うのであり、データのばらつきや、測定の分解能以下の不確かさを内包する。したがって、この場合の誤差は、実測値だけから統計的に見積もられるべき量となる。データを定量的に議論する際には、常に、あらゆる種類の誤差の可能性を考慮しなければならない。
誤差の発生原因としては、測定する際に生じる測定誤差や、データを計算する際に生じる計算誤差、標本調査による統計誤差(標準誤差)等が挙げられる。また実際におきる現象と数学的なモデルに違いがある場合にも誤差は生じる。
本来数値で表されるものには光速のように値が定義そのものであったり、円周率のように定義から値が一意に決まるものを除いて必ず誤差がある。また円周率 (π) などは、(直径に対する円周の長さの割合という)定義からは数値が一意に決まるにもかかわらず、それが無理数であるために、それを現実に小数で表示しようとすると必ず誤差(丸め誤差)が生じる。科学的な文脈において数値を扱う際には誤差が存在しない場合を除いて必ず誤差が表示されている。台風の予想円などは身近にある誤差表示の一例である。
また、これらのことから、工業製品等の設計を行うときに製作段階での誤差を考慮して「まち」や「あそび」を作り誤差の発生分を吸収できるようにする。つまり、設計者は常に部品製作上で許容される誤差範囲を設計に織り込んでおり、この誤差範囲を公差(寸法公差・幾何公差)という。
ある測定における測定値に、同じ方法を用いて測定する限り、「真の値」に対して系統的にずれて測定されるような誤差が存在する場合、それを系統誤差と呼ぶ。系統誤差はその原因と傾向が分かっている場合には測定値から取り除くことができるが、通常は完全に取り除くことは不可能である。
系統誤差の値は常に一定であるとは限らない。温度、湿度、或いは単に時間の経過など何らかの外的要因が被測定物に対して作用するのとは別に測定器自体に作用して測定結果を狂わせる場合があるが、このようなものも系統誤差のうちに含む。
例として端が磨耗した竹の物差しを使っていろいろな大きさの升の深さを測ることを考える。この場合測定値は真の値に対して磨耗した分だけ常に大きくなることが予想される。大きさがあらかじめ分かっているほかの物体を同じ物差しで測ることによってこのずれの大きさを決定することができるので、この物差しを使った先の測定結果から升の深さを求めることができる。
しかし系統誤差の原因と傾向をこのように特定することは一般には難しい。たとえばこの物差しの目盛の間隔が製造上の問題や保管方法の問題によって狂っていた場合、同じ物を測れば同じように測定されるのでこれも系統誤差の一種であるがこの傾向を別の方法によって較正することは先ほどの例に比べて格段に難しい。また測定の繰り返し自体によって物差しの磨耗が進行するかもしれない。この場合先ほどとったような簡単な方法ではもはや系統誤差を取り除くことは不可能である。
一般に測定値における系統誤差は様々な原因による誤差の積み重ねであり、その中には特定することがほとんど不可能であるようなものも含まれる。したがって原因と傾向がわかっているものについて極力取り除く努力をしたとしてもある程度の系統誤差が残ることはやむを得ないことといえる。重要なのは最後に残る系統誤差をできる限り小さくした上で、その上限値を正確に把握していることである。
系統誤差が測定の繰り返しに対して一定であるのに対して、測定ごとにばらつく誤差のことを偶然誤差という。
再び端が磨耗した竹の物差しを考える。一般的には磨耗した端はもはや直線ではないと考えられる。したがって物差しを当てるたびに実際に升と接触する点が変わり或いは物差しがわずかに傾き測定結果をばらつかせると考えられる。
偶然誤差の多くは測定方法自体によって規定されるので測定方法自体を改善しない限り取り除くことはできない。また偶然誤差は毎回ランダムな値をとるので測定後に取り除くことができない。偶然誤差によって測定の精度が決定されることが多い。しかし、繰り返し測定により十分に多くの回数の測定によって特定の分布を得ることができれば、その測定方法に即した最適な方法(平均をとる、最頻値を採用するなど)によって真の値の推定値の精度を上げることができる。
二乗平均平方根誤差 (RMSE: Root Mean Square Error)
半値幅:分布の最頻値に対して頻度が半分になる点における分布の幅。FWHM (Full Width at Half Maximum) とも呼ばれる。
上記の議論はある1つの対象物に対する測定に際して起こる誤差について議論してきたが、測定対象となる事象自体がある分布を持っているような対象に対する測定を行う場合がある。工場などで生産する製品の寸法が規格寸法に対してある一定の範囲に収まっているかどうかを測定する場合などである。
この場合、測ろうとしている対象が持つばらつきと、測定方法自体がもつ誤差を区別して考えなければ混乱を生じることになる。たとえば、ある部品の寸法精度が±1%の範囲に収まっているかどうかを検定したいときに、測定方法自体が±1%の誤差を持っていたとすると測定自体が意味をなさなくなってしまったりする。このような測定に用いる測定装置は、あらかじめ測定誤差を検定した上で、測ろうとしている精度に対して誤差が十分に小さいことを確認しておく必要がある。
ばらつきを持つ複数の値の平均値を求めたい場合がある。たとえば、日本人の身長の平均などである。このような測定を行う場合、普通全数を測定することはせず対象とする母集団からランダムに選んだ標本を用いて測定することになる。このような場合求められる平均値の精度は調べた人数等による(推計統計学)が、その他に測定自体の精度も勘案しなければならない。系統誤差が無視できるような測定方法をとるとして、偶然誤差については一つの測定対象を繰り返し測定する場合と同様、測定回数を上げることによって十分に小さくすることが出来る。詳細な議論は避けるが、ほとんどの場合、平均値に統計的な意味があるくらい十分に多くの対象について測定したならば、偶然誤差の影響も十分に小さくなるが、母集団が小さかった場合など誤差が無視できるだけの測定数と統計的に意味のある測定数が異なる場合もある。このような場合には測定誤差による影響を別に考慮する必要がある。
上記のように測定値から誤差を無くすことは不可能である。したがってわれわれが知り得るのは常に誤差付の値でしかない。しかしながら測定すべき量には測定方法とは無関係なある定まった値があると考えるのが合理的である。この値のことを誤差理論において 真の値または真値 と呼んでいる。真値が未知であるとする立場では、真値の代わりに測定によって得られた最確値を真値と考える。最確値としては同じ測定を複数回だけしたときの平均値を用いることが多い。
なお、量子力学によるとそもそも物理量そのものが確定した値を持たず、ある確率分布に従った拡がりを持つ(不確定性)。物理量自体が元から内包している不確定性と、それ以外の原因で発生する誤差は厳密に区別して考える必要がある。
一般に測定によって最終的に求めたい値が一つの測定の結果から得られるとは限らず、それぞれ固有の誤差を持つ複数の値から求めなければならない場合が多い。複数回の測定結果の平均を取る場合などもそのうちの一つである。
たとえば最終的に求めたい値 z が2つの測定値 x, y から z = f(x, y) という関係式で求められる場合、x, y の標準偏差をそれぞれ sx, sy とすると、z の標準偏差 sz は次の誤差伝播の公式により求められる:
s_z=\sqrt{\left(\frac{\partial f}{\partial x}s_x\right)^2+\left(\frac{\partial f}{\partial y}s_y\right)^2}.
数値に対して丸め(まるめ、rounding)を行う場合に、すなわちその数値のどこかの桁で切り上げ・切り捨てなど端数処理を行った場合に生じる誤差を丸め誤差(まるめごさ、rounding error, round-off error)という。
反復計算において、必要とされる回数より少ない回数で反復を止めること(打ち切り)によって生じる誤差が打切り誤差である。
無限級数をはじめの数項だけで計算することによる誤差が代表的である。例えば、sin x のマクローリン展開は
\sin x=x-\frac{x^3}{3!} +\frac{x^5}{5!} -\frac{x^7}{7!} +\cdots
である。これを最初の3項で計算する
\sin x=x-\frac{x^3}{3!} +\frac{x^5}{5!}
と打ち切り誤差が生じる。
浮動小数点数の計算のように精度が限られている条件下で、絶対値の大きい数と絶対値の小さい数を加減算したとき、絶対値の小さい数が無視されてしまう現象。次のような例がある。
2.0000000000 × 1010 + 1.0000000000 =2.0000000001 × 1010
と期待する結果が得られるが、
2.000000000 × 1010 + 1.000000000 = 2.000000000 × 1010
となってしまう。
桁落ち(けたおち、cancellation)とは、値がほぼ等しく丸め誤差を持つ数値同士の減算を行った場合、有効数字が減少すること。絶対値がほぼ等しく符号が異なる数値どうしの加算の場合も同様。固定小数点数では、上位の桁にゼロが並んだ数になり、意味のある値が入っている桁が下のわずかな桁だけとなるのでわかりやすい。浮動小数点数では、上位の桁がゼロになると、正規化によってそれを詰め、以下の桁に "0" を強制的に挿入するので、以降の計算の下位の桁が意味が無いものになる。演算式の変形などで、桁落ちを避けるのが基本である。
例:
\sqrt{1001} -\sqrt{999}
を計算する。
\sqrt{1001} =31.6385840\cdots \simeq 31.638584
\sqrt{999} =31.6069612\cdots \simeq 31.606961
(1) 式の通りに計算すると、
\sqrt{1001} -\sqrt{999} \simeq 31.638584-31.606961=0.031623
有効数字が5桁になってしまう。
有効数字が8桁なので本来なら±0.00000005%程度の誤差であるはずが、±0.00005%程度、ざっと1,000倍の誤差を含むことになる。
(2) 式を変形して、ほぼ等しい数値同士の減算を回避すると、
\sqrt{1001} -\sqrt{999}
=\frac{(\sqrt{1001} -\sqrt{999})(\sqrt{1001} +\sqrt{999})}{(\sqrt{1001} +\sqrt{999})}
=\frac{2}{(\sqrt{1001} +\sqrt{999})}
\simeq \frac{2}{31.638584+31.606961} =\frac{2}{63.245545}
\simeq 0.031622781
となり、有効数字8桁の結果が得られる。ただし、常にこのような回避が可能であるわけではない。
本質は、元となるデータ 31.638584 と 31.606961 とが、すでに最下位桁に丸め誤差を含む近似値である点にある。(1) では、差の上位3桁がゼロになることによって、この丸め誤差が大きな相対誤差になってしまう。(もし、これらの元データが丸め誤差を含まない値であった場合は、結果も全く誤差を含まない点に注意を要する。)
最大の問題はこの後、丸め誤差を含んだ桁が上位有効桁の喪失に伴う正規化によって上位桁に大きく移動することになるため、大きな誤差を含んだまま失われた有効桁数が見かけ上回復するところにある。これによって、後続する演算が全て「巨大な誤差」を「有効桁」として演算を続けることになり、最終的な演算結果は見かけどおりの有効桁数を持っていない状態になる。
乗除算および加算(符号が異なる減算)に関しては有効桁数の減少(上位有効桁の喪失)を伴わないのでこの問題は発生しない。また正規化を行わない固定小数点形式でもこの問題は発生しない(そもそも固定小数点の場合は精度の考え方が異なるため)。(※丸め誤差が累積する問題は発生するが、それは桁落ち誤差ではない)