FindFit

FindFit[data,expr,pars,vars]

変数 vars の関数 exprdata に最もフィットするようなパラメータ pars の数値を求める.

FindFit[data,{expr,cons},pars,vars]

パラメータの制約条件 cons のもとで最高のフィットを求める.

詳細とオプション

  • data の形は{{x1,y1,,f1},{x2,y2,,f2},}でよい.ただし,座標 x, y, の数はリスト vars 中の変数の数に等しいものとする.
  • data の形は{f1,f2,}でもよい.この場合,座標は1つで1, 2, の値を取ると仮定される.
  • FindFitpar1, par2, に代入するもののリストを返す.
  • expr pars vars がすべて数値であるときは数値を返さなければならない.
  • expr は線形的にあるいは非線形的に pariに依存することができる.
  • 線形的な場合,FindFitは大域的な最適フィットを求める.
  • 非線形的な場合,FindFitは通常局所的な最適フィットしか求めない.
  • FindFit[data,expr,{{par1,p1},{par2,p2},},vars]{par1->p1,par2->p2,}でフィットの探索を始める.
  • FindFitはデフォルトで最小二乗フィットを求める.
  • オプションNormFunction->f はノルム f[residual]が最小になるように指定する.
  • 制約条件 cons は,方程式,不等式,およびにこれらの論理結合を含むことができる.
  • 可能なオプション
  • AccuracyGoalAutomatic目標となる確度
    EvaluationMonitor Noneexpr が評価されたときに常に評価される式
    FitRegularizationNoneモデルの pars の正規化
    Gradient Automaticexpr の勾配要素のリスト
    MaxIterations Automatic使用する最大反復回数
    Method Automatic使用されるアルゴリズム
    NormFunction Norm最小化のノルム
    PrecisionGoalAutomatic目標となる精度
    StepMonitor None段階を取るたびに常に評価される式
    WorkingPrecision Automatic内部計算で使用する精度
  • AccuracyGoalPrecisionGoalのデフォルト設定はWorkingPrecision/2である.
  • AccuracyGoalPrecisionGoalの設定は返されるパラメータの値とNormFunctionの値の両方における目標桁数を指定する.
  • NormFunction->fFitRegularization->rfun のとき,Fitnormf[{expr(pars,x1,y1,)-f1,}]+rfun[pars]を最小にする pars の値を求める.
  • NormFunctionの設定は以下の形で与えることができる.
  • f剰余に適用される関数 f
    {"HuberPenalty",α}各成分についてのHuberペナルティ関数の合計
    {"DeadzoneLinearPenalty",α}各成分についてのデッドゾーン線形ペナルティ関数の合計
  • FitRegularizationの設定は以下の形で与えることができる.
  • None正規化は行わない
    rfunrfun[a]による正規化
    {"Tikhonov", λ}による正規化
    {"LASSO",λ}による正規化
    {"Variation",λ}lambda||TemplateBox[{Differences, paclet:ref/Differences}, RefLink, BaseStyle -> {2ColumnTableMod}][a]||^2による正規化
    {"TotalVariation",λ}lambda||TemplateBox[{Differences, paclet:ref/Differences}, RefLink, BaseStyle -> {2ColumnTableMod}][a]||_1による正規化
    {"Curvature",λ}lambda||TemplateBox[{Differences, paclet:ref/Differences}, RefLink, BaseStyle -> {2ColumnTableMod}][a,2]||^2による正規化
    {r1,r2,} r1,からの項の合計による正規化
  • FindFitAccuracyGoalまたはPrecisionGoalで指定された目標が達成されるまで続ける.
  • Methodの可能な設定値には,"ConjugateGradient""PrincipalAxis""LevenbergMarquardt""Newton""NMinimize""QuasiNewton"等がある.デフォルト値はAutomaticである.

例題

すべて開くすべて閉じる

  (1)

素数のリストの非線形フィットを求める:

最高のフィットのパラメータ をフィットする:

フィットされた関数を評価する:

スコープ  (7)

簡単な指数フィット  (3)

データを指数関数的減衰のモデルにフィットする:

結果のモデル関数:

データをモデルとともに示す:

時間を応答から分離する:

剰余を見るとモデルがよいフィットかどうかが分かる:

指数関数的減衰モデルのためのデータの対数に線形フィットを使う:

指数関数的モデルの対数はデータの対数の線形モデルである:

対数のモデルを累乗することで形成された指数モデル:

微分方程式のパラメータとしての指数関数フィット:

モデル関数は微分方程式の解である:

キャッシュを使うとより速くなる:

制約条件と初期値  (2)

制約条件付きのフィットを求める:

正の振幅,1から2までの頻度でモデルにフィットする:

フィットしたモデルとデータを比較する:

剰余は頻度の制約条件が厳しすぎることを示すパターンを示している:

あるパラメータに初期値を与えてフィットをよくする:

すべてのパラメータを1から始めて探索する:

パラメータ c の初期値をよくして探索する:

2つのフィットの質を比較する:

多変数データ  (2)

曲面を二次元データにフィットする:

頂点を近似した位置から始めてフィットを求める:

フィットした曲面をデータ点とともに示す:

四次元でモデルをデータにフィットする:

剰余はデータに加えられた任意性に大きさの面で匹敵する:

オプション  (7)

EvaluationMonitor  (1)

パラメータの数値でモデルの評価数を数える:

Gradient  (1)

除去できる特異点を含む問題を避けるために,モデルの勾配を指定する:

Sincの導関数は一般的な式で与えられるので,記号導関数の場合FindFitは成功しない:

データには の点があるので,この勾配は で特異点を持つ:

除去できる特異点を避けるために有限差分を指定する:

データをフィットとともに示す:

MaxIterations  (1)

収束が緩慢な場合は,MaxIterationsを大きくすると最良のフィットに収束することがある:

デフォルト値では収束しない:

1000回反復する前に収束する:

Method  (1)

Method->NMinimizeを使ってより徹底的に最小値を探す:

極小値を求める:

最小値を求める:

2つのフィットの質を比べる(大域的な最高のフィットが赤で示されている):

NormFunction  (1)

デフォルトでは最適な最小二乗フィットが求められる:

代りにノルムを使う:

StepMonitor  (1)

MichaelisMentenモデルを実験的なデータにフィットするためにパラメータ空間で取るステップを示す:

酵素反応の割合に関する実験からのデータ:

検索中にどのようにパラメータが展開するかを示す:

WorkingPrecision  (1)

より正確なパラメータの予測を得るためにより高い作業精度(WorkingPrecision)を使う:

アプリケーション  (7)

数学データ  (2)

フィボナッチ数のリストをフィットする:

底は黄金比に近い:

多少のノイズを入れてデータを生成する:

データをフィットする:

実験データ  (3)

計算のおよその複雑さを判断する:

FFTの複雑さに関する理論モデルにフィットさせる:

両対数プロットで時間データとフィットを示す:

潤滑剤粘度のモデルを実験データにフィットする:

温度 と圧力/1000 の関数としての潤滑剤粘度のモデル:

モデルの条件付けを向上させるために圧力をスケールする:

スケールされたデータに最もフィットするパラメータ を求める:

フィットのプロットをスケールされた実験データとともに示す:

実験データを使った n ペンタンからイソペンタンへの異性化の割合のモデルをフィットする:

水素 n ペンタン ,イソペンタン の関数としての割合の非線形モデル:

適切な大きさを持つ値から始まったデータに最もフィットするパラメータを求める:

微分方程式  (2)

微分方程式モデルにおける最高のフィットを与えるパラメータを求める:

パラメータの集合についての解がすべての の値について再利用できるようにモデルを定義する:

常微分方程式の解の精度について適当な許容度のフィットを求める:

データと剰余のあるフィットしたモデルを示す:

KdV方程式の非ソリトン初期条件がどのように2つのソリトンに分解するかを求める:

初期波が2つの独立した波に分かれる:

偏微分方程式を解くためにNDSolveで使われる空間格子を得る:

最終的な離散化解:

速度の異なる2つのソリトンのモデル:

離散化解のグラフから推定された初期条件でフィットを求める:

中間時における2つのソリトンのモデルと剰余をプロットする:

特性と関係  (6)

FindFitはパラメータ推定を与える:

NonlinearModelFitを使ってフィットに関する追加的な除法の抽出することができる:

パラメータ推定を抽出する:

追加的な結果と診断を抽出する:

線形モデルにとって,FitFindFitは等価でありLeastSquaresを使う:

{1,x,x2}Fitを使う:

これはモデル関数が基底の線形結合であるFindFitに等しい:

計画行列を構築しLeastSquaresを使って係数を求める:

LinearModelFitは線形モデルをフィットし,フィットに関する追加的な情報を返す:

FindFitは実質的にFindMinimumを使って剰余関数のノルムを最小化する:

剰余は反応とモデル予測の差分である:

FindFitはデフォルトで正規分布した応答と矛盾しない結果を返す:

LogitModelFitは二項分布した応答を想定する:

フィットは同一ではない:

ProbitModelFitについても同じことが言える:

GeneralizedLinearModelFitは二項分布およびその他の分布構造を許容する.

モデルガンマ分布した応答:

正規分布した応答と結果を比較する:

FindFitは,TimeSeriesのタイムスタンプを変数として用いる:

タイムスタンプをリスケールし,再度フィットする:

この値についてのフィットを求める:

FindFitは複数経路のTemporalDataについて経路ごとに働く:

考えられる問題  (1)

初期値  (1)

適切なフィットを得るためにはよい初期値が必要かもしれない:

デフォルトの初期値の1から始めてフィットを求める.極小値は全く正しくない:

一般に,よいフィットを求めるためにはよい初期値が必要である:

Wolfram Research (2003), FindFit, Wolfram言語関数, https://reference.wolfram.com/language/ref/FindFit.html (2019年に更新).

テキスト

Wolfram Research (2003), FindFit, Wolfram言語関数, https://reference.wolfram.com/language/ref/FindFit.html (2019年に更新).

CMS

Wolfram Language. 2003. "FindFit." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2019. https://reference.wolfram.com/language/ref/FindFit.html.

APA

Wolfram Language. (2003). FindFit. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FindFit.html

BibTeX

@misc{reference.wolfram_2024_findfit, author="Wolfram Research", title="{FindFit}", year="2019", howpublished="\url{https://reference.wolfram.com/language/ref/FindFit.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_findfit, organization={Wolfram Research}, title={FindFit}, year={2019}, url={https://reference.wolfram.com/language/ref/FindFit.html}, note=[Accessed: 22-November-2024 ]}