JMPの多くのプラットフォームでは、列をBy変数として指定できます。スクリプトでこれを行うには、プラットフォームコマンド内にBy引数を含め、各列を引数としてリストします。
次の例では、40人の学生の「名前」、「年齢」、「身長(インチ)」、および「体重(ポンド)」を含む「Big Class.jmp」データテーブルを使用しています。「性別」をBy変数として使用し、さまざまなあてはめを追加して、「身長(インチ)」に対する「体重(ポンド)」の「二変量の関係」レポートを作成してみましょう。
1.
|
2.
|
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :Name("体重(ポンド)") ), X( :Name("身長(インチ)") ), By( :性別 ));
最初の行は、「Big Class.jmp」サンプルデータテーブルを開きます。2行目は、「性別」をBy変数として「体重(ポンド)」と「身長(インチ)」の「二変量の関係」レポートを実行するbivというプラットフォームオブジェクトを作成します。
3.
|
[スクリプトの実行]をクリックします。
|
1.
|
ログが表示されていない場合は、ログを表示します。スクリプト内を右クリックし、[ウィンドウ内にログを表示]を選択します。
|
Show( biv );
3.
|
Show( biv )の行を強調表示し、[スクリプトの実行]をクリックします。
|
ログには、プラットフォームへの単一の参照二変量[]が戻されるのではなく、biv = {二変量[], 二変量[]}のような参照のリストが戻されます。これらの2つの参照は、By変数である「性別」の2つの水準(FとM)に対応しています。
biv << Fit Line;
5.
|
作成したばかりの行を強調表示し、[スクリプトの実行]をクリックします。
|
biv[1] << Fit Polynomial( 3 );
7.
|
作成したばかりの行を強調表示し、[スクリプトの実行]をクリックします。
|
biv[2] << Fit Polynomial( 4 );
9.
|
作成したばかりの行を強調表示し、[スクリプトの実行]をクリックします。
|
図10.2 Byグループレポート
By引数で複数の列を指定した場合は、BY変数の組み合わせのサブグループごとにグラフが表示されます。上記の例で、By( :性別, :年齢 )とすると、12歳の女性、13歳の女性という具合に17歳までのグラフが表示され、同様に12歳から17歳までの男性のグラフも表示されます。また、12歳から17歳までの男性のグラフも表示されます。
次の例は、Byグループを使ってプラットフォームを起動し、各グループから結果(ここでは誤差平方和)を取得しています。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
onew = dt << Oneway( x( :年齢 ), y( :Name("身長(インチ)") ), by( :性別 ), anova );
// onewはプラットフォームのリストを保持するJSL変数
r = onew << Report;
// rはレポートのリスト
nBy = N Items( r );
// nByは生成されるレポートの数
vc = J( nBy, 1, 0 );
// vcは、レポート数と同じ行数と1つの列を持ち、すべての値がゼロに設定された行列
For( i = 1, i <= nBy, i++,
// 各レポートについて以下を行う
vc[i] = r[i]
// vc[i]はi番目のレポートの誤差平方和
[Outline Box( "分散分析" ),
// このアウトラインと
Column Box( "平方和" )][2]
);
// この列を検索し、2つ目の値を得る
Show( vc );
// デバッグ、ログでこの値を確認
Summarize( byValues = By( :性別 ) );
// byValuesが「性別」列の値のリストになる
New Table( "誤差平方和" )
// 2行(M.F)と2列の新しいテーブルを作成する
<< New Column( "性別",
character,
width( 8 ),
values( byValues )
// 「性別」という新しい列を作成する
) << New Column( "誤差平方和", Numeric, "Continuous", Values( vc ) );
// 「誤差平方和」という新しい列を作成する