LabTalkスクリプトでは、3つのXファンクションfitLR、fitPoly、fitMRを使用して線形フィット、多項式フィット、線形多重回帰を実行できます。-hスイッチを使用すれば、引数のリストを確認できます。
fitLRは、目的のデータセットに対し、もっとも当てはまりがよい直線を作成します。
newbook; // 新しいブックを作製 // ファイル名 string strFile$ = system.path.program$ + "Samples\Curve Fitting\Linear Fit.dat"; impasc fname:=strFile$; // データインポート int nn = wks.ncols; wks.addcol(); // 新しい列追加 wks.col$(nn+1).lname$ = FitData; // 新しい列にロングネームを割り当て // 列1(X)と列2(Y)の最初の10点に線形フィット実行 // フィットデータをFitData列に出力 fitLR iy:=(1,2) oy:=col("FitData"); // 出力値をふくむツリーオブジェクトfitLR作成 fitLR.a = ; // フィット切片を出力 fitLR.b = ; // フィット傾きを出力 fitLR.= ; // 切片と傾きを含む全結果を出力
線形フィットの他のサンプルは曲線フィットサンプルページにあります。また、XFスクリプトダイアログのFittingカテゴリー内でも確認できます(F11で開く)。
fitPolyを利用できます。
では、フィット関数が数学的には非線形ですが、反復無しの分析解を得る特殊なケースです。LabTalkで多項式フィットを行うには、newbook; // 新規ブックを作成 // ファイル名 string strFile$ = system.path.program$ + "Samples\Curve Fitting\Polynomial Fit.dat"; impasc fname:=strFile$; // データをインポート page.xlcolname = 0; // 最初にスプレッドシートセル表記をオフ wks.addcol(PolyCoef); // 多項式係数用の新規列を追加 wks.addcol(FittedX); //フィット曲線のXデータ用に新規列を追加 wks.addcol(FittedY); // フィット曲線のYデータ用に新規列を追加 // 列1 (X) と列3 (Y) に多項式フィットを実行 // 多項式次数は 3 fitPoly iy:=(1,3) polyorder:=3 coef:=col(PolyCoef) oy:=(col(FittedX),col(FittedY)); // fitPolyというツリーに格納された結果を出力 fitPoly.= ;
さらに、fitPoly では、補正済み残差平方和、決定係数、多項式係数の誤差を出力できます。より詳しいサンプルは、曲線フィットサンプルページにあります。または、XFスクリプトダイアログのFittingカテゴリー内で確認できます(F11で開く)。
ワークブックのスプレッドシートセル表記については、FAQ-849 を参照してください。 |
多重線形回帰はシンプルな線形回帰を拡張したもので、複数の説明変数と目的変数間の関係性を評価します。
// 新しいブックを作成し、データをインポート newbook; fn$ = system.path.program$ + "Samples\Curve Fitting\Multiple Linear Regression.dat"; impasc fn$; page.xlcolname = 0; //最初にスプレッドシートセル表記をオフ wks.addcol(FitValue); // フィットした従属変数(Y値)用の列を追加 // 多重線形回帰を実行 // 列Dは従属、列A、B、Cは独立変数 // 出力結果はtrツリーに格納される fitMR dep:=col(D) indep:=col(A):col(C) mrtree:=tr odep:=col(FitValue); tr.= ; // 結果ツリーを出力
他のサンプルは、曲線フィットサンプルページにあります。または、XFスクリプトダイアログのFittingカテゴリー内で確認できます(F11で開く)。
ワークブックのスプレッドシートセル表記については、FAQ-849 を参照してください。 |
上記で説明したXファンクションは、シンプルで素早く線形、多項式、多重回帰を行うためのものです。つまり、これら3つのXファンクションを使用する際は、いくつかの値の指定ができません。全ての値にアクセスをするには、 xop Xファンクションを使用します。これは、内部メニューコマンド(オペレーションコマンド)を呼び出し、回帰を行うためのオペレーションクラスを実行します。次のサンプルは、xop Xファンクションを使って線形フィットを実行し、レポートを作成する方法です。
// 新しいブックを作成し、データをインポート newbook; fname$ = system.path.program$ + "Samples\Curve Fitting\Linear Fit.dat"; impasc fname$; tree lrGUI; // 線形フィットのためのGUIツリー // FitLinear クラスでGUIツリーを初期化 xop execute:=init classname:=FitLinear iotrgui:=lrGUI; // GUIツリーに入力するデータを指定 lrGUI.GUI.InputData.Range1.X$ = col(A); lrGUI.GUI.InputData.Range1.Y$ = col(C); // 線形フィットを実行し、準備したGUIツリーにレポートを生成 xop execute:=report iotrgui:=lrGUI; xop execute:=cleanup; //フィット完了後に線形フィットオブジェクトをリセットする