線形、多項式、線形多重回帰

LabTalkスクリプトでは、3つのXファンクションfitLRfitPolyfitMRを使用して線形フィット、多項式フィット、線形多重回帰を実行できます。-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で開く)。

多項式フィット

では、フィット関数が数学的には非線形ですが、反復無しの分析解を得る特殊なケースです。LabTalkで多項式フィットを行うには、fitPolyを利用できます。

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;  //フィット完了後に線形フィットオブジェクトをリセットする