プラットフォームの分析結果を非表示にしたい場合があります。プラットフォームのウィンドウを表示せず、バックグラウンドでプラットフォームを実行したいという意味です。
スクリプトでシミュレーションやブートストラップ分析を実行する場合には、スクリプトによってプラットフォームが数百回または数千回呼び出されることがあります。しかし、各プラットフォームレポートから得ようとしている結果は1つか2つです。次の例は、シミュレーションを実行した後、結果のテーブルを作成し、それらを「一変量の分布」レポートに表示します。
dt = As Table( (0 :: 10)`, << Column Names( {"X"} ) ); // X変数を作成する
// 結果を再現できるように、乱数シードの初期値を設定する
Random Reset( 12345 );
dt << New Column( "Y",
"Continuous",
"Numeric",
Set Formula( :X * 2 + 1 + Random Normal() )
);
// Y値の計算式には乱数の要素を含む
res = []; // 結果の行列を定義する(最初は空)
For( i = 1, i <= 100, i++, // シミュレーションの実行をループ
// 実行ごとに回帰直線をあてはめ、パラメータ推定値を保存する
bv = dt << Bivariate( Y( :Y ), X( :X ), Fit Line( 1 ), Invisible );
res |/= (Report( bv )["パラメータ推定値"][
// 結果を行列の下に追加していく
Number Col Box( "推定値" )] << Get as Matrix)`;
// (非表示ではあるが)ウィンドウを閉じる
bv << Close Window;
dt:Y << Eval Formula; // 新しいY値を生成する
);
// 結果をテーブルに出力する
dtres = As Table( res, << Column Names( {"切片", "傾き"} ) );
// 「一変量の分布」レポートを作成する
dtres << Distribution( Y( :切片, :傾き ) );
スクリプトで中間的なステップとしての分析を実行するときに、その分析そのものをユーザに見せる必要がない場合は、invisibleオプションを使って非表示にしてください。このとき、レポート内の特定の結果だけをジャーナルまたはログに出力して、ユーザに見せることもできます。
• 次の例は、「一変量の分布」プラットフォームを非表示で実行し、累積確率プロットだけを新しいジャーナルに出力します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dist = dt << Distribution( Y( :Name("身長(インチ)") ), CDF Plot( 1 ), invisible );
Report( dist )["累積確率プロット"] << Journal;
dist << Close Window;
• 次の例は、非表示の「二変量」レポートからF値を抽出し、それをログに出力します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( x( :Name("身長(インチ)") ), y( :Name("体重(ポンド)") ), invisible );
biv << Fit Line;
r = biv << Report;
fratio = r[ColumnBox( "F値" )][1];
r << Close Window;
Show( fratio );
fratio = 1.15609545178219;
ヒント: 非表示のウィンドウによって使用されるリソースは手動で解放する必要があります。スクリプトの中で非表示のウィンドウの役目が終わったときには、そのウィンドウを閉じてください。
[テーブル]メニューにある[サブセット]、[並べ替え]、[列の積み重ね]などのオプションにinvisibleオプションを使用することもできます。次の例では、サブセットの処理を非表示にしています。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Select Where( :年齢 == 14 );
subDt = dt << Subset( invisible );
subDt << Bivariate( x( :Name("身長(インチ)") ), y( :Name("体重(ポンド)") ), Fit Line );
サブセットを使用せず、WHERE節を使用して同様の結果を得ることも可能です。
subDt << Bivariate( x( :Name("身長(インチ)") ),y( :Name("体重(ポンド)") ), Where( :年齢 == 14 ), Fit Line );