曲線のフィット

与えられたデータセットに最も適した式を求めたいことがある.Wolfram言語でこれを行う方法のひとつはFitを使うことである.

Fit[{f1,f2,},{fun1,fun2,},x] に最もフィットするの線形結合 を求める

基礎的な線形フィット

素数の最初の20個の表である.
In[1]:=
Click for copyable input
Out[1]=
データをプロットする.
In[2]:=
Click for copyable input
Out[2]=
素数データを一次曲線でフィットさせる.最適なフィットは関数の線形結合で得られる.
In[3]:=
Click for copyable input
Out[3]=
フィットをプロットする.
In[4]:=
Click for copyable input
Out[4]=
もとのデータのグラフに重ね描きする.
In[5]:=
Click for copyable input
Out[5]=
次に二次曲線でフィットさせる.
In[6]:=
Click for copyable input
Out[6]=
求まった二次曲線をプロットする.
In[7]:=
Click for copyable input
Out[7]=
もとのデータに重ね合せると,二次曲線の方が一次曲線よりよくフィットしていることが分かる.
In[8]:=
Click for copyable input
Out[8]=
{f1,f2,}と変化する座標の値に対応したデータ点のリスト
{{x1,f1},{x2,f2},}と変化する座標の値に対応したデータ点のリスト
{{x1,y1,,f1},{x2,y2,,f2},}座標の列 の値で得られたデータ点のリスト

データ指定法

Fit形式のデータが与えられると連続する が連続する整数点における関数の値に当たると仮定する.Fitには関数の任意の点における値に相当するデータを与えることもできる.次元は一次元でも多次元でもよい.

Fit[data,{fun1,fun2,},{x,y,}]複数の変数を持つ関数にフィットする

多変量フィット

の値の表を作成する.Fitで取り込めるようにFlattenをデータに作用させ,平坦化しておく.
In[9]:=
Click for copyable input
Out[9]=
2変数の関数のフィットである.
In[10]:=
Click for copyable input
Out[10]=

Fitは関数のリストを取り,明確で効果的な手順でこれらの関数のどのような線形結合がデータの最高の最小2乗フィットを与えるかを求める.しかし,指定の関数の線形結合だけからなるのではない「非線形フィット」を求めたいこともあるだろう.その場合はFindFitを使うとよい.この関数はいかなる形の関数でも取り,データに最適のフィットを与えるパラメータの値を求める.

FindFit[data,form,{par1,par2,},x]formdata に最もフィットする の値を求める
FindFit[data,form,pars,{x,y,}]多変量データのフィット

データの一般的なフィットを求める

これは素数のリストを項の単純な線形結合にフィットする.
In[11]:=
Click for copyable input
Out[11]=
結果はFitによるものと同じである.
In[12]:=
Click for copyable input
Out[12]=
これはFitでは扱えない非線形形式をフィットする.
In[13]:=
Click for copyable input
Out[13]=

デフォルトにより,FitFindFitは両方とも「最小二乗」フィットを生み出す.これは を最小化すると定義することができる.ここで はオリジナルの各データ点とフィットした値の差分を与える残差である.これとは別のノルムに基づいたフィットを考えることもできる.オプションNormFunction->u を設定するとFindFitを最小にするフィットを求めようとする.ここで r は残差のリストである.デフォルトはNormFunction->Normで最小二乗フィットに対応している.

ここではというノルムを使っている.これはフィットとデータ間の最大距離を最小にする.結果は最小二乗とは多少異なる.
In[14]:=
Click for copyable input
Out[14]=

FindFitは最適なフィットを与えるパラメータの値を求めるという形を取る.検索を始める点を指定しなければならないこともある.この指定はの形式でパラメータを与えることで行う.FindFitには検索方法をコントロールするためのたくさんのオプションがある.

FindFit[data,{form,cons},pars,vars] パラメータ制約条件 cons の下での最適フィットを探す

データへの一般フィットの検索

以下はパラメータの制約条件の下での最適フィットを探す.
In[15]:=
Click for copyable input
Out[15]=
オプション名
デフォルト値
NormFunctionNorm使用するノルム
AccuracyGoalAutomatic確度の目標桁数
PrecisionGoalAutomatic精度の目標桁数
WorkingPrecisionAutomatic内部計算精度
MaxIterationsAutomatic最大反復回数
StepMonitorNone段階を踏むたびに常に評価される式
EvaluationMonitorNoneform が評価されたときに常に評価される式
MethodAutomatic使用するアルゴリズム

FindFitのオプション