これが、(非線形) 最小自乗当てはめ法と呼ばれるゆえんです。非線形 が 何を意味しているのかを見るための例を紹介しますが、その前にいくつかの 仮定について述べておきます。ここでは簡単のため、1 変数のユーザー定義 関数は z=f(x), 2 変数の関数は z=f(x,y) のようにし、いずれも従属変数と して z を用いることにします。パラメータとは fit が調整して適切な値を 決定するユーザ定義変数で、関数の定義式中の未知数です。ここで言う、線形 性/非線形性とは、従属変数 z と fit が調整するパラメータとの関係に対 するものであり、z と独立変数 x (または x と y) との関係のことではあり ません (数学的に述べると、線形最小自乗問題では、当てはめ関数のパラメー タによる 2 階 (そして更に高階の) 導関数は 0、ということになります)。
線形最小自乗法では、ユーザ定義関数は単純な関数の和であり、それぞれは一 つのパラメータの定数倍で他のパラメータを含まない項になります。非線形最 小自乗法では、より複雑な関数を扱い、パラメータを色々な使い方をします。 フーリエ級数は線形と非線形の最小自乗法の違いを表す一つの例です。フーリ エ級数では一つの項は
z=a*sin(c*x) + b*cos(c*x).
のように表されます。もし、a と b が未知なパラメータで c は定数だとすれば パラメータの評価は線形最小自乗問題になります。しかし、c が未知なパラメー タならばそれは非線形問題になります。
線形の場合、パラメータの値は比較的簡単な線形代数の直接法によって決定で きます。しかし、'gnuplot' が使用する反復法は、その特別な線形の場も含め て、より一般的な非線形の問題を解くことができます。fit は検索を行うこ とで最小値を探そうとします。反復の各ステップは、パラメータの新しい値の 組に対して WSSR を計算します。Marquardt-Levenberg のアルゴリズムは次の ステップのパラメータの値を選択します。そしてそれはあらかじめ与えた基準、 すなわち、(1) 当てはめが "収束した" (WSSR の相対誤差がある限界値より小 さくなった場合。以下参照: set fit limit (113.29))、または (2) あらかじめ設定 された反復数の限界に達した場合 (以下参照: set fit maxiter (113.29))、のいずれ かを満たすまで続けられます。キーボードからその当てはめの反復は中断でき ますし、それに続いて中止することもできます (以下参照: fit (89))。ユーザ変 数 FIT_CONVERGED は、 直前の fit コマンドが収束により終了した場合は 1 を持ち、それ以外の理由で中断した場合は 0 を持ちます。FIT_NITER は、直 前の当てはめで行われた繰り返しの回数を持ちます。
当てはめに使われる関数はしばしばあるモデル (またはある理論) を元にして いて、それはデータの振舞を記述したり、あるいは予測しようとします。よっ て fit は、データがそのモデルにどれくらいうまく当てはまっているのかを 決定するため、そして個々のパラメータの誤差の範囲を評価するために、モデ ルの自由なパラメータの値を求めるのに使われます。以下参照: fit error_estimates (89.3)。
そうでなければ、曲線による当てはめにおける関数は、モデルとは無関係に選 ばれています (それは十分な表現力と最も少ない数のパラメータを持ち、デー タの傾向を記述しそうな関数として経験に基づいて選ばれるでしょう)。
しかし、もしあなたが全てのデータ点を通るような滑らかな曲線を欲しいなら fit ではなく、むしろ plot の smooth オプションでそれを行うべきで しょう。
竹野茂治@新潟工科大学