nlbegin

概要

XYデータの非線形曲線フィッティングセッションを開始します

追加の情報

Xファンクションは Auto GetNダイアログ用にデザインされていません。

この機能はOrigin8.0 SR5で更新されています。詳細は、リリースノート のセクションをご覧下さい。

コマンドラインでの使用法

nlbegin iy:=1 func:=gauss nltree:=tt; // gaussモデルを使用して、アクティブプロットのフィットを実行

nlbegin iy:=(1,2) func:=expgrow1 nltree:=tt;// expgrow1モデルを実行して、列1 を X とし、列2 を Y として実行

変数

表示
変数
I/O

データ型
デフォルト
説明
入力 iy

入力

XYRange

<active>
フィットするデータを指定します。
フィット関数名 func

入力

string

<unassigned>
データをフィットする関数を設定します。
nltree

入力/出力

TreeNode

nlt
パラメータ値、標準誤差などのフィッティングの情報を含むツリーです。
フィットモード mode

入力

int

自動
入力データをフィットする時の扱い方を指定します。

オプションリスト

  • auto:自動
Originは自動的にデータモードを選択します。
  • concat:連結フィット
すべての入力データセットは、連結され、1つの曲線としてフィットされます。
  • global:グローバルフィット
すべてのデータセットがグローバルにフィットされます。 このモードは、1つのモデルで、パラメータを共有して複数データセットをフィットする時に使用します。
  • cons:独立フィット - 統合レポート
全てのデータセットは独立してフィットされ、結果は統合されたレポートに出力されます。 このモードは、1つのモデルで、パラメータを共有せずに複数データセットをフィットし、統合レポートを作成する時に使用します。
複製の数 replica

入力

int

0
複製の数を指定します。各ピークに関数を置き換える事で複数のピークのデータを使用して複数フィットを行います。選択した関数が、複製をサポートしていない場合、このオプションは使用できません。
ダイアログテーマ theme

入力

string

<optional>
テーマを指定します。保存された設定がロードされ、フィットをカスタム化します。
パラメータの表記 pnotation

入力

int

para
出力ツリーでのパラメータの表記を指定します。

オプションリスト

  • para:パラメータ名
パラメータ名を表記法として使用します。
  • abbr:省略名
パラメータについている省略名を表記法として使用します。
  • both:両方
パラメータ名と省略名の両方を表記法として使用します。
パラメータ初期化 init

入力

int

自動
パラメータ初期化のステータスを指定します。

オプションリスト

  • auto:自動
Originは自動的にパラメータの初期化をフィット関数のFDFファイルに則って実行するかどうか指定します。
  • enable:有効にする
パラメータの初期化を有効にします。
  • disable:無効にする
パラメータの初期化を無効にします。
重み付け法 weight

入力

int

-1
グローバル重み付け方を指定します。

オプションリスト

  • -1: 自動
    エラーデータが一緒に選択されている場合、重み付けは機械的です。
  • 0=none:重み付けなし
    重み付けは特に使用されていません。
  • 1=ins:I機械的 (=1/ei^2)
    機械的に重み付けを行う方法を使用します。
  • 2=Stat:toukei統計 (=1/yi)
    統計的に重み付けを行う方法を使用します。
NLFitオブジェクトの初期化の方法 option

入力

int

0
NLFitオブジェクトの初期化の方法を指定します。

オプションリスト

  • init_all:全てのパラメーを初期化
    全てのパラメータを初期化してそのパラメータでフィットを実行します。
  • change_data:データのみ変更
    以前の設定を維持し、データセットのみを変更して新しいデータセットでフィットを実行します。

説明

非線形曲線フィットのセッションを開始します。この時、オプション設定とパラメータの初期化も行います。

nltreeはツリーノードの変数で、数多くのフィット設定やフィット結果例えば、パラメータ値や標準誤差などを読み解く際、に使用できます。以下の表はnltreeの中で最も一般的なオブジェクトです。

nltreeツリーノードの詳細について

オブジェクト名 説明 アクセス権 レポートシートに出力
nltree.pn n番目のパラメータ値です(算出されたパラメータを除く) 読み込み/書き込み
nltree.fn n番目のパラメータを固定(1)するか変化する(0)ようにします 読み込み/書き込み
nltree.sm 共有パラメータです。mはパラメータの数を表わします(算出されたパラメータを除く) 読み込み/書き込み 不可
nltree.en n番目のパラメータの標準誤差です 読み込み
nltree.un 上側信頼水準テーマによって計算された時にアクセス可能 読み込み
nltree.ln 下側信頼水準。テーマによって計算された時にアクセス可能 読み込み
nltree.ubn 上側境界値 読み込み/書き込み
nltree.lbn 下側境界値 読み込み/書き込み
nltree.ubonn nltree.ubnの使用を有効にする(1) か無効にします(0) 読み込み/書き込み 不可
nltree.lbonn nltree.lbnの使用を有効にする(1) か無効にします(0) 読み込み/書き込み 不可
nltree.ubxn パラメータと上側境界値の関係を設定します。0は"<="(以上)にあたり、0以外の値は"<"(より大きい)になります。 読み込み/書き込み 不可
nltree.lbxn パラメータと下側境界値の関係を設定します。0は"<="(以上)にあたり、0以外の値は"<"(より大きい)になります。 読み込み/書き込み 不可
nltree.dn パラメータの依存度を計算します 読み込み
nltree.nn$, nltree.namesn$ これは文字列ベクトルです。これは全てのパラメータの正式名称を含みます(算出したパラメータは除外されます) 読み込み

この表はパラメータから独立したプロパティをリストします。多くのプロパティは最低1回でもフィットを反復しないとツリーに表示されません。

オブジェクト名 説明 アクセス権 レポートシートに出力
nltree.adjrn 自由度調整済みR二乗値 読み込み
nltree.chisqrn カイ二乗値 読み込み
nltree.cn n番目のパラメータの信頼区間現在サポートされていません 読み込み
nltree.codn R二乗(COD) 読み込み
nltree.confC 曲線の信頼水準(%) 読み込み/書き込み 不可
nltree.confP 曲線の信頼水準(%) 読み込み/書き込み 不可
nltree.constr$ フィット過程の線形定数 読み込み/書き込み 不可
nltree.constraints 線形定数を有効にする/無効にする 読み込み/書き込み 不可
nltree.corn, nltree.rn R値(相関係数) 読み込み
nltree.corrn 相関行列(Origin 8.1 SR2) 読み込み
nltree.covarn 共分散行列(Origin 8.1 SR2) 読み込み
nltree.datan.wdata1$ 重み付けデータの範囲 読み込み
nltree.datan.wmethod1$ 各データセットの重み付けタイプ 読み込み
nltree.datan.x1$ Xの範囲。getnlr Xファンクションから結果を入手している時に利用可能 読み込み
nltree.datan.y1$ Yの範囲。getnlr Xファンクションから結果を入手している時に利用可能 読み込み
nltree.dofn 自由度 読み込み
nltree.dpn n番目の算出されたパラメータ値 読み込み
nltree.fitstatusn$ フィット状況 読み込み
nltree.func$ フィット関数名 読み込み
nltree.maxIter 反復の最大数 読み込み/書き込み 不可
nltree.ndpn$ これは文字列ベクトルです。計算されたパラメータの名前を有しています 読み込み
nltree.niter 反復回数 読み込み
nltree.probn P値現在サポートされていません 読み込み
nltree.ptsn フィットで実際に使用されているポイント数です 読み込み
nltree.rmse 誤差の実効値またはモデルの標準偏差 読み込み
nltree.ssrn 残差平方和 読み込み
nltree.tolerance フィット手順を制御する許容値 読み込み/書き込み 不可
nltree.tn n番目のパラメータに対するt検定値現在サポートされていません 読み込み

なお、*.pn, *.lbnのようなオブジェクトを使用する場合、フィットパラメータにアクセスする方法は2通りあります。1つ目の方法はパラメータの順番を利用してアクセスする方法です。もう1つの方法はパラメータ名を使用する事です。例えば、2つのデータセットがGauss関数でフィットされた場合、8つのフィット関数、y0, xc, w, A (1番目のデータセットのパラメータ名)とy0_2, xc_2, w_2, A_2 (2番目のデータセットのパラメータ名)があります。nltree 内にttという変数がある場合、tt.p5 と tt.y0_2 はどちらも2番目のデータセット内にあるパラメータy0_2を示します。

*.covarn と *.corrn は共分散行列とフィット結果からレポートに作成する相関行列にアクセスするのに使用します。この両方のパラメータを nltree で使用出来るようになるのはフィット結果が共分散行列と相関行列を有する時のみです。よって、スクリプトを使う必要があります。

nlend 1;

これでレポートを出力します。次のスクリプトは共分散行列のセルにアクセスする方法です。

tt.covar1[1,2]=;  //共分散行列の1行2列目のセルにアクセスする

サンプル

1.それでは、ExpGrow1 関数を使用してアクティブレイヤの最初のプロットをフィットしましょう。

パラメータ x0 と y0 の値は固定し、反復は3回とします。フィットしたデータは3列目に出力します。

fname$=system.path.program$ + "Samples\Curve Fitting\Exponential Growth.dat"; // データを準備
newbook;
impasc;
wks.addcol();
string strData$ = %(%H,$(wks.ncols)); // 追加した列の名前を確認
range fitx=1, fity=3;
plotxy (1,2);
nlbegin 1 ExpGrow1 tt;      //最初のプロットにフィット関数ExpGrow1 を使用してフィット実行
tt.x0=0;tt.f_x0=1;          // まず、x0 の値を最初の日付に固定
tt.y0=0;tt.f_y0=1;          // 同じくfix y0 を固定
tt.A1=1;
nlfit 3;                    // 反復は3 回だけ
tt.f_x0=0;tt.f_y0=0;        // x0 と y0 元に戻し、デフォルトの設定で収束するまで反復
nlfit;
fity=fit(fitx);             // フィット曲線を生成
nlend;                      // フィット過程終了
layer -i %(strData$);       // プロット内にフィット結果を含む
set %(strData$) -c 2;       // 色を赤にセット

2.これは、nlbegin を使用してフィットセッションを開始する例です。その後、nlparaを使用してパラメータダイアログを開き、初期値と境界設定を編集します。

最後に、nlfitを使用して、フィットの続きを行います。

nlbegin iy:=2 func:=Gauss;	// make sure col(1)とcol(2)にデータがあることを確認
nlpara;		                //ダイアログを開いてパラメータ値を確認

// フィット完了のために次のコマンドを実行
nlfit;
nlend 1;

3.このサンプルは使用するつもりだった関数がデータにとって適切ではないと判断した時に、nlfn を使用してフィット関数をリセットします。

nlbegin iy:=2 func:=Gauss;	// col(1)&col(2) がデータを含むことを確認
nlfn Lorentz;
nlfit;
nlend 1 1;			// 自動更新でフィット結果を出力


4.複製を設定する事で、複数のピークのデータをフィットするサンプルです。

fname$=system.path.program$ + "Samples\Curve Fitting\Multiple Peaks.dat"; // データ準備
newbook;
impasc;
nlbegin (1,2) Gauss tt replica:=2;
nlfit;
nlend 1;

5.これは重み付けフィットを行う例題です

fname$=system.path.program$ + "Samples\Curve Fitting\gaussian.dat"; // データ準備
newbook;
impasc;
nlbegin (1,2,3) Gauss tt weight:=ins;	//col(3) を重みデータ列としてセットし、重み付け方法は機械的を選択
nlfit;
nlend 1;

6.共分散行列とフィット結果からレポートに作成する相関行列にアクセスするサンプルです。

fname$=system.path.program$ + "Samples\Curve Fitting\Gaussian.dat";
newbook;
impasc;
nlbegin iy:=(1,2) func:=Gauss nltree:=tt;
// 相関行列と共分散行列を出力
nlgui gg 1;
gg.Quantities.mCov = 1;
gg.Quantities.mCor = 1;
nlgui gg 0;
nlfit;
nlend 1;
tt.covar1[1,2]=;
tt.corr1[1,2]=;

7.この例題の場合、スクリプトは全体として実行してください。実行中、NLFit パラメータダイアログが開くので、設定を編集できます。OKをクリックしてダイアログを閉じるとき、次のスクリプト行(nlend 1 1;)が自動的に実行されます。

fname$=system.path.program$ + "Samples\Curve Fitting\Exponential Growth.dat"; // データ準備
newbook;
impasc;
wks.addcol();
string strData$ = %(%H,$(wks.ncols)); // 追加した列の名前を確認
range fitx=1, fity=3;
plotxy (1,2);
nlbegin 1 ExpGrow1 tt;      //最初のプロットにExpGrow1 関数を使用したフィットセッションを実行
tt.x0=0;tt.f_x0=1;          // パラメータx0 値を最初の日付で固定
tt.y0=0;tt.f_y0=1;          // 同じくパラメータ y0 を固定
tt.A1=1;
nlpara 1;         //ダイアログが開き、必要に応じて設定を変更
//OKをクリックしてダイアログを閉じると、自動的に次の行を実行
nlend 1 1;

関連 X ファンクション

nlfit, nlend, nlgui, nlpara, nlfn, nlbeginr, nlbeginz, nlbeginm, nlbegino


キーワード:回帰, NLFit