ここでは、レポートを作成するJSLスクリプトを最初から順に紹介します。
1. データテーブルを開きます。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
2. 次に「二変量」プラットフォームを起動し、そのプラットフォーム参照を「biv」に割り当てます。
/* プラットフォームの参照 */
biv = dt << Bivariate( Y( :"体重(ポンド)"n ), X( :"身長(インチ)"n ));
3. 「二変量」プラットフォームで何ができるのかを調べるには、[ヘルプ]>[スクリプトの索引]を選択し、オブジェクトのリストから「Bivariate」を検索します。いくつかのオプションを実行します。
biv << Fit Spline( 1000000 ) << Fit Mean;
// 次数4、オレンジ色の曲線
biv << Fit Polynomial( 4, {Line Color( RGBColor( 1, 0.5, 0 ) )});
biv << ( Curve[1] << Line Color( red ) ); // 最初の曲線は赤色
4. レポートレイヤーをrbivに割り当てます。
rbiv = biv << Report;
5. フレームボックスを見やすいサイズにし、グラフを表示するために先頭までスクロールします。
rbiv[Frame Box( 1 )] << Size Window( 500, 700 );
biv << Scroll Window( {0, 0} );
6. レポートの処理を始めます。まず、参照を作成し、次に、その参照でできることを調べる必要があります。
Show Properties( rbiv ); // レポートのプロパティを表示する
メモ: ログに、レポートに使用できるメッセージがリストされます。該当のレポートで利用できるメッセージは、「スクリプトの索引」だけではなく、Show Properties()を実行することでも知ることができます。 Close [ブール] GetOpen [アクション] [スクリプトの場合のみ] SetOpen [ブール] [スクリプトの場合のみ] ... |
7. アウトラインの「平均のあてはめ」ノードを開きます。
rbiv["平均のあてはめ"] << Close( 0 );
Close()は、ブール関数(真または偽)で、0を渡すとアウトラインは閉じません。
8. 実際に、いくつかの結果を選択してみます(個別の結果を見るには、各行を単独で実行)。
rbiv["あてはめの要約"] << Select;
rbiv["パラメータ推定値"] << Select;
rbiv["分散分析"] << Select;
rbiv["多項式のあてはめ 次数=4", "パラメータ ?", Column Box( "推定値" )] << Select;
// アウトラインツリーの下位層にある要素を選択
rbiv << Deselect;
9. 4次多項式のパラメータ推定値レポートにおいて、推定値列の表示形式を変更してみます。
pe = rbiv["多項式のあてはめ 次数=4", "パラメータ ?"];
ests = pe[Number Col Box( "推定値" )];
ests << Set Format( 12, 6 );
Set Formatの第1引数では、全体の列幅を表示する文字数で指定します。第2引数では小数点以下の桁数を指定します。
図11.8 レポートに変更を適用
メモ: テーブルから単一の数値を取得することもできます。たとえば、3次の項における推定値を取得するには、上記のスクリプトに次のようなスクリプトを追加します。 terms = rbiv[Outline Box( "パラメータ推定値" )][String Col Box( "項" )]; ests = rbiv[Outline Box( "パラメータ推定値" )][Number Col Box( "推定値" )]; estimate = .; // 3次の項がない場合にそなえて初期値を設定 Try( For( i = 1, i < 10, i++, // get(i)は、Tryによって処理されるテーブルの末尾で停止する If( Contains( terms << Get( i ), "^3" ), estimate = ests << Get( i ); Break(); ) ) ); Show( estimate ); 0.070394822744608 |
10. For()ループを使って、目的の項の行数を数えます。For()の2番目の引数が条件であることを思い出してください。条件のテストが真である限り、ループは続きます。この場合は、「項の列が"^3"でなく、10番目の行に到達していない」という条件がテストされています。探している文字列が見つかった時点で(Break()により)ループは終了し、iの値は一致した行の番号になっています。これを利用して、For()による反復処理の後、推定値列に対するGetメッセージの引数としてiを用いています。
11. また、ボックスから値を行列で取得し、その値を使って、次の計算を行ったり、データテーブルを作成したりすることもできます。次の2つの例では、数値列ボックスからデータテーブルを作成しています。
// 平方和列の値を行列として取得する
myVector = rbiv[Table Box( 5 )][Number Col Box( "平方和" )] << Get as Matrix;
/* Big Class.jmpに「平方和」という新しい列を作成する
列にmyVectorの値を挿入する */
dt << New Column( "平方和", Values( myVector ) );
// 5番目テーブルボックスから新しいデータテーブルを作成する
rbiv[Table Box( 5 )] << Make Data Table( "分散分析表" );
12. ここで、軸のスケールを調整します。
rbiv[Axis Box( 1 )] << Min( 70 ) << Max( 170 ); // Y軸を設定する
rbiv[Axis Box( 2 )] << Min( 50 ) << Max( 70 ); // X軸を設定する
13. レポートの冒頭にあるグラフをコピーします。グラフが含まれているピクチャーボックスを選択する必要があります。グラフだけを選択すると、軸が欠落してしまいます。
rbiv[Picture Box( 1 )] << Copy Picture;