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 |
|
フィットするデータを指定します。 |
フィット関数名 | func |
入力 string |
|
データをフィットする関数を設定します。 |
nltree |
入力/出力 TreeNode |
|
パラメータ値、標準誤差などのフィッティングの情報を含むツリーです。 | |
フィットモード | mode |
入力 int |
|
入力データをフィットする時の扱い方を指定します。
オプションリスト
|
複製の数 | replica |
入力 int |
|
複製の数を指定します。各ピークに関数を置き換える事で複数のピークのデータを使用して複数フィットを行います。選択した関数が、複製をサポートしていない場合、このオプションは使用できません。 |
ダイアログテーマ | theme |
入力 string |
|
テーマを指定します。保存された設定がロードされ、フィットをカスタム化します。 |
パラメータの表記 | pnotation |
入力 int |
|
出力ツリーでのパラメータの表記を指定します。
オプションリスト
|
パラメータ初期化 | init |
入力 int |
|
パラメータ初期化のステータスを指定します。
オプションリスト
|
重み付け法 | weight |
入力 int |
|
グローバル重み付け方を指定します。
オプションリスト
|
NLFitオブジェクトの初期化の方法 | option |
入力 int |
|
NLFitオブジェクトの初期化の方法を指定します。
オプションリスト
|
非線形曲線フィットのセッションを開始します。この時、オプション設定とパラメータの初期化も行います。
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;
nlfit, nlend, nlgui, nlpara, nlfn, nlbeginr, nlbeginz, nlbeginm, nlbegino
キーワード:回帰, NLFit