|
|
1行目: |
1行目: |
− | '''誤差'''(ごさ、error)は、測定や計算などで得られた値 ''M'' と、指定値あるいは理論的に正しい値あるいは真値 ''T'' の差 ''ε'' であり、 | + | '''誤差'''(ごさ、error) |
− | :<math>\varepsilon = M - T </math>
| |
− | で表される<ref>[[岡村総吾]]監訳『IEEE電気・電子用語事典』[[丸善]]、1989年</ref><ref>西野治『標準電気工学講座 電気計測』第1章、[[コロナ社 (出版社)|コロナ社]]、1985年</ref>。
| |
| | | |
− | == 概要 ==
| + | 測定をしたり計算をしたりするとき、本当に知りたいのは真値(厳密値)であるが、実際にはそれに近い値(近似値)しか得られないことが多い。両者の差を誤差という。符号をつけて表すときは、近似値のほうが大きい場合(過大近似値の場合)をプラスにとるのが普通である。式で表せば次のようになる。 |
− | 基本的には、何らかの特定の意味をもつ対象について、実際に得られた値が、本来の値からどれだけずれているかを表す量である。ただし、一般には真値が分からない場合に測定や見積りを行うのであり、データのばらつきや、測定の分解能以下の不確かさを内包する。したがって、この場合の誤差は、実測値だけから統計的に見積もられるべき量となる。データを[[定量的]]に議論する際には、常に、あらゆる種類の誤差の可能性を考慮しなければならない。
| |
| | | |
− | 誤差の発生原因としては、測定する際に生じる'''[[#測定誤差|測定誤差]]'''や、[[データ]]を計算する際に生じる'''[[#計算誤差の種類|計算誤差]]'''、[[標本調査]]による'''統計誤差'''([[標準誤差]])等が挙げられる。また実際におきる現象と数学的なモデルに違いがある場合にも誤差は生じる。
| + | (近似値)-(真値)=(誤差) |
| | | |
− | 本来数値で表されるものには[[光速]]のように値が定義そのものであったり、円周率のように定義から値が一意に決まるものを除いて必ず誤差がある。また[[円周率]] ([[π|{{π}}]]) などは、(直径に対する円周の長さの割合という)定義からは数値が一意に決まるにもかかわらず、それが[[無理数]]であるために、それを現実に小数で表示しようとすると必ず誤差(丸め誤差)が生じる。科学的な文脈において数値を扱う際には誤差が存在しない場合を除いて必ず誤差が表示されている。台風の予想円などは身近にある誤差表示の一例である。
| + | {{テンプレート:20180815sk}} |
− | | |
− | また、これらのことから、工業製品等の[[設計]]を行うときに製作段階での誤差を考慮して「まち」や「あそび」を作り誤差の発生分を吸収できるようにする。つまり、設計者は常に部品製作上で許容される誤差範囲を設計に織り込んでおり、この誤差範囲を[[公差]](寸法公差・幾何公差)という。
| |
− | | |
− | == 測定誤差 ==
| |
− | === 系統誤差 ===
| |
− | ある[[測定]]における測定値に、同じ方法を用いて測定する限り、「真の値」に対して系統的にずれて測定されるような誤差が存在する場合、それを系統誤差と呼ぶ。系統誤差はその原因と傾向が分かっている場合には測定値から取り除くことができるが、通常は完全に取り除くことは不可能である。
| |
− | | |
− | 系統誤差の値は常に一定であるとは限らない。[[温度]]、[[湿度]]、或いは単に時間の経過など何らかの外的要因が被測定物に対して[[作用]]するのとは別に測定器自体に作用して測定結果を狂わせる場合があるが、このようなものも系統誤差のうちに含む。
| |
− | | |
− | 例として端が磨耗した竹の[[物差し]]を使っていろいろな大きさの[[升]]の深さを測ることを考える。<!--一般的にはこういう用途に竹定規は向いてないよね。普通は先端の磨耗を考えて1cmくらい余らせて測るもんだからね→竹定規-->この場合測定値は真の値に対して磨耗した分だけ常に大きくなることが予想される。大きさがあらかじめ分かっているほかの物体を同じ物差しで測ることによってこのずれの大きさを決定することができるので、この物差しを使った先の測定結果から升の深さを求めることができる。
| |
− | | |
− | しかし系統誤差の原因と傾向をこのように特定することは一般には難しい。たとえばこの物差しの目盛の間隔が製造上の問題や保管方法の問題によって狂っていた場合、同じ物を測れば同じように測定されるのでこれも系統誤差の一種であるがこの傾向を別の方法によって[[較正]]することは先ほどの例に比べて格段に難しい。また測定の繰り返し自体によって物差しの磨耗が進行するかもしれない。この場合先ほどとったような簡単な方法ではもはや系統誤差を取り除くことは不可能である。
| |
− | | |
− | 一般に測定値における系統誤差は様々な原因による誤差の積み重ねであり、その中には特定することがほとんど不可能であるようなものも含まれる。したがって原因と傾向がわかっているものについて極力取り除く努力をしたとしてもある程度の系統誤差が残ることはやむを得ないことといえる。重要なのは最後に残る系統誤差をできる限り小さくした上で、その上限値を正確に把握していることである。
| |
− | | |
− | === 偶然誤差 ===
| |
− | 系統誤差が測定の繰り返しに対して一定であるのに対して、測定ごとにばらつく誤差のことを偶然誤差という。
| |
− | | |
− | 再び端が磨耗した竹の物差しを考える。一般的には磨耗した端はもはや直線ではないと考えられる。したがって物差しを当てるたびに実際に升と接触する点が変わり或いは物差しがわずかに傾き測定結果をばらつかせると考えられる。
| |
− | | |
− | 偶然誤差の多くは測定方法自体によって規定されるので測定方法自体を改善しない限り取り除くことはできない。また偶然誤差は毎回[[ランダム]]な値をとるので測定後に取り除くことができない。偶然誤差によって測定の精度が決定されることが多い。しかし、繰り返し測定により十分に多くの回数の測定によって特定の分布を得ることができれば、その測定方法に即した最適な方法([[平均]]をとる、最頻値を採用するなど)によって真の値の推定値の精度を上げることができる。
| |
− | | |
− | ==== 偶然誤差の大きさを表す指標 ====
| |
− | *[[平均二乗偏差]] (RMS: Root Mean Square)
| |
− | *[[標準偏差]]
| |
− | *[[半値幅]]:分布の最頻値に対して頻度が半分になる点における分布の幅。FWHM (Full Width at Half Maximum) とも呼ばれる。
| |
− | *[[公算誤差]]
| |
− | | |
− | === 測定対象が1つではないときの測定誤差 ===
| |
− | 上記の議論はある1つの対象物に対する測定に際して起こる誤差について議論してきたが、測定対象となる事象自体がある分布を持っているような対象に対する測定を行う場合がある。工場などで生産する製品の寸法が規格寸法に対してある一定の範囲に収まっているかどうかを測定する場合などである。
| |
− | | |
− | この場合、測ろうとしている対象が持つ[[統計的ばらつき|ばらつき]]と、測定方法自体がもつ誤差を区別して考えなければ混乱を生じることになる。たとえば、ある部品の寸法精度が±1%の範囲に収まっているかどうかを検定したいときに、測定方法自体が±1%の誤差を持っていたとすると測定自体が意味をなさなくなってしまったりする。このような測定に用いる測定装置は、あらかじめ測定誤差を検定した上で、測ろうとしている精度に対して誤差が十分に小さいことを確認しておく必要がある。
| |
− | | |
− | === 平均値の測定 ===
| |
− | ばらつきを持つ複数の値の平均値を求めたい場合がある。たとえば、日本人の身長の平均などである。このような測定を行う場合、普通全数を測定することはせず対象とする母集団からランダムに選んだ[[標本 (統計学)|標本]]を用いて測定することになる。このような場合求められる平均値の精度は調べた人数等による([[推計統計学]])が、その他に測定自体の精度も勘案しなければならない。系統誤差が無視できるような測定方法をとるとして、偶然誤差については一つの測定対象を繰り返し測定する場合と同様、測定回数を上げることによって十分に小さくすることが出来る。詳細な議論は避けるが、ほとんどの場合、平均値に統計的な意味があるくらい十分に多くの対象について測定したならば、偶然誤差の影響も十分に小さくなるが、母集団が小さかった場合など誤差が無視できるだけの測定数と統計的に意味のある測定数が異なる場合もある。このような場合には測定誤差による影響を別に考慮する必要がある。
| |
− | | |
− | === 真の値 ===
| |
− | 上記のように測定値から誤差を無くすことは不可能である。したがってわれわれが知り得るのは常に誤差付の値でしかない。しかしながら測定すべき量には測定方法とは無関係なある定まった値があると考えるのが合理的である。この値のことを誤差理論において '''真の値'''または'''真値''' と呼んでいる。真値が未知であるとする立場では、真値の代わりに測定によって得られた'''最確値'''を真値と考える。最確値としては同じ測定を複数回だけしたときの平均値を用いることが多い。
| |
− | | |
− | なお、[[量子力学]]によるとそもそも[[物理量]]そのものが確定した値を持たず、ある[[確率分布]]に従った拡がりを持つ([[不確定性]])。このことと誤差とは厳密に区別して考える必要がある。<!--この量子力学的揺らぎそのものを測定対象とする場合もある。粒子の崩壊によって開放されるエネルギーの揺らぎから粒子の寿命を決定する測定等である。この場合測定誤差が量子力学的揺らぎよりも十分に小さくなければならない。-->
| |
− | | |
− | === 誤差の伝播 ===
| |
− | 一般に測定によって最終的に求めたい値が一つの測定の結果から得られるとは限らず、それぞれ固有の誤差を持つ複数の値から求めなければならない場合が多い。複数回の測定結果の平均を取る場合などもそのうちの一つである。
| |
− | | |
− | == 計算誤差の種類 ==
| |
− | === 丸め誤差 ===
| |
− | 数値に対して'''丸め'''(まるめ、{{lang-en-short|rounding}})を行う場合に、すなわちその数値のどこかの桁で切り上げ・切り捨てなど[[端数処理]]を行った場合に生じる誤差を'''丸め誤差'''(まるめごさ、{{lang-en-short|rounding error, round-off error}})という。
| |
− | | |
− | === 打ち切り誤差 ===
| |
− | 反復計算において、必要とされる回数より少ない回数で反復を止めること('''打ち切り''')によって生じる誤差。
| |
− | | |
− | [[無限級数]]をはじめの数項だけで計算することによる誤差が代表的である。例えば、''x'' の値(単位はラジアン)が0に近いとき、sin ''x'' の値は次の無限級数で与えられる。
| |
− | :<math>\sin x=x-\frac{x^3}{3!} +\frac{x^5}{5!} -\frac{x^7}{7!} +\cdots</math>
| |
− | それを次式で計算することによる誤差が打ち切り誤差である。
| |
− | :<math>\sin x=x-\frac{x^3}{3!} +\frac{x^5}{5!}</math>
| |
− | | |
− | === 情報落ち ===
| |
− | [[浮動小数点数]]の計算のように精度が限られている条件下で、[[絶対値]]の大きい数と絶対値の小さい数を加減算したとき、絶対値の小さい数が無視されてしまう現象<ref>[[#algo|奥村 (1991)]]、pp. 125–126。</ref>。次のような例がある。
| |
− | 有効桁数が11桁ある場合では
| |
− | :2.0000000000 × 10{{sup|10}} + 1.0000000000 =2.0000000001 × 10{{sup|10}}
| |
− | と期待する結果が得られるが、
| |
− | 有効桁数が10桁までしか無い場合は
| |
− | :2.000000000 × 10{{sup|10}} + 1.000000000 = 2.000000000 × 10{{sup|10}}
| |
− | となってしまう。
| |
− | | |
− | === 桁落ち ===
| |
− | 桁落ち(けたおち、{{lang-en-short|cancellation}})とは、値がほぼ等しく丸め誤差を持つ数値同士の減算を行った場合、[[有効数字]]が減少すること<ref>[[#algo|奥村 (1991)]]、p. 69。</ref>。絶対値がほぼ等しく符号が異なる数値どうしの加算の場合も同様。浮動小数点数では、上位の桁がゼロになると、[[指数表記#正規化|正規化]]によってそれを詰め、以下の桁に "0" を強制的に挿入するので、下位の桁が信頼できないものになる。特別な場合には、演算式を変形することによって、桁落ちを避けることができる。
| |
− | | |
− | ;例:
| |
− | 有効数字8桁で
| |
− | :<math>\sqrt{1001} -\sqrt{999}</math>
| |
− | を計算する。
| |
− | :<math>\sqrt{1001} =31.6385840\cdots \simeq 31.638584</math>
| |
− | :<math>\sqrt{999} =31.6069612\cdots \simeq 31.606961</math>
| |
− | (1) 式の通りに計算すると、
| |
− | :<math>\sqrt{1001} -\sqrt{999} \simeq 31.638584-31.606961=0.031623</math>
| |
− | 有効数字が5桁になってしまう。
| |
− | | |
− | 有効数字が8桁なので本来なら±0.00000005%程度の誤差であるはずが、±0.00005%程度、ざっと1,000倍の誤差を含むことになる。
| |
− | | |
− | (2) 式を変形して、ほぼ等しい数値同士の減算を回避すると、
| |
− | :<math>\sqrt{1001} -\sqrt{999}</math>
| |
− | :<math>=\frac{(\sqrt{1001} -\sqrt{999})(\sqrt{1001} +\sqrt{999})}{(\sqrt{1001} +\sqrt{999})}</math>
| |
− | :<math>=\frac{2}{(\sqrt{1001} +\sqrt{999})}</math>
| |
− | :<math>\simeq \frac{2}{31.638584+31.606961} =\frac{2}{63.245545}</math>
| |
− | :<math>\simeq 0.031622781</math>
| |
− | となり、有効数字8桁の結果が得られる。ただし、常にこのような回避が可能であるわけではない。
| |
− | | |
− | 本質は、元となるデータ 31.638584 と 31.606961 とが、すでに最下位桁に丸め誤差を含む近似値である点にある。(1) では、差の上位3桁がゼロになることによって、この丸め誤差が大きな相対誤差になってしまう。(もし、これらの元データが丸め誤差を含まない値であった場合は、結果も全く誤差を含まない点に注意を要する。)
| |
− | | |
− | 最大の問題はこの後、丸め誤差を含んだ桁が上位有効桁の喪失に伴う正規化によって上位桁に大きく移動することになるため、大きな誤差を含んだまま失われた有効桁数が'''見かけ上'''回復するところにある。これによって、後続する演算が全て「巨大な誤差」を「有効桁」として演算を続けることになり、最終的な演算結果は見かけどおりの有効桁数を持っていない状態になる。
| |
− | | |
− | 乗除算および加算(符号が異なる減算)に関しては有効桁数の減少(上位有効桁の喪失)を伴わないのでこの問題は発生しない。また正規化を行わない固定小数点形式でもこの問題は発生しない(そもそも固定小数点の場合は精度の考え方が異なるため)。(※丸め誤差が累積する問題は発生するが、それは桁落ち誤差ではない)
| |
− | | |
− | === 各数値形式に発生する誤差 ===
| |
− | {|class="wikitable"
| |
− | !数値形式
| |
− | !浮動小数点数
| |
− | !固定小数点数
| |
− | <!--!2進化10進固定小数点数-->
| |
− | !整数
| |
− | <!--!2進化10進整数-->
| |
− | |-
| |
− | |打ち切り誤差
| |
− | |○
| |
− | |○
| |
− | <!--|○-->
| |
− | |○
| |
− | <!--|○-->
| |
− | |-
| |
− | |桁あふれ
| |
− | |○
| |
− | |○
| |
− | <!--|○-->
| |
− | |○
| |
− | <!--|○-->
| |
− | |-
| |
− | |丸め誤差
| |
− | |○
| |
− | <!--|○-->
| |
− | |(○)
| |
− | <!--|○-->
| |
− | |(○)
| |
− | <!--|(○)-->
| |
− | |-
| |
− | |情報落ち
| |
− | |○
| |
− | <!--|○-->
| |
− | |
| |
− | <!--|○-->
| |
− | |
| |
− | <!--| -->
| |
− | |-
| |
− | |桁落ち
| |
− | |○
| |
− | |
| |
− | <!--| -->
| |
− | |
| |
− | <!--| -->
| |
− | |}<!--
| |
− | <table border=1 cellspacing=1 cellpadding=3>
| |
− | <tr bgcolor="gainsboro"><td bgcolor="gainsboro"> </td><td>2進浮動小数点数</td><td>2進固定小数点数</td><td>2進化10進数</td></tr>
| |
− | <tr bgcolor="#FFFFFF"><td bgcolor="gainsboro">打ち切り誤差</td><td>○</td><td>○</td><td>○</td></tr>
| |
− | <tr bgcolor="#FFFFFF"><td bgcolor="gainsboro">丸め誤差</td><td>○</td><td>○</td><td>○</td></tr>
| |
− | <tr bgcolor="#FFFFFF"><td bgcolor="gainsboro">情報落ち</td><td>○</td><td> </td><td> </td></tr>
| |
− | <tr bgcolor="#FFFFFF"><td bgcolor="gainsboro">桁落ち</td><td>○</td><td>○</td><td>○</td></tr>
| |
− | <tr bgcolor="#FFFFFF"><td bgcolor="gainsboro">桁あふれ</td><td>○</td><td>○</td><td>○</td></tr>
| |
− | </table>
| |
− | -->
| |
− | ○印は誤差が発生しうることを示す
| |
− | | |
− | == 脚注 ==
| |
− | {{脚注ヘルプ}}
| |
− | {{Reflist}}
| |
− | | |
− | == 参考文献 ==
| |
− | *{{cite book|和書
| |
− | |title = C言語による最新アルゴリズム事典
| |
− | |publisher = [[技術評論社]]
| |
− | |author = 奥村晴彦
| |
− | |authorlink = 奥村晴彦
| |
− | |year = 1991
| |
− | |isbn = 4-87408-414-1
| |
− | |ref = algo
| |
− | }}
| |
− | | |
− | {{参照方法|date=2014年8月|section=1}}
| |
− | | |
− | *{{cite book|和書
| |
− | |author = [[:en:John R. Taylor|John R. Taylor]]
| |
− | |editor = 林茂雄, 馬場凉(訳)
| |
− | |title = 計測における誤差解析入門
| |
− | |publisher = [[東京化学同人]]
| |
− | |isbn = 480790521X
| |
− | |year = 2000
| |
− | |ref = テイラー
| |
− | }}
| |
− | *{{cite book|和書
| |
− | |title = 誤差論
| |
− | |author = [[カール・フリードリヒ・ガウス|カール・F・ガウス]]
| |
− | |editor = 飛田武幸、石川耕春(訳)
| |
− | |publisher = [[紀伊国屋書店]]
| |
− | |year = 1981
| |
− | }}
| |
− | *{{cite book|和書
| |
− | |title = 最小二乗法の歴史
| |
− | |author = 安藤洋美
| |
− | |publisher = [[現代数学社]]
| |
− | |year = 1995
| |
− | }}
| |
− | <!-- {{Cite book}} --> <!-- {{Cite journal}} -->
| |
− | | |
− | == 関連項目 ==
| |
− | <!-- {{Commonscat|Error}} -->
| |
− | *[[不確かさ (測定)]]
| |
− | *[[最小二乗法]]
| |
− | *[[標準誤差]]
| |
− | *[[浮動小数点数]]
| |
− | *[[標準数#JIS C 5063の標準数列]]
| |
− | *[[正確度と精度]]
| |
− | *[[計算機イプシロン]]
| |
− | *[[数値解析#誤差の発生と伝播]]
| |
| | | |
| {{DEFAULTSORT:こさ}} | | {{DEFAULTSORT:こさ}} |