【最小2乗法】うさぎでもわかる実験の基礎 第2羽 最小2乗法

スポンサードリンク

[更新]

2020年09月01日 諸事情により内容修正
2022年05月25日 改行バグを修正・行列を用いた計算方法のリンクを追加

こんにちは、ももやまです!

実験で出てくる「最小二乗法」ってとっても難しいですよね!

そこで、今回は実験やデータの分析でよく使う「最小二乗法」についてうさぎでもわかるように説明します!

スポンサードリンク

1.最小2乗法を使う理由

大学になると「基礎物理実験」で、物理実験をすることがありますね。

私も大学1年生のときに、未知の抵抗を渡され、抵抗を求めなさいと言われました。

ということで、今回は抵抗を例に説明して

中学生のときに抵抗を求める関係式I=VRを習いましたね。

I は電流[A]、V は電圧[V]、R は抵抗[Ω]です。)

もしかしたらV=IRと(Vには愛があーる)とおぼえてる人もいるかもしれません。

では、この関係式V=IRI の関数 V=f(I) として考えてみましょう。

ちなみに I の関数というのは、I に何かしらの値を代入すると、それに対応した値が帰ってくる箱みたいなものです。

今回は抵抗 R を 2[Ω]としてみましょうか。すると、V=2Iという式が成り立ちますね。

例えば、I=0.5 とすると、V=1.0 となり、I=3.0 とすると V=6.0 となりますね*1

ただし、こんなに都合よくオームの法則は成り立ちません。

成り立つのはセンター試験、二次試験などのテストくらいです。

ということで、オームの法則(理論値)と実世界の値はどれくらい異なるのかをここからとある方法を使ってみていきましょう。

ここで、1年生のときに実験で得た値を過去のレポートから引っ張り出してきました。

随分前のレポートなのですが、未だにパソコンに残っているとは思いませんでしたよほんとに。

電圧V [V] 電流I [A]
0.000 -0.001
1.000 0.502
2.000 1.005
3.000 1.508
4.001 2.012
5.001 2.516
6.001 3.019

当然理論値ではありません。小数第2位やら3位やらに余計な値が残ってます。

つぎに、グラフ用紙の測定した箇所(対応する電圧と電流)に点を打ってみましょう。

f:id:momoyama1192:20200901220818g:plain

ここで、心を小中学生に戻してみましょう。

いくつか点があると…、

f:id:momoyama1192:20200901220822g:plain

こんな感じに定規でだいたいの点を通るような線を引きたくなりますよね。

線を引けば、だいたいの傾きがわかりますね。この傾きが R に相当します。

この「だいたいの点を通るけど、どうやって線を引けばどの点にも近くなるんだろう…」というのを数学的に求めるのが最小2乗法の仕組みです。

スポンサードリンク

2.最小2乗法の仕組み

ここから少し理論的なお話に入っていきます。眠くなりますね。

ある実験により得られたデータが x を独立変数、y を従属変数として x の関数 y(x) として関係式y=ax+bを満たしていると予想できているとします*2

このとき、x, yn 個の測定値の組をそれぞれ (xi,yi) (i=1,2,3,,n) とし、これらの方程式からつぎの方程式yi=axi+bにおける係数 a, nb の最確値を求めることを考えてみましょう。

この係数 a, b の最確値を複数の測定値から求めようとするのが最小二乗法です。

次の章では、さらに詳しく最小2乗法を導出する計算法を見ていきましょう。

スポンサードリンク

3.最小2乗法を用いた計算法

測定の組 (xi,yi) で生じた誤差(測定の不確かさ)を ri とすると、つぎの式(誤差方程式といいます)ri=yiaxibが成立します。

(ここでの y は実際に得た値、ax+b は計算によって得た値なので測定値と理論値の差が誤差 r となります。)

この誤差ができるだけ小さくなる(誤差が0に近づく) ab の値を求めればOKと言い換えられます。

実際は n 個すべてのデータに対して適用するので、i=1nriが0に近づくときの ab の値を求めればいいことになります。

しかし、上の式の場合、誤差 ri が負になることがありますね。

そのため、正の誤差と負の誤差が打ち消しあって、誤差がありまくりなのに0になる、というわけが分からないことがおこります。

そこで、誤差 ri を2乗したものを全部足していくことにしましょう。

(実は、分散を求めるときも偏差を2乗するのですが、まったく同じ理由で2乗を行っています。)

すると、式はi=1nri2となりますね。この式が0に最も近くなる a, b を求めるのが最小2乗法です。

(2乗したものが最も小さくなるものを求めるため、最小2乗法と呼ばれます。)

ここで直線を、a, b の2変数関数 S(a,b) と考えてみましょう。

(2変数関数というのは、2つの変数 a, b を入れると値が1つ決まる魔法の箱です。)

2変数関数 S(a,b) が最小値となる点は当然極小値になります。

極小値ということは、極値となりうる点(停留点)の中のどれかですね。

(停留点は解析学で習うと思います。「停留点ってなんだ?」と思った人のようなまだ習っていない人はこちらの記事で復習お願いします。)

www.momoyama-usagi.com

さて、では停留点を求めていきましょう。Sab の関数ですので Sa,bそれぞれについて「偏微分」しましょう。

実際に計算すると、S(a,b)=i=1nri2=i=1n(yiaxib)2=i=1n(yi2+a2xi2+b22axiyi2byi+2abxi)ですので、Sa=i=1na(yi2+a2xi2+b22axiyi2byi+2abxi)=i=1n(2axi22xiyi+2bxi)Sb=i=1nb(yi2+a2xi2+b22axiyi2byi+2abxi)=i=1n(2b2yi+2axi)となっていますから、このときSa=0,   Sb=0ですので、i=1n(2axi22xiyi+2bxi)= 2i=1n(axi2xiyi+bxi)= 2(ai=1nxi2i=1nxiyi+bi=1nxi)=0i=1n(2b2yi+2axi)= 2i=1n(byi+axi)= 2(bi=1n1i=1nyi+ai=1nxi)=0となり、ai=1nxi2i=1nxiyi+bi=1nxi=0bni=1nyi+ai=1nxi=0という2つの関係式が出てきました。*3

シグマが多くてごちゃごちゃするので、シグマを別の記号 [  ] をつかってi=1nxiyi=[xy]のように書いて式を整理しましょう。

先ほどの2つの関係式はa[x2][xy]+b[x]=0,    a[x][y]+nb=0という見た目だけは簡単な式になりますね。

この2式はただの連立1次方程式なので、これを解くことで a, b の値を求めることができます!

実際に解いてみると、a=n[xy][x][y]n[x2][x]2,    b=[x2][y][x][xy]n[x2][x]2と求めることができます。

これが、実験の教科書によく出てくる最小2乗法の計算式です。

最小2乗法における回帰直線 y = ax + b の計算法2つの測定の組 (xi,yi) で生じた誤差(測定の不確かさ)を ri とし、誤差方程式ri=yiaxibr の2乗の総和i=1nr2が最小になるような a, b を、a=n[xy][x][y]n[x2][x]2=ni=1nxiyii=1nxii=1nyini=1nxi2(i=1nxi)2b=[x2][y][x][xy]n[x2][x]2=i=1nxi2i=1nyii=1n(xiyi)i=1nxini=1nxi2(i=1nxi)2と取ることで回帰直線 y=ax+b を求めることができる。
しかし、a, b を求める数式が少し複雑ですよね。
そこでこの記事の第7章に a, b の数式を簡単化したバージョンの公式も書いてあるので気になる人は第6章に飛んでみましょう。

4.具体例(電流と電圧)

電流と電圧の話に戻りましょう。

オームの法則の式はV=IRでしたね。

しかし、実世界では「初期の起電力」というものが出てきます。

この起電力を V0 とでもすると、V=IR+V0と書けます。

すると、この式は最小2乗法の式 y=ax+b と似ていますね。

この式の a の部分を Rb の部分を V0 にすると、最小2乗法が適用できますね。

y の部分は Vx の部分は R となります。)

実際に、最初に出した実験データから最小2乗法を使って抵抗 R と起電力 V0 を求めましょう。

電流 I [A] 電圧 V [V]
-0.001 0.000
0.502 1.000
1.005 2.000
1.508 3.000
2.012 4.001
2.516 5.001
3.019 6.001

ここで、最小2乗法の式の x が電流 Iy が電圧 V に対応付けができるので、具体的にR=n[IV][I][V]n[I2][I]2,    V0=[I2][V][I][IV]n[I2][I]2となりますね。

計算の注意点としては、

  • [I]2[I] を2乗したもの、[I2] は各電流の値を2乗したものの総和と、互いに異なっているものを求めていること
  • [IV] は、[I]×[V] ではなく、各データの電流値と電圧値をかけたものの総和であること

の2点に注意が必要です。

計算はめんどくさいと思うので手でせず、Excelやら電卓でやることをおすすめします。

ただし、Excelで行う場合は有効数字の処理に気を付けましょう。(round関数などできちんと有効数字の処理しましょう。)

有効数字がいまいちよくわかってない人はこちらの記事で確認しましょう!

www.momoyama-usagi.com

実際に求めると、[I]=i=1nxi=10.562[V]=i=1nyi=21.003[IV]=i=1nxiyi=45.786[I2]=i=1nxi2=23.029[I]2=(10.562)2=111.556

あとは、実際に求めた値を代入し、 RV0 を求めると、

R=1.987,   V0=0.001774と求まり、直線の傾き R および切片 V0 を求めることができます。

f:id:momoyama1192:20200901230834g:plain

これが、最小2乗法の使い方の例です。

実は実験の後、教授から「この抵抗、本当は2[Ω]なんだよ~」と教えてくれました。

このように、実際の値かどうかはわからないが、表向きに言われている値のことを公称値とよびます*4

2[Ω]だといわれている抵抗に対して、1.987[Ω] (相対誤差約1%) の結果が出せたのはなかなかな精度だと思います。

当時1年生だった私すごい!(すいませんでした。)

5.最小2乗法の応用

少し応用例も紹介してみましょう。

最小2乗法は、線形なもの(直線なもの)適用できないと思われがちですが、実は何個か式を挟むことで、線形以外なものにも適用することができます。

例えば、y=ax+bというような反比例の式があるとします。

この式を、X=1x,    Y=yとおくことで、Y=aX+bという1次式に変形できますね。この形は、まさに最小2乗法ですね。

もう1つ比熱の式で例を出しましょう。比熱の式は、C=γT+AT3なのですが、この式の両辺を T で割ると、CT=γ+AT2となりますね(ただし T0 を仮定することに注意)。

さらに、X=T2,    Y=CTとおくことでY=AX+γという最小2乗法の形になりますね。

そのため、 A, γ の値を求める際にも最小2乗法を使うことができます。

6.最小2乗法の式の簡単化

先ほど紹介した最小2乗法の式a=n[xy][x][y]n[x2][x]2=ni=1nxiyii=1nxii=1nyini=1nxi2(i=1nxi)2b=[x2][y][x][xy]n[x2][x]2=i=1nxi2i=1nyii=1n(xiyi)i=1nxini=1nxi2(i=1nxi)2の形はかなり複雑ですよね。

手計算をするのは言うまでもなく嫌だし、Excelなどで計算させるのもかなり式入力がめんどくさいですよね。

なので、この式を簡単化しましょう。

(1) 共分散

式を簡単化する前に、簡単化に使う共分散について説明しましょう。

共分散 sxy は、ある i 番目(i=1,2,3,,n)データ xi における平均 x のずれ(x の残差)と別のデータ yi における平均 y からのずれ(y の残差)の積の平均を表します。式で書くと、1ni=1n(xix)(yiy)と表せます。

この式を変形すると、1ni=1n(xiyixiyyix+xy)=xiyiy1ni=1nxix1ni=1nyi+1nnxy=xiyiyxxy+xy=xiyixyとなり、2つの積の平均 - それぞれの平均の積からも共分散を出せることがわかりましたね。

(2) 式の変形

では、実際に共分散を使って式を変形してみましょう。式変形がめんどくさいので基本的には結果だけわかればOKです。

x, y はそれぞれ x の平均、y の平均、σx2x の分散σx2=1ni=1nxi2(1ni=1nxi)2を表しています。

a=ni=1n(xiyi)i=1nxii=1nyini=1nxi2(i=1nxi)2=1n2(ni=1nxiyii=1nxii=1nyi)1n2(ni=1nxi2(i=1nxi)2)=1ni=1n(xiyi)1ni=1nxi1ni=1nyi1ni=1nxi2(1ni=1nxi)2=xyxyσx2=sxyσx2となり、ax, y の共分散 sxy および x の分散 σx2 を用いてa=sxyσx2で求めることができますね!

a は「 x, y の共分散 ÷ x の分散 」で計算できる!)

同様に bb=i=1nxi2i=1nyii=1n(xiyi)i=1nxini=1nxi2(i=1nxi)2=1n2(i=1nxi2i=1nyii=1n(xiyi)i=1nxi)1n2(ni=1nxi2(i=1nxi)2)=1n2i=1nxi2i=1nyi1n2i=1n(xiyi)i=1nxi1ni=1nxi2(1ni=1nxi)2=1n2i=1nxi2i=1nyi1n2i=1n(xiyi)i=1nxiσx2となる。

ここから先は分子のみの変形を考える。1n2i=1nxi2i=1nyi1n2i=1n(xiyi)i=1nxi=1n2i=1nxi2i=1nyi1n2i=1n(xiyi)i=1nxi+(x)2y(x)2y=1n2i=1nxi2i=1nyi1ni=1n(xiyi)i=1nxi+1ni=1nxixy1n3i=1nxii=1nxii=1nyi=1n2i=1nxi2i=1nyi1n3i=1nxii=1nxii=1nyi1ni=1n(xiyi)1ni=1nxi+1ni=1nxixy=1ni=1nyi(i=1nxi2(i=1nxi)2)1ni=1nxi(1ni=1n(xiyi)xy)=yσx2x(xyxy)=yσx2xsxyとなる。

よって、1n2i=1nxi2i=1nyi1n2i=1n(xiyi)i=1nxiσx2=yσx2xsxyσx2=yxsxyσx2=yax (a=sxyσx2)となる。

※変形はこちらのページを参考にさせていただきました!

参考文献:「Black学科へようこそ! 自然科学のための数学 最小2乗法」
(2019年9月29日アクセス)

よって、下のような結果が得られます。(結果が理解できれていれば十分です)

2つの測定の組 (xi,yi) で生じた誤差(測定の不確かさ)を ri とし、誤差方程式ri=yiaxibr の2乗の総和i=1nr2が最小になるような a, b を、a=sxyσx2b=yaxと取ることで回帰直線 y=ax+b を求めることができる。

x, y はそれぞれ x, y の平均、σx2x の分散、sxyx, y の共分散を表します。

(こちらの方が簡単に求められますね!)

最小2乗法における回帰直線 y = ax + b の簡単な求め方

実際に第3章で計算したデータと同じ電圧と電流で正しい値がでるかを調べてみましょう。

(電流 Ix、電圧 Vy、抵抗 Ra、起電力 V0b に相当)

電流 I [mA] 電圧 V [V]
0.000 0.000
0.502 1.000
1.005 2.000
1.508 3.000
2.012 4.001
2.516 5.001
3.019 6.001

すると、sxy=2.013,   σx2=1.013なので、a=R=sxyσx2=1.987となります[有効数字4桁]。

同様に b も求めます。x の平均 xy の平均 y はそれぞれ、x=1.509,   y=3.000なので、b=V0=yax=3.0001.509×1.987=0.001774となります。

先ほどの計算式より比較的ラクに計算できましたね!

(ちなみにExcelでは共分散は covar 関数、分散は var.p 関数を使ってラクラク計算することができます!)

おまけ

最小2乗法は、線形代数(行列やベクトル)の力を使うことで、行列を使って計算することもできます。

もし行列を使った最小2乗法の計算に興味がある方は、こちらの記事をご覧ください。

7.Excelで最小2乗法を自動計算させる方法

実は、回帰直線 y=ax+b はExcel上で簡単に計算をさせることができます。

今回はExcelで回帰直線の値を求める方法についてわかりやすくまとめました!

皆さん、Excelの準備はいいですか!?

Step1:データを入力

まずは、データを入力してください。今回は上の例で挙げた電流と電圧から抵抗 R と起電力 V0 を求めます。

なお、電流の値は [mA] など単位がずれていた場合 A に直してから入力してください。

データの入力が終わったら挿入ボタンをクリックしてください。

f:id:momoyama1192:20190928204747j:plain

Step2:散布図を表示させる

つぎに入力したデータをすべて選択し、上側にある「おすすめグラフ」をクリックします。

f:id:momoyama1192:20190928204751j:plain

すると、グラフの種類が出てきます。

その中から「散布図」を選び、OKをクリックします!

(おそらく一番上に「散布図」が出てきます)

f:id:momoyama1192:20190928204658j:plain

すると、グラフが出てきます。

Step3:y = ax + b の a,b の値を表示させる

つぎに、出てきたグラフの線を右クリックしてください。

f:id:momoyama1192:20190928204707j:plain

すると、色々出てくるので「近似直線の追加」を選んでください。

f:id:momoyama1192:20190928204711j:plain

すると、右側に「近似直線の書式設定」ウィンドウが出てくるので、線形近似であることを確認してから「グラフに数式を表示する」をクリックしてください。

f:id:momoyama1192:20190928204715j:plain

すると、下のように y=ax+ba,b の値が表示されます。

f:id:momoyama1192:20190928204719j:plain

今回の場合は y=19.961x+0.0005 なので a=R=19.961, b=V0=0.0005 となることがわかります。

しかし、b の部分の有効数字が1桁しか表示されていませんね。

なので a, b の桁数をもっと多く表示させる設定をしてみましょう。

(表示させる必要がないときはここで終了です。)

Step4:表示桁数を変える

y=ax+b の値(今回は y=19.961x+0.0005)が表示されている部分をクリックしてください。

f:id:momoyama1192:20190928204723j:plain

すると、このようなウィンドウが右側に表示されています。

そこからカテゴリを「数値」もしくは「指数」を選んでください。
(指数を選ぶと a×10n の形で表示されます。)

f:id:momoyama1192:20190928204727j:plain

※万が一この表示になっていない場合、この画像にある棒グラフのアイコンをクリックすると出てくるはずです。

(1) 数字を選んだ場合

表示させる小数点以下の桁数を入力してください。

f:id:momoyama1192:20190928204731j:plain

桁数を入力してから、適当な箇所をクリックすると自動的に設定が反映されます。

f:id:momoyama1192:20190928204735j:plain

ちゃんと小数第8位まで表示されましたね。

(2) 指数を選んだ場合

指数を選んだ場合、a×10n の形で表示されます。

a の部分に表示させたい桁数を入力してください。

f:id:momoyama1192:20190928204739j:plain

桁数を入力してから、適当な箇所をクリックすると自動的に設定が反映されます。

f:id:momoyama1192:20190928204743j:plain

ちゃんと a×10n の形(a は小数第4位まで)で表示されましたね。

※ Eは10の何乗かを表しています。例えば E-04 であれば 104、E+01であれば 101 を表しています。

8.さいごに

今回は最小2乗法についてうさぎでもわかるように、仕組みをわかりやすく説明しました。

次回の第3章では、普通のグラフではなく、

  • 片対数、両対数グラフによるプロット
  • 片対数、両対数グラフを用いた最小2乗法

について説明しています。

*1:有効数字2桁を意識するため、わざと V=1.0 と .0 を残しています。

*2:y(x)x のように、自身の値が変化する以外に値の変わりようがない変数を独立変数y のように、独立変数である x の値が変化することで自身の値が変化するような変数を従属変数といいます。

*3:シグマと微分演算子は有限の和であればいつでも順番を変えることができます。つまり、 nが有限の値であればddxi=1nS(x)=i=1nddxS(x)は常に成立します。

*4:例えばですが、ジュースとかで「内容量 500mL」とか書かれていますね。この 500mLというのは、表向きに(パッケージなどで)言われている値で、実際に 500mL入っているかはわかりませんね。測ったら499mLかもしれませんし501mLくらいあるかもしれません。

関連広告・スポンサードリンク

おすすめの記事