ここでは、レポートの作成を開始し、完了させるスクリプトを紹介します。
1. データテーブルを開きます。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
2. 二変量プラットフォームを起動し、そのプラットフォーム参照を「biv」に割り当てます。
/* プラットフォームの参照 */
biv = dt << Bivariate( Y( :Name("体重(ポンド)")), X( :Name("身長(インチ)")));
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( "Parameter Estimates" )][String Col Box( "Term" )]; // 項の列を見つける ests = rbiv[Outline Box( "Parameter Estimates" )][Number Col Box( "Estimate" )]; // 推定値の列を見つける 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. また、ボックスから値を行列で取得し、その値を使って、次の計算を行ったり、データテーブルを作成したりすることもできます。次の例は、データテーブルの作成方法を示しています。
// 平方和列の値を行列として取得する
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;