Go to the first, previous, next, last section, table of contents.


線形近似(Linear Fits)

a F (calc-curve-fit) [fit] コマンドは、 データ(数値 xy のベクトル)の集合を、 直線や多項式、あるいは他の x の関数に一致させようとします。 さしあたりここでは、直線近似のケースを考慮し、 モデルがデータに実際適しているかどうかの問題は無視することにしましょう。

標準の最小二乗近似による直線近似では、 モデル y = m x + b を一致させたいデータ点群 (x,y) の集合があり、 パラメータ m および b を調整して、 モデルから計算される y値をデータ群の実際の y値に できるだけ近づけることによって近似します。 (多項式近似の場合、 モデルは例えば y = a x^3 + b x^2 + c x + d のようになります。 多変量線形近似の場合では、データ点群は (x_1,x_2,x_3,y) となり、 モデルは y = a x_1 + b x_2 + c x_3 + d となります。 これらは後で論じます。)

モデルにおいて、 xx_2 のような変数は 独立変数(independent variables)y従属変数(dependent variable) と言います。 ma, b は モデルの パラメータ(parameters) と言います。

a F コマンドは、スタックから近似すべきデータ集合を取得します。 デフォルトでは、データ集合は行列であると想定しています。 例えば直線または多項式近似においては、このデータ集合は 2 × N の行列になります。ただし 1行目は x値 のリスト(並び)であり、 2行目は y値 に対応します。 上記の多変量線形近似の場合は、データ行列は4つの行を持ち、 それぞれ x_1, x_2, x_3, y に対応します。

2 × N ではなく N × 2 のデータ行列を入手してしまった場合は、 まず v t を使って転置行列を得てください。

a F をタイプすると、Calc はプロンプトを出してモデルの選択を促します。 直線回帰を選ぶには、数字の 1 を押してください。

Calc は次に、変数群に名前を付けるように促します。デフォルトでは、 独立変数には xy のようなアルファベットの後の方の文字を、 パラメータには ab のような前の方の文字を選びます。 (従属変数は名前を必要としません。) 2種類の変数はセミコロンで区切られます。 一般に、ユーザーはパラメータよりもむしろ独立変数の名前を気にするので、 独立変数だけユーザーが命名し、パラメータはデフォルト名を使わせる事もできます。

例えば、次のようなデータのマトリックスがスタック上にあるとしましょう。

[ [ 1, 2, 3, 4,  5  ]
  [ 5, 7, 9, 11, 13 ] ]

これを単純直線近似するとします。 a F をタイプし、次に 1 でモデルを選び、 そして RET でデフォルトの名前を使います。 結果はスタック上に式 3 + 2 x が出ます。 Calc はモデル表現式 a + b x を生成し、 データに一致する ab の最適値を見つけました。 (このケースでは、厳密に一致する解が見つかりました。) 次に Calc はモデル表現式の ab を その数値に置換えました。

a F コマンドは、トレイルに 2つのエントリを置きます。 ひとつはいつものように、スタックに出た結果のコピーです。もうひとつは、 [a = 3, b = 2] のように恒等式で表したパラメータ値群のベクトルです。 式からパラメータを拾うより、リストで利用したい場合もあるでしょう。 (t y とタイプすると、このベクトルをスタックにコピーできます。 トレイル関連コマンド群 参照 。)

独立変数名を異なるものに指定すると、結果の式に影響を与えます。 a F 1 k RET とすると結果は 3 + 2 k となります。 パラメータ名を変更すると(例えば、a F 1 k;b,m RET とすると)、 トレイルに入る恒等式に影響を与えます。

-*- ちょっとひといき -*-

近似が完全に一致しないとどうなるか見るために、 データ行列中のデータ 13 を 14 に変えて近似をやりなおしてみましょう。 その結果は、

2.6 + 2.2 x

v x 5 RET TAB V M $ RET などとしてこの式を評価すると、 データの y値に充分近い値を示します。

[4.8, 7., 9.2, 11.4, 13.6]

N 個のデータ点を全部通る直線が存在しないので、 Calc はデータ点群に最も近似した直線を最小二乗法によって選びます。 この思想の本質は、誤差の尺度 χ^2(chi-square) を定義することです。

        N
χ^2 =  Σ (y_i - (a + b x_i))^2
       i=1

これは、a + b x が全データ点に厳密に一致するとき明らかにゼロで、 a + b x_i の値が対応する y_i から外れるにつれて大きくなります。 これがなぜ二乗和なのかについてはいくつか理由があって、 そのひとつは χ^2 >= 0 を確実にするためです。 最小二乗近似は単純に、 χ^2 が最小となるような a, b の値を選びます。

他の種類のモデルでは a + b x_i と異なるモデル式を使うだけで、 同じく最小二乗法を実施します。

-*- ちょっとひといき -*-

数値接頭引数を付けると、 a F コマンドが単一大行列ではない形式のデータを取得するようになります。 正の引数 N はスタックから N 個のアイテムを取得し、 これがデータ行列の N 行に相当します。 直線近似の場合、常に独立変数が 1個と従属変数が 1個なので、 N は 2 でなくてはなりません。

ゼロの接頭引数や C-u は折衷法です。Calc はスタックから 2項目、 N行の独立変数 x値行列と従属変数値のベクトルを取得します。 独立変数がただひとつしかない場合は、 x値は 1行だけの行列でも普通のベクトルでもかまいません。 この場合、C-u 接頭値は C-u 2 接頭引数と同じです。


Go to the first, previous, next, last section, table of contents.     利用度数