xop


概要

ツリーを使用してNLFit, ANOVAなどの操作を実行します

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

詳細については、説明セクションをご覧下さい。

変数

表示
変数
I/O

データ型
デフォルト
説明
実行モード execute

入力

int

init

操作ツリーの実行モードを指定します。

オプションリスト

  • init:ツリーの初期化
    このメソッドはツリーを初期化するのに使われます。
  • update:ツリーの更新
    このメソッドはツリーを更新するのに使われます。
  • run:ツリーの出力
    このメソッドはツリーを出力するのに使われます。
  • report:レポートを作成
    このメソッドはツリーを出力して、レポートを生成するのに使われます。
  • cleanup:操作オブジェクトのリセット
    このメソッドはオペレーションオブジェクトをリセットするのに使われます。
クラス名 classname

入力

string

<optional>

この変数はクラス名を指定します。

利用できるクラス名は次の通りです。

  • DescStats: 列の統計
  • DescStats_1: 行の統計
  • NormalityTest: 正規性の検定
  • ANOVAOneWay: 一元配置分散分析
  • ANOVATwoWay: 二元配置分散分析
  • ANOVAOneWayRM: 繰り返しのある一元配置分散分析
  • ANOVATwoWayRM: 繰り返しのある二元配置分散分析
  • FitLinear: 線形フィット
  • FitPolynomial:多項式フィット
  • MR: 線形多重回帰
  • FitNL: 非線形曲線フィット
  • ROCCurve: ROC曲線
GUIツリー iotrgui

入力/出力

TreeNode

<optional>

この変数は入力/出力のGUIツリーを指定します。操作クラスによって様々に変化します。

出力ツリー otrresult

出力

TreeNode

<optional>

この変数は出力ツリーを指定します。操作クラスによって様々に変化します。

ダイアログテーマ theme

入力

string

<optional>

この変数はダイアログテーマを指定します。

基線のフィットが必要 baseline

入力

int

0

基線をフィットするか指定します。

説明

NLFit、ANOVAなどのいくつかの分析ツールは複雑で、オペレーションフレームワークというOigin Cのフレームワークを通じて組み込まれています。

このフレームワークは、Xファンクションフレームワークがまだ取り扱いできないような複雑な処理を行うことができます。

一方で、オペレーションフレームワークは、Origin Cから呼ばれるクラスに基づいたこれらの操作を実行でき、これによりXファンクション(xop)がこれらのオペレーションクラスを実行するのに作成されます。

他の多くのXファンクションのように、xopはLabTalkで使用できるように設計されています。

サンプル

サンプル1: ワークシートから「線形フィット」を実行するxop

アクティブシートにあるA(X)B(Y)の線形フィットを実行し、レポートシートを生成します。

// 最初にデータをインポート
 
filename$ = system.path.program$ + "Samples\Curve Fitting\Linear Fit.dat";
 
newbook;
 
impASC filename$;
 
// FitLinear クラスを使用してGUIツリー"lrGUI"を作成
tree lrGUI;
xop execute:=init classname:=FitLinear iotrgui:=lrGUI;
 
// GUI treeの入力データを指定
 
lrGUI.GUI.InputData.Range1.X$=Col(A);
 
lrGUI.GUI.InputData.Range1.Y$=Col(B);
 
// 切片を0の固定など、線形フィットの設定を行なう
 
lrGUI.GUI.Fit.FixIntercept=1;
 
lrGUI.GUI.Fit.FixInterceptAt=0.1;
 
// 準備したGUIツリーのフィットレポートを作成
 
xop execute:=report iotrgui:=lrGUI;
 
//フィット後操作オブジェクトをクリーンアップ
 
xop execute:=cleanup;

サンプル2: グラフから「線形フィット」を実行するxop

単一レイヤ内に複数データがプロットされたグラフで線形フィットを実行し、グラフ上にフィット線を作成します。

// 最初にデータをインポート
filename$ = system.path.program$ + "Samples\Curve Fitting\Linear Fit.dat"; 
newbook;
impASC filename$;
 
 
//データでグラフを作成
range data = [<active>]1!(1, 2: wcol(wks.ncols));
plotxy data plot:=201 ogl:=<active>;  // ソースデータを散布図として作図
 
 
//FitLinearクラスを使用してGUIツリー "lrGUI"を作成
tree lrGUI;  
// FitLinearクラスとGUIツリーを初期化
xop execute:=init classname:=FitLinear iotrgui:=lrGUI;
 
//GUI treeの入力データに全てのデータプロットを指定
ii = 1;
doc -e d //アクティブレイヤの全てのプロットでループ
{
	%A =  xof(%C);   //XYデータセットを使用
	lrGUI.GUI.InputData.Range$(ii).X$ = %A;
	lrGUI.GUI.InputData.Range$(ii).Y$ = %C;	
	range rPlot = $(ii); //各データプロットのlabtalk範囲を定義
	int uid = range2uid(rPlot); //範囲のuidを取得
	lrGUI.GUI.InputData.Range$(ii).SetAttribute("PlotObjUID", $(uid));  // プロットのuidをセット
	ii = ii + 1;
}
// 線形フィットを実行して準備したGUIツリーのレポートを作成
xop execute:=report iotrgui:=lrGUI;
// フィット後に線形フィット操作オブジェクトをクリーンアップ
xop execute:=cleanup;


サンプル 3: 「列の統計」を実行するxop

アクティブシート内のデータをグループ化して、記述統計を実行してレポートツリーを作成します。

// 新しいワークブックにデータをインポート

filename$ = system.path.program$ + "Samples\Statistics\body.dat";

newbook;

impASC filename$;

//  DescStatsクラスを使用してGUIツリー "statGUI"を作成
tree statGUI;
xop execute:=init classname:=DescStats iotrgui:=statGUI;

// GUI ツリーの入力データを作成

statGUI.GUI.InputData.Range1.X$=Col(height);

// グループ化データを指定

statGUI.GUI.InputData.Range1.F$=Col(gender);

// 列の統計の設定

// 例として、性別ごとの最高身長

statGUI.GUI.Quantities.quantiles.iMax=1;

// 準備したGUIツリーのレポートを作成

xop execute:=run iotrgui:=statGUI otrresult:=statOut;

//フィット後に操作オブジェクトをクリーンアップ

xop execute:=cleanup;

// 結果を確認するレポートを表示
statout.list(0,1);
// または、次の方法で結果とグループラベルを取得
statout.=;
statout.Statistics.c1.GetLabel(1)$=;
statout.Statistics.c2.GetLabel(1)$=;

サンプル 4:「一元配置の分散分析」を実行するxop

データにOne-Way ANOVAを実行し、レポートシートを生成

/// 新しいワークブックにデータをインポートする
 
filename$ = system.path.program$ + "Samples\Statistics\ANOVA\One-Way_ANOVA_raw.dat";
 
newbook;
 
impASC filename$;
 
// ANOVAOneWayクラスを使用してGUIツリー "onewayGUI"を作成
tree onewayGUI;
xop execute:=init classname:=ANOVAOneWay iotrgui:=onewayGUI;
 
// ツリーのデフォルトデータはインデックスデータ形式なのでGUIツリーは更新する必要がある

// GUI ツリーからデータ形式のGUIツリーが必要

// LTの属性で、特別なノード".Use"でアクセスする必要がある

onewayGUI.GUI.InputData.Use = 1; //0 はインデックス、1 は素データ
 
xop execute:=update iotrgui:=onewayGUI;
 
// 更新されたGUIツリーの入力データを指定
 
onewayGUI.GUI.InputData.Data.Factor_0$=Col(A);
 
onewayGUI.GUI.InputData.Data.Factor_1$=Col(B);
 
onewayGUI.GUI.InputData.Data.Factor_2$=Col(C);
 
// 準備したGUIツリーでOne-Way ANOVAレポートを作成
 
xop execute:=report iotrgui:=onewayGUI;
 
//実行後に操作オブジェクトをクリーンアップ
 
xop execute:=cleanup;

サンプル 5: 「非線形曲線フィット」を実行するxop

アクティブシートのA(X)B(Y)C(Y)にNLSFのグローバルフィットを実行し、レポートシートを生成します。

//新しいブックにデータをインポート
 
filename$ = system.path.program$ + "Samples\Curve Fitting\Gaussian.dat";
 
newbook;
 
impASC filename$;
 
//NLSFクラスを使用してGUIツリー"nlGUI"を作成
tree nlGUI;
xop execute:=init classname:=FitNL iotrgui:=nlGUI;
 
//関数と入力データを指定し、フィット前に操作ツリーを更新

nlGUI.GUI.FunctionSelection.FunctionList$="Gauss";
 
nlGUI.GUI.InputData.Range1.X$=Col(A);
 
nlGUI.GUI.InputData.Range1.Y$=Col(B);
 
nlGUI.GUI.InputData.Range2.X$=Col(A);
 
nlGUI.GUI.InputData.Range2.Y$=Col(C);
 
//グローバルフィットに設定
 
//Lt属性で、特別なノード ".Use」 でアクセスする必要がある

nlGUI.GUI.InputData.Use=3;
 
xop execute:=update iotrgui:=nlGUI;
 
//デフォルトで表示されないFix and Dependencyを表示するパラメータ表を変更
 
nlGUI.GUI.Quantities.Parameters.Fix=1;
 
nlGUI.GUI.Quantities.Parameters.Dependency=1;
 
//両方のデータセットでy0を値0に固定
 
nlGUI.UserSettings.Parameters.Values.y0=0;
 
nlGUI.UserSettings.Parameters.Fixed.y0=1;
 
nlGUI.UserSettings.Parameters.Values.y0_2=0;
 
nlGUI.UserSettings.Parameters.Fixed.y0_2=1;
 
//wを共有
 
nlGUI.UserSettings.Parameters.Share.w=1;
 
xop execute:=report iotrgui:=nlGUI;
 
//フィット後に操作オブジェクトをクリーンアップ
 
xop execute:=cleanup;

サンプル 6: 「重回帰」を実行するxop

アクティブシートに3つの独立変数と1つの従属変数を持つデータに重回帰を実行し、レポートシートを生成します。

// データをインポート
filename$ = system.path.program$ + "Samples\Curve Fitting\Multiple Linear Regression.dat";
newbook;
impASC filename$;
 
// 重回帰クラスを使用してGUIツリー "mrGUI"を作成
tree mrGUI;
xop execute:=init classname:=MR iotrgui:=mrGUI;
 
// GUIツリーの入力データを指定
mrGUI.GUI.InputData.Range1.X$=col(A):col(C);
mrGUI.GUI.InputData.Range1.Y$=col(D);
 
// 全てのツリーノードを確認するため設定を指定
//この例では、実行後にコマンド "mrGUI.=" を使用
mrGUI.GUI.Quantities.Parameters.ConfInterval = 1;
mrGUI.GUI.Quantities.Statistics.ReducedChiSq = 1;
mrGUI.GUI.ResAnalysis.Stad = 1;
mrGUI.GUI.Residuals.Graph3 = 1;
mrGUI.GUI.Residuals.Graph4 = 1;
mrGUI.GUI.Residuals.Graph5 = 1;
mrGUI.GUI.Residuals.Graph6 = 1;
mrGUI.GUI.Residuals.Graph7 = 1;
 
// 準備したGUIツリーのレポートを作成
xop execute:=report iotrgui:=mrGUI;
 
//操作オブジェクトをクリーンアップ
xop execute:=cleanup;

サンプル 7:「ROC曲線」の正の状態値を設定するxop

newbook;
fname$ = system.path.program$ + "Samples\Statistics\sodium.dat";
impasc fname$;

xop execute:=init classname:=ROCCurve iotrgui:=rocGUI;

// GUIツリーで入力データを指定
rocGUI.GUI.InputData.Range1.X$="1!col(B)";

// グループ化データを指定
rocGUI.GUI.InputData.Range1.F$="1!Col(A)";

/// StateValueは古い互換性の使用法であり、項目はスペースで区切る
rocGUI.GUI.CompControl.StateValue$="RMSF";
StringArray stateList = {"RMSF"};
rocGUI.GUI.CompControl.StateList.SetStrArray(stateList);

xop execute:=report iotrgui:=rocGUI;

関連 X ファンクション