xop


概要

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

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

詳細は下のサンプルセクションを参照してください。

Xファンクション実行オプション

スクリプトからXファンクションにアクセスする場合、追加のオプションスイッチについてのページを参照してください。

変数

表示
変数
I/O

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

入力

int

init

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

オプションリスト

  • init:GUIツリーの初期化
    このメソッドは、ツリーを初期化するために使用します。
  • update:GUIツリーの編集
    このメソッドは、ツリーを更新するために使用します。
  • 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ツリーを指定します。操作クラスによって異なります。

ヒント

  1. レポートシートの再計算モードを切り替えるにはiotrgui.gui.autoupdate を使用します。
  2. ツリーの情報を確認するには、 iotrgui.=を使用します。
出力ツリー otrresult

出力

TreeNode

<optional>

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

ダイアログテーマ theme

入力

string

<optional>

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

基線のフィットが必要 baseline

入力

int

0

ベースラインをフィットするかどうか指定します。

説明

NLFitやANOVAなどの解析は非常に複雑で、Origin Cの操作フレームワークと呼ばれるフレームワークによって実装されています。

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

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

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

サンプル

その他の例: LabTalkを使用した統計 解析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.1に固定するなど、線形フィットの設定を行なう

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

素データに対して一元配置分散分析を実行し、レポートシートを生成します。

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

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を表示するパラメータ表を変更t

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;

例8: XOPを使用して行の統計を実行する場合に単位行の内容でグループ化

tree statGUI;
xop execute:=init classname:=DescStats_1 iotrgui:=statGUI; 
statGUI.GUI.InputData.Range1.X$=col(1):col(4); //データ
statGUI.GUI.InputData.Range1.F$="A[U]:D[U]"; //グループ化
statGUI.GUI.Output.Report.Book$ = "";		//新しい別のブックを作成するか "" をアクティブに設定する場合にのみ使用
statGUI.GUI.Output.Report.BookName$ = ""; 	// ブックロングネーム
statGUI.GUI.Output.Report.Sheet$ = "";   	//新しいシートを作成するか、""をアクティブに設定する場合にのみ使用
statGUI.GUI.Output.Report.SheetName$ = "";  	//シートロングネーム
xop execute:=Report iotrgui:=statGUI otrresult:=statOut;	// Execute:=RUN (ツリーのみ取得) または REPORT (通常のレポートを取得)を使用
xop execute:=cleanup;// 別の計算を実行する前にクリーンアップが必要

例9:行列オブジェクトで"列の統計"を実行するxop

tree statGUI;
xop execute:=init classname:=DescStats iotrgui:=statGUI;
statGUI.GUI.InputData.Range1.X$=[MBook1]MSheet1!1:0; //全行列オブジェクト
statGUI.GUI.Output.Report.Book$ = "Book1"; //デフォルト値を使用しない。デフォルトはソースブックに出力するが現在のソースブックは行列
statGUI.GUI.Output.FlatOut.Book$ = "<report>"; //同じブックにレポートシートを出力
xop execute:=report iotrgui:=statGUI; //レポートを取得
xop execute:=cleanup; // 別の計算を実行する前にクリーンアップが必要

関連するXファンクション