以下に、「モデルのあてはめ」プラットフォームのスクリプトを作成する際に起動ウィンドウの動作を制御するためのヒントをいくつか挙げます。
• 起動ウィンドウを開いたまま、同時にモデルをあてはめるには、以下のいずれかを行ってください(どちらも同じ結果が得られます)。
– スクリプトにRun Modelメッセージを含める。
– RunメッセージとKeep Dialog Open(1)メッセージの両方を含める。
• 起動ウィンドウを表示せずにモデルを実行するには、スクリプトにRunメッセージを含めます。
データテーブルのテーブルスクリプトに、「モデル」スクリプトが含まれている場合もあります。この「モデル」スクリプトを実行すると、「モデルのあてはめ」プラットフォームが起動されて、対話的に操作できます。その際、「モデル」スクリプトによって割り当てられている役割に基づいて、「モデルのあてはめ」起動ウィンドウに予め設定が入力されます。
1つのプロファイルで複数のモデルを表示したい場合は、Fit Group関数を使用します。標準最小2乗・非線形・ニューラル・Gauss過程・混合モデルといったモデルの結果を1つのウィンドウにまとめ、それらの結果を1つにまとめたプロファイルを表示できます。次の例は、標準最小2乗モデルとGauss過程モデルの結果を1つのウィンドウに表示します。
dt = Open( "$SAMPLE_DATA/Tiretread.jmp" );
obj = dt << Fit Group(
Fit Model(
Y( :摩擦 ),
Effects(
:シリカ & RS,
:シラン & RS,
:硫黄 & RS,
:シリカ * :シリカ,
:シリカ * :シラン,
:シラン * :シラン,
:シリカ * :硫黄,
:シラン * :硫黄,
:硫黄 * :硫黄
),
Personality( "Standard Least Squares" ),
Emphasis( Minimal Report ),
Run()
),
Gaussian Process(
Y( :硬度 ),
X( :シリカ, :シラン, :硫黄 ),
Set Correlation Function( "Cubic" )
)
);
レポートで「あてはめのグループ」の赤い三角ボタンをクリックし、[プロファイル]を選択します。そして、下方向にスクロールして「予測プロファイル」を表示します。同じプロファイル内に、最小2乗モデルの「摩擦」行、そしてGauss過程モデルの「硬度」行が表示されているのがわかります。
モデル効果には、複数の列や複数の効果を指定できます。モデル効果の指定には、特別な構文があります。
Effects( 効果の並び、もしくは、効果のマクロの並び、もしくは、それら両方);
モデル効果は、主効果の場合には1つの列名を指定します。交互作用などの交差効果には、アスタリスク(*)を用います。枝分かれ効果には、角括弧[ ]を用います。モデル効果に対するオプションを、アンパーサンド(&)の後に指定できます。モデル効果は、たとえば、次のように指定します。
A, // 1つの列名単独で1つの主効果
A*B, // 交差効果、交互作用、または多項式
A[B], // 枝分かれ
A*B[C D], // 交差および枝分かれ
effect&Random, // 変量効果
effect&LogVariance, // 対数分散効果
effect&RS, // 応答曲面の項
effect&Mixture, // 配合の効果
effect&Excluded, // モデル引数を持たない効果
effect&Knotted, // 節点スプライン効果
効果のマクロは以下のとおりです。
Factorial( columns ), // 完全実施要因
Factorial2( columns ), // 最大2次までの交互作用のみ
Polynomial( columns ), // 2次の多項式のみ
MANOVAにおいて個別の応答関数(Response Function)を指定するには、添え字付きのResponseを使います。
manovaObj << ( Response[ 1 ] << {応答オプション} );
manovaObj << ( Response[ "対比" ] << {応答オプション} );
各応答関数でそれぞれCustom Testメッセージを使用できます。
Custom Test( matrix, <Power Analysis( ... )>, <Label( "..." )> )
行列(matrix)の各行は、計画行列のすべての列に対する係数を指定します。
個別の効果の検定を指定するには、名前または番号の添え字をつけたEffectを使います。
manovaObj << ( Response[1] << ( Effect["モデル全体"] << {効果オプション} ) );
manovaObj << ( Response[1] << ( Effect[i] << {効果オプション} ) );
効果には次のように通し番号が付けられます。
• 切片には0
• 標準の効果には1、2、3、...
• 「モデル全体」の検定にはn+1(nは切片を含まない効果の数)
各応答関数の各効果で、次のメッセージを使用できます。行列(matrix)の各行には、効果のすべての水準に対する係数を指定します。
Test Details( 1 ),
Centroid Plot( 1 ),
Save Canonical Scores,
Contrast( matrix, <Power Analysis(...)> );
たとえば、次のJSLスクリプトは効果の検定の詳細をレポートウィンドウに追加します。
dt = Open( "$SAMPLE_DATA/Dogs.jmp" );
manObj = dt << Fit Model(
Y("Log(ヒスタミン0)"n, "Log(ヒスタミン1)"n, "Log(ヒスタミン3)"n, "Log(ヒスタミン5)"n),
Effects(ヒスタミンの消耗 y or n,薬剤,薬剤*ヒスタミンの消耗 y or n),
Personality( "MANOVA" ),
Run Model
);
manObj << Response Function( "Contrast" );
manObj << (Response["対比"] << (Effect["モデル全体"] <<
/* Test Detailsメッセージを、レポートウィンドウの「対比」の下の
「モデル全体」に送る */
Test Details( 1 )));
/* Test Detailsを応答1(対比)と
効果3(薬剤*ヒスタミンの消耗 y or n)に送る */
manObj << (Response[1] << (Effect[3] << Test Details( 1 )));
ヒント: <<演算子はSend()関数と同じ結果をもたらします。
複数の応答がある場合には、特定の応答列のあてはめにメッセージを送ることができます。次のJSLを使用します(responseNameは、メッセージを送りたい応答列の名前)。
fitObj << ( responseName << {オプション, ...});
2つ目のSend()関数は指定された応答を見つけ、その応答にメッセージのリストを送ります。
メモ: 1つのSend()関数でメッセージを直接fitObjに送ると、そのメッセージはすべての応答に送られます。
次のスクリプトでは、最後の行でメッセージが「摩擦」応答のAICcレポートに送られます。
dt = Open( "$SAMPLE_DATA/Tiretread.jmp" );
fitObj = dt << Fit Model(
Y( :摩擦, :引張応力, :伸び, :硬度 ),
Effects(
:シリカ & RS,
:シラン & RS,
:硫黄 & RS,
:シリカ * :シリカ,
:シラン * :シリカ,
:シラン * :シラン,
:硫黄 * :シリカ,
:硫黄 * :シラン,
:硫黄 * :硫黄
),
Personality( "Standard Least Squares" ),
Run
);
/* AICcメッセージを送る */
fitObj << (摩擦 << {AICc( 1 )});
個々の効果にメッセージを送るには、さらに入れ子にします。
fitObj << ( responseName << ((effectName) << effectOption ));
固定効果だけの標準最小2乗モデルの場合で複数のY変数がある場合、Y変数をまとめてあてはめるか、または、Y変数1つずつに個別にモデルをあてはめるかを選択できます。データにおけるY変数において欠測値がある場合は、次の規則が適用されます。
• スクリプトでは、デフォルトでは、複数のYがまとめてあてはめられます。その場合、モデルは、すべてのY変数が欠測値でない行だけを使って各Yをあてはめます。つまり、いずれかのY変数に欠測値がある行は、モデルの推定計算から除外されます。また、スクリプトにRun( "Fit Together" )を明示的に含めても、同じ結果が得られます。
• Run( "Fit Separately" )オプションを指定すると、各Y変数において、そのY変数が欠測値となっていないすべての行を使ってあてはめます。たとえば、1つまたは複数のY変数が欠測値となっている行でも、モデルの推定計算に含まれる可能性があります。
次のスクリプトは、複数の応答Yをまとめてあてはめます。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Fit Model(
Y( :"身長(インチ)"n, :"体重(ポンド)"n ),
Effects( :性別 ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run // またはRun( "Fit Together" )
);
次のスクリプトは、それぞれの応答Yを個別にあてはめます。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Fit Model(
Y( :"身長(インチ)"n, :"体重(ポンド)"n ),
Effects( :性別 ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run( "Fit Separately" )
);
JMPでモデルを実行するとき、ユーザは応答をまとめてあてはめるのか、それとも個別にあてはめるのかを選択するよう求められます。「モデルのあてはめ」起動ウィンドウには[個別にあてはめ]オプションがあり、デフォルトでオフになっています。Yの欠測値がどのように扱われるかについては、『基本的な回帰モデル』の欠測値を参照してください。
メモ: 変量効果のあるモデルの場合、Yはデフォルトで個別にあてはめられます。