Mathematica 9 is now available

Documentation / Mathematica / Mathematicaブック / Mathematicaを使った高等数学 / データの数値処理  /

3.8.2 曲線のフィット

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

基礎的な線形フィット

素数の最初の20個の表である.

In[1]:= fp = Table[Prime[x], {x, 20}]

Out[1]=

データをプロットする.

In[2]:= gp = ListPlot[ fp ]

Out[2]=

素数データを1次曲線でフィットさせる.最適なフィットは関数 1 xの線形合成で得られる.

In[3]:= Fit[fp, {1, x}, x]

Out[3]=

フィットをプロットする.

In[4]:= Plot[%, {x, 0, 20}]

Out[4]=

もとのデータのグラフに重ね描きする.

In[5]:= Show[%, gp]

Out[5]=

次に2次曲線でフィットさせる.

In[6]:= Fit[fp, {1, x, x^2}, x]

Out[6]=

求まった2次曲線をプロットする.

In[7]:= Plot[%, {x, 0, 20}]

Out[7]=

もとのデータに重ね合わせると,2次曲線の方が1次曲線よりよくフィットしていることが分かる.

In[8]:= Show[%, gp]

Out[8]=

データ指定法

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

多変量フィット

の値の表を作成する. Fitで取り込めるように Flattenをデータに作用させ,平坦化しておく.

In[9]:= Flatten[ Table[ {x, y, 1 + 5x - x y},
{x, 0, 1, 0.4}, {y, 0, 1, 0.4} ], 1]

Out[9]=

2変数の関数のフィットである.

In[10]:= Fit[ % , {1, x, y, x y}, {x, y} ]

Out[10]=

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

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

これは素数のリストを項の単純な線形結合にフィットする.

In[11]:= FindFit[fp, a + b x + c Exp[x], {a, b, c}, x]

Out[11]=

結果はFitによるものと同じである.

In[12]:= Fit[fp, {1, x, Exp[x]}, x]

Out[12]=

これはFitでは扱えない非線形形式をフィットする.

In[13]:= FindFit[fp, a x Log[b + c x], {a, b, c}, x]

Out[13]=

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

ここではというノルムを使っている.これはフィットとデータ間の最大距離を最小にする.結果は最小二乗とは多少異なる.

In[14]:= FindFit[fp, a x Log[b + c x], {a, b, c}, x,
NormFunction -> (Norm[#, Infinity] &)]

Out[14]=

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

FindFitのオプション



Any questions about topics on this page? Click here to get an individual response.Buy NowMore Information
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.