⇒[[特別ゼミBトップへ戻る>山内の授業のページ/08秋/特別ゼミB]]~
アクセス数 &counter();  このページの最終更新 &lastmod();
----------
《編集中》

&ref(Semi08B_7.pdf);

**誤差・雑音とデータの信頼性 [#ffa8bdab]

今回の目標:~
‖定結果に避けられない誤差・雑音等について理解する。~
▲如璽燭凌頼性を評価する手段を考える。

***誤差について [#f2f3abad]
	
情報科学科では、測定を伴う実験をほとんど行わないので、このあたりの感覚が身についていない気がしている。一回は眺めておきたい。~
まず、実験・測定は、(現象の)「モデル」を設定して、そのモデルを検証するために行うのが普通 (無意味に、むやみに測定するのではない) であることを、まず始めに指摘しておこう。 その上で、次のようなことを見ておく。
&ref(Semi08B_7.pdf);

1)	さまざまな誤差原因~
・ 誤差は、測定値と正しい値のずれ。いろいろな原因で起こる。~
・ たとえば、メーターの読み取りの誤差 (メーターなどアナログな値を読むときに特に発生、せいぜい3桁ぐらい)~
・ たとえば、冷たい温度計を突っ込んだために、その分だけ温度が下がる

2)	ばらつく誤差、かたよる誤差~
・ 誤差の起こる原因には、確率的な現象と、固定的な現象がある。~
  メーターの読取り誤差の例 〜 多く読んだり少なく読んだりすることがランダムに起こるだろう(ランダムか?)~
  冷たい温度計の例 〜 もし温度計と対象物の温度の差が一定ならば、常に一定の幅で温度が下がるだろう~
・ 固定的な現象なら、気がつけば値は予測可能で、後から取り除ける可能性もある。 ばらつく誤差は、何回か測定して、その平均を取るなどの統計的な処理を行う必要がある。

(問題) あるプログラムXのコンピュータの処理時間を測定したい。コンピュータの中に時計があるので、プログラムの開始時点と終了時点で時計を読んで、その差をとることにした。どのような誤差が考えられるだろうか?
 public class Timer{
   public static void main(String[] args){
    for (int loop=1; loop<=10; loop++) {
    for (int count=1; count<=5; count++) {
     long start, stop, diff;
     start = System.currentTimeMillis();    /* Start Timer */
     /* Program Body */
     for (int i=0; i<(10*loop); i++) {
       for (int j=0; j<1000000; j++) {
         double s;
         s = java.lang.Math.sin(1.3);
       }
     }
     stop = System.currentTimeMillis();    /* Stop Timer */
     diff = stop - start;
     System.out.println("Execution Time "+diff+" mS");
     }
    }
   }
 }

***実験の計画と、データの解析 [#q1c4f6f1]
1)	モデル

測定を伴う実験をする場合、対象となるシステムのモデルを考えておくことがよい。たとえば上記の例では、プログラムの実行所要時間が単純にループの回数に比例するかどうかを試そうとしているので、仮説のモデルとしては、実行所要時間をT、ループ回数をCとすると、 T = αC となる。その上で、結果がこのモデルに当てはまるかどうか、つまりαが存在するかどうか、値としていくつになるか、などを確認することになる。実際に試したデータを示そう。

|loop回数|1回目|2回目	|3回目	|4回目	|5回目	|平均	|標準偏差|
|1	| 1063	| 1062	| 1063	| 1046	| 1079	| 1062.6 	|11.67|
|2	| 2171	| 2141	| 2406	| 2282	| 2156	| 2231.2 	|112.42|
|3	| 3188	| 3359	| 3344	| 3172	| 3172	| 3247.0 	|95.77 |
|4	| 4359	| 4360	| 4234	| 4234	| 4250	| 4287.4 	|66.14 |
|5	| 5594	| 5297	| 5421	| 5422	| 5375	| 5421.8 	|108.88 |
|6	| 6407	| 6375	| 6359	| 6375	| 6422	| 6387.6 	|25.96 |
|7	| 7422	| 7390	| 7750	| 7407	| 7406	| 7475.0 	|154.15 |
|8	| 8484	| 8703	| 8860	| 8672	| 8734	| 8690.6 	|135.80 |
|9	| 9687	| 9875	| 9610	| 9687	| 9813	| 9734.4 	|107.14 |
|10	|10844	|10703	|10718	|10735	|10828	|10765.6 	|65.50 |

前に示したプログラムの実験結果である。

5回繰り返して測定しているが、結構値がばらついているのが分かる。まずはこの5回の平均値を取って、右端の列に書いておいた。

次にこの値が、ループ回数に比例するかどうかを確認しよう。いろいろな確認方法があるが、簡単にはグラフを描いて、直線になるかを確認しよう。右側下のグラフでは、ほぼ直線になっていることが分かるので、まあ比例関係が成り立っているといえるだろう。正確には次の節で議論するような確認が必要になる。

なお、よく見ると、loop=8の時に少し時間が余計にかかっているし、1oop=2の時にも少し余計にかかっている。こういう少しだけのずれが、新しい発見につながることも多いので、見過ごすことなく原因をよく考えるとよい。ただし、この実験の場合はさしあたって積極的な原因は思いつかない。

(グラフによる視覚化)
#ref(loopexecution.jpg,right,around);
ここで見たように、実験結果の数値をグラフによって視覚化すると、全体的な傾向や異常値が分かりやすい。特にこの実験の場合は、モデルとして「時間がループ回数に比例する」と考えられるので、もしモデルが正しければグラフは(原点を通る)直線になるはずと考えられる。直線になるかどうかは視覚上も分かりやすいし、異常値も判別しやすいだろう。

視覚化(visualization)そのものの技術を研究すること(どうやったらより分かりやすいか、直感的なのはどれか、新しい見せ方はないのか、対話的に操作するために高速に視覚化するにはどうするか、など多数の側面がある)も行われている。

2)データの統計的な解析

実験で得られた、誤差を含むようなデータは、統計的な解析によってそのデータの信頼性を評価することが求められる。現在の情報科学科のカリキュラムではアナログな数値を扱う実験がほとんど無いので、統計については数理統計関連の講義で理論を学ぶことが中心であるが、他の科学、特にメディア生命科学コースが扱う医療や生命・生物系分野での実験では、実験・データの信頼性を確認するために頻繁に使われている。

理論の詳細は数理統計関係の講義に任せることにして(基礎から積み上げるためには半年×1コマは最低必要だろうから)、ここでは「こんなことをする・できる」という例を示して、感覚的に理解してもらうことにする。

[基本的な情報: それぞれのloop回数での平均値とばらつき]

実験ではloop回数Nを10通りに変え、それぞれのloop回数について同じ実験を5回ずつ繰り返して測定しているので、まずは、それぞれのloop回数で、飛びぬけて異常な値が無いかを確認する。それぞれの測定点をグラフ上に描くと、右図のドットプロットが描けるが、loop回数ごとに見ると値がそれほど飛びぬけているものは無い。

次に、それぞれのloop回数について、5回の実験の値のばらつきを数値で見るために標準偏差を求めて、平均値(丸)と標準偏差(上下に伸びた線)を描くことができる。(更に別の描き方として、箱で描くこともあるが、これは中央値(≠平均値)と四分位を箱で描く)

[区間推定と仮説検定]

実験は一般に、仮説が成り立つことを証明するために行う。つまり、実験の結果から、仮説が成り立つかどうかを判断したい。

問題は、モデル(ここでは時間がloop回数に比例する)どおりに常に正しい値が実験で得られるのではなく、ランダムにぶれる要因(たとえば測定誤差)があって測定値がずれる。それを見るためにこの実験では5回ずつ試行を行ったが、5回の平均値をモデルの推定値とみなすことが、妥当なのだろうか? (どの程度妥当なのだろうか?)

仮に、誤差はランダムに起こるとしても、5回とも偶然に、正しい値よりマイナスの方向にぶれることは無いのだろうか?

「誤差がランダムに起こる」とすれは、無限回数試行すれば平均値が正しい値になるはずなのだが(本当か??)、現実に実験できるのは有限回、しかも少ない回数だろう。 では、何回試行すれば、平均値がまあまあ正しい値になるのか?そもそも「まあまあ正しい」とは、どういうことか?

この問題は、統計学の「仮説検定」と呼ばれる分野で扱われ、データ解析IIの授業に含まれる。データを扱う人は、現場でも役に立つので、きちんと理論を学んでおくことを薦める。

時間があれば、2つの考え方を紹介する。 (参考書: 「統計学入門」 東京大学教養学部統計学教室編、東京大学出版会、 「生物学を学ぶ人のための統計の話」 粕谷英一、文一総合出版)

まず、測定データについて、それはもともとたくさん(無限に)ある測定値の中から5つだけを取り出したものと考える。ここの場合[正しい値]は1つだが、測定のたびにランダムにぶれるので、無限回測定すれば無限個の「ぶれた」測定値が得られる。この無限個のデータを「母集団」と呼ぶことにする。ぶれ方がランダム(法則性が無い)とすると、母集団はある特定の分布(正規分布)をするとみなせる。

ここで解きたいことは、母集団について全体の平均を調べることができないので、少数のサンプルから、母集団全体の平均値を推定したい。その推定結果がどの程度正しい(信頼できる)のか、という問題である。

2つのことができる。~
  禧茣嵜篦蝓筺覆燭箸┐弌望綉のような5回の測定データ(=サンプル)が得られたとき、母集団(無限個)の平均値μが、区間[L,U](信頼区間)に入っている確率が(1-α) (信頼係数)となるような、L,Uを求める。~  
◆ 祺樟盡…蝓筺覆燭箸┐弌望綉のような5回の測定データ(=サンプル)が得られたとき、「母集団の平均値μが値Mである」という仮説が確率sで《成り立たないということは無い》 (=「有意水準sで、この仮説が棄却できない」)と言える。 

区間推定について、非常に簡単な例を用いて考え方を紹介する。上記の実験データの場合はもう少し踏み込んだ議論が必要だが、ここでは長くなるので、データ解析の授業で学んで欲しい。

<考え方を理解するための簡単な例> 

日本人の成人男子の身長がどのぐらいか(仮にここでは「中央値」で考える。中央値とは全員の中でこの値より低い人が1/2、高い人が1/2となる高さ)を知りたいが、全員を測定するのは大変なので、サンプルを選んで測定してみる。
 
もしサンプルがA氏、B氏の2人だったらどうなるか?A氏が中央値より高い確率と低い確率は半々であるし、B氏も同様。またA氏とB氏はランダムに選ぶとすると、それぞれが中央値より高いか低いかは独立。だから、。噌癲Γ孫癲↓■噌癲Γ堕磧↓A低・B高、ぃ祖磧Γ堕磧△裡瓦弔両豺腓蓮△垢戮栃薪に0.25の確率で起こる。

もしサンプルを3人(A、B、C氏)取ると、組合せは。噌癲Γ孫癲Γ湛癲◆憤焚治腺贈辰鮠蔑)高・高・低、9癲δ磧高、…と8通りになって、いずれも確率0.125(=1/8)で起こる。これをA・B・Cの区別にこだわらないと、。蛙佑箸盥發両豺腓1つ、■何佑高で1人が低の場合が3つ、1人が高で2人が低の場合が3つ、ぃ蛙佑箸眥磴両豺腓1つ、となる。

もし我々が「中央値は3人のサンプルのうち一番大きい人と一番小さい人の高さの間にある」という主張(これが「仮説」になる)をすると、この主張が成り立つのは△鉢の場合で、,両豺隋複蛙佑箸盥發覆里如中央値は一番小さい人より更に小さい)とい両豺隋複蛙佑箸眥磴覆里如中央値は一番大きい人より更に大きい)となる。だから、主張「中央値は3人のうちの一番大きい人と一番小さい人の間にある」が成り立つ確率は、6×0.125=0.75と言えるだろう。

つまり、我々の仮説が正しい確率は0.75である、といえる。別の言い方をすると、(日本人の成人男子の身長の)中央値(これは測定できないので、推定したい)は、区間[最小のサンプル,最大のサンプル]の間に0.75の確率で存在すると推定できる、ということになる。

サンプルの数を増やすと、直感でも分かるとおり、推定の確率が上がる。サンプルを4人にすると全部の組合せは24=16通りだが、。歓佑箸盥發1つ、■蛙佑高・1人が低が4つ、2人が高・2人が低が6つ、ぃ運佑高、3人が低が4つ、ィ歓佑箸眥磴1つ、になるので、「中央値は区間[最小のサンプル,最大のサンプル]の間にある確率は,鉢イ鮟いた14通りになり、14/16=0.875となる。

同様に、サンプルを5人にすると、全部の組合せは2の5乗=32、そのうち中央値が両端より外側にある場合は、サンプル全員が高の場合(1通り)と全員が低の場合(1通り)なので、区間内にある確率は30/32=0.9375となる。

上記は母集団が有限の区間推定で、我々が見ていた無限の(正規分布する)母集団ではないので、計算はもう少しややこしくなる。結果だけ記すと、サンプル数n、サンプルの平均X(本当は上にバー)、サンプルの(不偏)分散をs2とすると、~
母集団の平均μの、信頼係数(区間内にある確率) 1−α の(信頼)区間は~
  X±tα/2(n−1)・s/(n)1/2~
の範囲になる。 但し tα/2(n−1) は、自由度n−1の「t分布」の、(α/2)・100%のパーセント点の値で、表として提供されている。  <区間推定>

仮説検定は、仮説H0 (ここでは、「(無限)母集団の平均値μがある(予想している)値Mである」という仮説)が、有意水準(=どの程度ずれたものを許すか)sで成り立つか否かを論じる。

<考え方を理解するための簡単な例>

コインを20回投げたときに、14回表が出たら、「コインには歪みがない(表と裏の出る確率は1/2)」という仮説H0を信じられるか(支持できるか)。

もしこの仮説H0が正しいなら、組合せの計算から、20回中で14回も表の出る確率は0.0577であるので、出るはずのない、かなりはずれた(ずれが「有意な」)値である。
従って仮説H0は「誤っている」(=コインは歪んでいる)と判断せざるを得ない。これをH0は棄却(reject)されると言う。

このとき、確率0.0577を見て「稀だ」と思ったので、コインが歪んでいると判断したが、「稀」と判断しなければ(=この位は起こりえると判断すれば)、仮説は成り立つとも言える。 つまり、どの確率を持って判断するか、その確率(有意水準と呼ぶ)を決めた上で初めて、仮説を信じるかどうかを決めることができる。 有意水準=0.1とすれば、上記の0.0577は「稀」であり「起こりえないはずのことが起こっている」となるが、もし有意水準=0.01とすれば、「十分に起こりえる」「あっておかしくない」となる。

区間推定と同様、母集団が(無限)正規分布である場合の、平均値に関する検定(両側検定)を、結果だけ紹介する。

仮説H0を「母集団の平均μが値μ0である」とし、有意水準αに対して検定する。サンプル数n、サンプルの平均X(本当は上にバー)、サンプルの(不偏)分散をs2とし、~
   t=(X−μ)/(s/n1/2)~
とすると、~
  |t|>t&size(8){α/2};(n−1) では仮説H0を棄却し、~
  |t|≦tα/2(n−1) では仮説H0を棄却しない。   <母平均に関する(スチューデントの) t検定>~
但し tα/2(n−1) は、自由度n−1の「t分布」の、(α/2)・100%のパーセント点の値で、表として提供されている。

検定の対象となる性質・母集団の性質などいろいろな場合について手法が開発されているので、合ったものを選択して検定する。

先に示した、loopの実験例について、Loop回数=8の時のデータの平均値の分析をイメージしてみよう。

|loop回数 |1回目 |2回目 |3回目 |4回目 |5回目 |平均 |標準偏差|
|8	|8484	|8703	|8860	|8672	|8734	|8690.6 	|135.80|

  禧茣嵜篦蝓筺 別妓臓吠貊乎弔諒振僞未痢⊃頼係数95% (α=0.05)の区間を求めてみる。

n=5(サンプル数)、 X=8690.6(サンプルの平均)、 s=135.80(サンプルの標準偏差)から、区間の両端は~
   X±tα/2(n−1)・s/(n)1/2 = 8690.6 ±t0.025(4)・135.80/(51/2)~
t0.025(4) = 2.776 (t分布の表から)であるので、 上式は 8690.6 ± 2.776・135.80/(51/2)  =  [8522.0, 8859.2]~
となる。つまり、この5回の実験では、母集団の平均値が95%の信頼係数でこの区間にあるといえるのは[8522.0〜8859.2]である。 もっと狭くしたければ、実験回数を増やす(20回ならt0.025(19)=2.093かつ分母の(51/2)⇒(201/2)になる)か、信頼係数を下げる(90%なら t0.05(4)=2.132、分母のn1/2は変わらない)か、である。

◆ 祺樟盡…蝓筺_樟癸硲阿髻屐別妓臓吠貊乎弔諒振僞未8604.7(グラフの直線上のloop回数=8の時の値)である」とし、有意水準α=0.05 (5%)に対して検定してみる。

n=5(サンプル数)、 X=8690.6(サンプルの平均)、 s=135.80(サンプルの標準偏差)、μ=8604.7から、~
t=(8690.6−8604.7)/(135.80/(5↑(1/2);)) = 85.9/60.73 = 1.414~
t0.025(4) = 2.776 (t分布の表から)であるので、仮説H0は棄却できない、ということになる。








***まとめ [#p5ea729a]
今日の授業で何が分かったかを整理し、大切と思う順序に並べてみよ


------
⇒[[特別ゼミBトップへ戻る>山内の授業のページ/08秋/特別ゼミB]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS