クイックスタート


非線形フィット(NLFit)ツールには、200以上の 組込関数があり、広い範囲のカテゴリーと分野から選択されています。探している関数がない場合は、Originのフィット関数ビルダを使って関数を定義することができます。

NLFit Dialog Quick Start 01a.png

目次

  1. 1 入力データの指定
    1. 1.1 ワークシートからデータを選択
    2. 1.2 グラフからデータを選択
  2. 2 組み込み関数でフィット
    1. 2.1 組み込み関数を使用した一般的な非線形フィット
      1. 2.1.1 陰関数カーブフィット
      2. 2.1.2 曲面フィット
      3. 2.1.3 指数曲線フィット
      4. 2.1.4 単一ピークフィット
      5. 2.1.5 シグモイド曲線フィット
  3. 3 ユーザ定義関数でフィット
  4. 4 複数データセットでフィット
    1. 4.1 パラメータを共有してグローバルフィット
    2. 4.2 複製データの連結フィット
    3. 4.3 複数曲線の独立フィット
  5. 5 フィットの設定
    1. 5.1パラメータ固定
    2. 5.2 上限境界と下限境界の設定
    3. 5.3 線形制約の設定
  6. 6 詳細フィットオプション
    1. 6.1 XエラーとYエラーでフィット
    2. 6.2 複製してフィット
    3. 6.3 派生パラメータの取得
    4. 6.4 XからYを取得
  7. 7 サンプル
    1. 7.1 指数関数フィット
    2. 7.2 単一ピークフィット
    3. 7.3 シグモイド関数でフィット
    4. 7.4 陰関数でフィット
    5. 7.5 積分してフィット
      1. 7.5.1 Case 1
      2. 7.5.2 Case 2
      3. 7.5.3 Case 3
    6. 7.6 コンボリューションしてフィット
      1. 7.6.1 2種類の関数でコンボリューション
      2. 7.6.2 ガウス応答で指数減少関数のコンボリューション
    7. 7.7 区分関数でフィット
      1. 7.7.1 Case 1
      2. 7.7.2 Case 2
    8. 7.8 複数変数でフィット
      1. 7.8.1 パラメータを共有している2つの異なる関数で曲線をフィット
      2. 7.8.2 2つの独立変数でフィットする
    9. 7.9 複素関数でフィット
    10. 7.10 常微分方程式でフィット
    11. 7.11 外部DLLでフィット
    12. 7.12 ユーザ定義フィット関数で組込関数を引用

入力データの指定

Originでは、NLFitダイアログを開く前に、ワークシートやグラフからの入力データを事前に選択できます。NLFitダイアログを開くと、設定タブのデータ選択ページにある入力データの項目で、データを変更、追加、移動、リセットできます。

ワークシートからデータを選択

必要に応じて、複数のワークシート列、ワークシート列の一部、ワークシート列の不連続部分を選択できます。不連続区間を選択したいときは、Ctrlキーを押しながら操作します。

グラフからデータを選択

グラフウィンドウがアクティブな場合、アクティブレイヤアクティブ曲線が、フィッティングの入力として事前選択されます。

他のデータの事前選択する場合は以下のオプションを使用できます。


組み込み関数でフィット

Originの組込フィット関数には、パラメータ初期化コードにより、フィッティング前に、パラメータ初期値をデータセットに適用します。

数回のクリックで、曲線フィットを実行して、最適なフィットパラメータを得ることが可能です。元のデータプロットにフィット曲線を貼り付けることもできます。

  1. ワークシート内でデータを選択するか、フィットを実行したいデータのグラフウィンドウをアクティブにして、メニューの解析:フィット:非線形曲線フィットを選択してNLFitダイアログを開きます。
  2. カテゴリ関数ドロップダウンを使ってフィット関数を選択します。
  3. 組み込み関数が見つからなかった場合は、検索をクリックしてフィット関数の検索を開いてキーワードで検索し関数をロードすることができます。(下記のヒントを参照してください)
  4. フィットボタンをクリックして実行し、結果ワークシートを取得します。
NLFit Dialog Quick Start 37.png

Button Mini Function Library.png 検索ボタンをクリックすると、検索ダイアログの右上角にFitting Function Library アプリのアイコンがあります。このアイコンをクリックすると、ダウンロード可能な関数のリストが表示されます。また、キーワードで関数を検索しても見つからない場合は、Fitting Function Libraryアプリを開いて、アドオンの関数を参照することができます。このアプリはOriginの最新バージョンにプレインストールされています。

組み込み関数を使用した一般的な非線形フィット

NLFitツールを使用した非線形フィットの操作を簡単にするために、Originのメインメニューの解析: フィットの下に多くのクイックメニューを用意しています。

陰関数カーブフィット

解析:フィット:陰関数カーブフィットメニューを選択すると、カテゴリとしてImplicit を選択した状態でNLFitツールが開きます。このサンプルで陰関数での簡単なフィット操作を確認できます。

曲面フィット

解析:フィット:非線形曲面(3D)フィットメニューを選択すると、カテゴリとしてSurface を選択した状態でNLFitツールが開きます。このチュートリアルで曲面フィット操作を確認できます。

指数曲線フィット

解析:フィット:指数曲線フィットメニューを選択すると、カテゴリとして Exponentialを選択した状態でNLFitツールが開きます。このサンプルで指数関数での簡単なフィット操作を確認できます。

単一ピークフィット

解析:フィット:単一ピークフィットメニューを選択すると、カテゴリとしてPeak Functionsを選択した状態でNLFitツールが開きます。このサンプルでピーク関数を使った簡単なピークフィットの操作を確認できます。

シグモイド曲線フィット

解析:フィット:シグモイド曲線フィットメニューを選択すると、カテゴリとして Growth/Sigmoidalを選択した状態でNLFitツールが開きます。このサンプルでシグモイド関数での簡単なフィット操作を確認できます。

ユーザ定義関数でフィット

組込関数ライブラリに欲しいフィット関数がないのですが、どうしたらよいでしょうか。問題ありません。ツール:フィット関数ビルダーカスタムフィット関数の定義のガイドに沿って、簡単に使うことができます。

NLFit Dialog Quick Start 32.png

複数データセットでフィット

同時にフィットを行いたい複数のデータがありますか?Originでは、各データセットを別々にフィットさせて、結果を別のレポートや統合したレポートに出力することができます。また、パラメータを共有してグローバルフィットを実行したり、フィット前に複製データを単一のデータセットに結合する連結フィットを実行できます。

NLFit Dialog Quick Start 15.png

パラメータを共有してグローバルフィット

フィット関数のパラメータは、オプションですべてのデータセット間で共有できます。

NLFit Dialog Quick Start 16.png

グローバルフィットについての詳細は、パラメータ共有でのグローバルフィットページを参照してください。


複製データの連結フィット

複製データの場合、すべてのデータポイントを1つの曲線に連結し、それらをデータセット全体としてフィットできます。

NLFit Dialog Quick Start 17.png

連結フィットについての詳細は、複製データのフィットページを参照してください。


複数曲線の独立フィット

複数曲線を個別にフィットできます。複数曲線の独立フィットでは、1つずつフィットを実行して、個別レポートを各曲線について作成するか、統合レポートを作成することができます。

NLFit Dialog Quick Start 18.png

フィットの設定

カーブフィット分析で微調整が必要な場合もあります。Originでは、カーブフィット処理をフルコントロールできます。

パラメータの固定

NLFit Dialog Quick Start 06.png

上限境界と下限境界の設定

NLFit Dialog Quick Start 07.png

線形制約の設定

NLFit Dialog Quick Start 08.png

線形制約の入力方法はこの表を確認してください。


詳細フィットオプション

基本のフィットオプションに加えて、さらに詳細なフィットを行うための拡張オプションを使うことができます。

XエラーとYエラーでフィット

ステップ1.直交距離回帰(ODR )反復アルゴリズムを選択します。

NLFit Dialog Quick Start 13.png

ステップ2.適切な重み付け方法を選択します。

NLFit Dialog Quick Start 14.png

複製してフィット

NLFit Dialog Quick Start 19.png

派生パラメータの取得

NLFit Dialog Quick Start 04.png

XからYを検索

NLFit Dialog Quick Start 09.png

XからYを検索またはYからXを検索についての詳細情報は、X/YからY/Xを検索 – 標準曲線ページを参照してください。

サンプル

指数関数フィット

  1. データを選択して、メニューから解析:フィット:指数曲線フィットを選択します。
  2. 関数ドロップダウンリストから、フィットの関数ExpDecay3を選択します。
  3. フィットボタンをクリックします。

NLFit Dialog Quick Start Exponential.png

単一ピークフィット

  1. データを選択して、メニューから解析:フィット:単一ピークフィットを選択します。
  2. 関数選択サブタブの関数ドロップダウンリストから、フィット関数Lorentz を選択します。詳細タブで、複製の数2に変更して、3つのピークをフィットします。
  3. フィットボタンをクリックします。

NLFit Dialog Quick Start FitSingle.png

シグモイド関数でフィット

  1. データを選択して、メニューから解析:フィット:シグモイド曲線フィットを選択します。
  2. 関数ドロップダウンリストから、フィットの関数Logisticを選択します。
  3. フィットボタンをクリックします。

NLFit Dialog Quick Start Sigmoidal.png

陰関数フィット

  1. データを選択して、メニューから解析:フィット:非線形陰関数カーブフィットを選択します。
  2. 関数ドロップダウンリストから、フィットの関数を選択します。
  3. フィットボタンをクリックします。
NLFit Dialog Quick Start 20.png

このチュートリアルで陰フィット関数の定義方法を紹介しています。

積分してフィット

どの積分関数でフィットできるおよび、フィット関数の定義方法を紹介します。

Case 1
y=\int_{c}^{d} \frac { \cosh { ((x_i + b^2 \cdot x^2) /(b + x))}}{a+(x_i^2+x^2)}\, dx_i

ここで、x_i \,は積分の独立変数で、 x \,はフィッティングの独立変数です。モデルのパラメータabcdはサンプルデータから取得したいフィットパラメータです。

詳細は、チュートリアルをご覧ください。

Case 2
y=\log (\int_{0}^{1} \frac{1}{\sqrt{2\pi}b}e^{-\frac{(t-a)^2}{2b^2}-xt}\, dt)

aとbはフィット関数内のパラメータです。

初期パラメータ: a=1e-4, b=1e-4積分関数には、中心が約a、幅が2bのピークが含まれています。また、ピークの幅(2e-4)は、積分間隔[0,1]と比較して非常に狭くなっています。正しくピークの中心あたりで積分される事を確認するために、積分範囲である[0,1] は3つの区間[0,a-5*b]、[a-5*b,a+5*b]、[a+5*b,1]に分けられています。この区分内で積分が施され、最終的に合計します。

詳細は、チュートリアルをご覧ください。

Case 3
y=y_0+\int_{-\infty}^{x} \frac{A}{w\sqrt{\frac{\pi}{2}}} e^{-2\frac{(t-x_c)^2}{w^2}}, dt

フィット関数には4つのパラメータがあり、そのうち3つを被積分関数に受け渡し、独立変数を上限として積分を行います。よって、まず被積分関数を定義しし、組み込みのintegral()関数を使用してフィット関数内で積分をします。

詳細は、チュートリアルをご覧ください。

コンボリューションしてフィット

Originでは、本質的に区分線形カテゴリー内の2つのコンボリューション関数が使われます。

  • GaussMod() --クロマトグラフィで使用される指数修正ガウス(EMG)ピーク関数
  • Voigt() -- Gaussian関数(wG は FWHM) と Lorentzian 関数のコンボリューション


新しいコンボリューション関数を作成する必要がある場合は、下のチュートリアルをご覧ください。

2種類の関数でコンボリューション
NLFit Dialog Quick Start 23.png
y=y_0+b_1x+\frac{b_2A_2}{w_2\sqrt{\pi/2}}e^{-\frac{2(x-x_{c2})^2}{w_2^2}}+(f\;*\;g)(x)

ここで、f(x)=\frac{s}{\pi}\cdot\frac{\tau_Lx_0^2(x_L^2-x_0^2)}{(x-x_{c1})\tau_L((x-x_{c1})^2-x_L^2)^2+((x-x_{c1})^2-x_0^2)^2}

 
g(x)=\frac{1}{w_1\sqrt{\pi/2}}e^{-\frac{2x^2}{w_1^2}}.

そして x_0, x_L, \tau_L, s, y_0, b_1, b_2 はフィットパラメータです。w_1, x_{c1}, w_2, x_{c2}, A_2 はフィット関数内の定数です。

詳細は、チュートリアルをご覧ください。

ガウス応答で指数減少関数のコンボリューション
NLFit Dialog Quick Start 22.png

この実験は、以下に示すように、出力信号がガウス応答を持つ指数減少関数のコンボリューションであると見なしています。

Tutorial Fitting With Convolution 002.png

これで、出力信号と応答データを得たので、信号を次のモデルでフィットして、指数減少関数を得ることができます。

y = y_0 + \int_{-\infty}^{+\infty} Ae^{-tx} \otimes Response, dx



詳細は、チュートリアルをご覧ください。

ピークをデコンボリューションする必要がある場合には、このチュートリアルをご覧ください。

区分関数でフィット

Originでは、Piecewise カテゴリー内の2つの区分関数が使われます。

  • PWL2 -- 2区分線形関数。
  • PWL3 -- 3区分線形関数。


新しい区分関数を作成する必要がある場合は、下のチュートリアルをご覧ください。

Case 1

NLFit Dialog Quick Start 25.png

上記のグラフから、曲線は2つの部分に分けられる部分からできていることが分かります。これは区分線形関数を使ってフィットすることができます。この関数は次のように表現できます。

y = \begin{cases} \frac{y_1(x_3-x)+y_3(x-x_1)}{x_3-x_1}, & \mbox{if } x<x_3 \ \frac{y_3(x_2-x)+y_2(x-x_3)}{x_2-x_3}, & \mbox{if } x \ge x_3 \end{cases}

x1x2は曲線の終着点を示すx値で、フィット中に固定されます。x3は2つの部分の交点のx値を示しています。そしてy1y2y3\ x_i, \ i=1, 2, 3地点でのy値をそれぞれ表しています。

詳しくは、こちらのチュートリアルをご覧ください。

Case 2

NLFit Dialog Quick Start 26.png

上記のグラフから、曲線は、以下の式で定義されるとおり、指数曲線区分と直線区分から成り立っています。

y = \begin{cases} a+bx+e^{-\frac{x-x_c}{t1}}, & \mbox{if } x<x_c \ a+bx, & \mbox{if } x \ge x_c \end{cases}

詳しくは、こちらのチュートリアルをご覧ください。

複数変数でフィット

Originでは、Multiple Variablesカテゴリー内の3つの複数変数の関数が使われます。

  • GaussianLorentz -- 基線とピーク中心を共有した、GaussianとLorentz関数の組み合わせ
  • HillBurk -- 2つの独立変数と2つの従属変数のHillとBurkモデルの組み合わせ
  • LineExp -- 1つの独立変数と2つの従属変数のLine と Exponentialモデルの組み合わせ


新しい複数変数の関数を作成する必要がある場合は、下のチュートリアルをご覧ください。

パラメータを共有している2つの異なる関数で曲線をフィット

NLFit Dialog Quick Start 31.png

GaussianLorentz関数はGaussianとLorentz関数の組み合わせで、y0xcの値を共有しています。

y_1 =y_0+\frac {A_1}{w_1\sqrt{\pi /2}}e^{-2\frac{(x-x_c)^2}{w_1^2}}
y_2=y_0+\frac{2A_2}\pi \frac {w_2} {4\left( x-x_c\right) ^2+w_2^2}

詳しくは、こちらのチュートリアルをご覧ください。

2つの独立変数でフィットする
 y = vm*\frac{x1}{km+(1+\frac{x2}{ki})*x1}

ここで、x1x2は、独立変数で、kikmvmは、フィットパラメータです。

詳しくは、こちらのチュートリアルをご覧ください。

複素関数でフィット

Originで複素関数でフィットするには、複素数データの実部と虚部を2つの異なる列に、2つの従属変数として分ける必要があります。
以下に、複素関数の定義方法の例を示します。

complex cc = A/(1+1i*omega*tau);
        y1 = cc.m_re;
        y2 = cc.m_im;

ここで、1iは、虚数単位「i」として使われ、omegaは、独立変数、A, tauは、フィッティングパラメータ、y1y2は、 ccの実部と虚部です。

常微分方程式でフィット

Originでは、NAG関数を呼び出し、1次または高次の常微分方程式(ODE)を定義することができます。
以下に1階常微分方程式のフィット方法の例を示します。

\frac{\mathrm{d} y}{\mathrm{d} x}=ay
y|_{x=x0}=y0


ここで、aは常微分方程式 のパラメータで、y0はODEの初期値です。このODEの問題を解決するために、Runge–Kuttaメソッドを使用して、NAG関数 d02pvcd02pcc が呼び出されます。

詳しくは、こちらのチュートリアルをご覧ください。

外部DLLでフィット

Origin C 関数は、C、C++、Fortranコンパイラーによって作成された外部DLLの関数を呼び出すことができます。これには、ソースファイルが外部DLL内の関数を宣言するヘッダファイル用の指示文を含んでいる必要があります。

以下に、 GNU Scientific LibraryのGSLを使って下記モデルをフィットする方法の例を示します。

y=y_0+a\int_{0}^{x} e^{\beta \cdot t}\, dt

詳しくは、こちらのチュートリアルをご覧ください。

サードパーティ製DLL関数の呼び出しについての詳細は、このページを参照してください。

ユーザ定義フィット関数で組込関数を引用

Originでは、新しいフィット関数を定義する際に、組込関数を引用することができます。

以下は、2つのガウス関数の統合として考えられる、歪曲ガウスピークをフィットする方法です。これらの2つのガウス曲線は、基線とピークの中心(xc)を共有し、ピークの幅(w) と振幅 (A)が異なっています。

次のように関数を定義します。

y = x<xc? nlf_Gauss(x, y0, xc, w1, A1) : nlf_Gauss(x, y0, xc, w2, A2);

ここで、nlf_Gauss() は組み込みのGauss関数です。

詳しくは、こちらのチュートリアルをご覧ください。