最小二乗法 近似式を求める

 実験データを持っていて、折線グラフを作ったときに、できれば近似式を作ってみたいものです。 グラフから見て、3次式になりそうです。 最小二乗法で、3次元近似の例をやってみましょう。
 (このページは、カルキングのサンプル集(統計\回帰分析2.clk)から計算式を借用しています。実際に作業をする場合には、手持ちのサンプルファイルから欲しい式を探して、そのコピーを使うのが賢明です)

 実験データから近似式を求めるには、行列で「正規方程式」を作り、それを解いて近似式の係数を求めます。 これだけで、数学が良く分らないと、パニックになります。 正規方程式を解くといっても、「逆行列」を使って組み替えた定義通りの計算をさせるだけです。

 正規方程式というのは、次のような行列です。統計の授業を受けたから覚えているという人もあるのではないでしょうか。

こちらの式は実計算には使いません。

 私が一般教養の数学で習ったときもこんな形だった記憶があります。 これを解く作業は、単に掛け算を逆演算に組み替えるような置き換えだけです。

こちらが実際に使う式です。

 この計算式さえ知っていれば、4つの係数を得ることができます。 実験データ「Sheet1」のx,y相関表に対して、y=P(x)を求めるために、a1〜a4の係数を求めます。

 係数群を求め
る準備作業は、
左記の(1)〜(3)
の代入定義作業
が必要です。

 その後、逆行列
を含む式を選択し
計算実行させます。
← (1)
列ごとに代入
↑ (2)代入
↑ (3)代入

 実験データ表「Sheet1」のx列を選択し、F8(代入定義)。表のデータを別途配列定数として定義しなおします。y列を選択して同様に配列に取り込みます。 その結果、表Sheet1のx及びyは、左辺のように記述してから計算実行(F7)で、各々9つの要素を持つ配列になっていることが分ります。

これは実作業では不要な確認作業です。

 次に、x=Seet1.xy=Sheet1.y ですが、表の中の記述とは別の変数として、x 及び y を定義するに際して、代入定義したばかりの配列変数を代入(定義)します。 結果として、x,y は、上記とそっくりに定義されます。

これも実作業では不要な確認作業です。

 次の n=index(x) は、配列xの中身の個数を求めるシステム関数(index)を使い、結果(この例では9個)を、変数nに代入定義しています。

 (1)〜(3)の作業の後、解の計算をします。左辺を書いて=の後F7(計算実行)です。 準備は面倒な作業でも、結果を出すのは簡単です。

 得られた結果(右辺)は、上から順番に、a1〜a4、即ち、0次〜3次の係数です。求める3次式は次のようになります。

 得られた式のグラフを、追加すると次のようになります。

 ここまでの作業は、3次式を求めるためのものです。 2次式や4次式で近似したい場合は如何するのでしょう ? 答えは簡単です。3次式で、4*4の正方行列になっている部分は、2次式では4行目と4列目を除いたものにし、4*1の方は4行目を外します。 4次式のほうは、式を睨んで、1行1列ずつ増やします。

 別のサンプルファイルの中には、同じ素材を「もっとエレガントな方法」として説明している例もあります。Σを沢山使った行列を書く必要が無いだけ作業は楽になりますが、理解しやすく、と考えると上記の方法になります。

 静岡の大石さんから、2次式近似を見せて欲しい旨要請がありました。 同じ表(Sheet1)を使ってやってみました。 P(x)の式は、

3次の項を削除して処理します。

 解は、上の例から、行と列を削除して、ついでに、F7(計算実行)まで済ませます。
 前のファイルを取り出しての作業なら、n=index(x)がF8(代入定義)してあることを確認しておきます。
 下の式を得るためには、行列の該当場所(最下行又は最右列)へカーソルを置いて、 メニューバーから、「行列」 「行(列)の操作」 「行(列)削除」 で処理します。

 同じグラフに結果を記入すると、赤い放物線のようになります。

 次のページ へ進む

 トップページ へ戻る

 前のページ へ戻る

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送