公開日: 04/01/2021

モデルのあてはめ

以下に、「モデルのあてはめ」プラットフォームのスクリプトを作成する際に起動ウィンドウの動作を制御するためのヒントをいくつか挙げます。

起動ウィンドウを開いたまま、同時にモデルをあてはめるには、以下のいずれかを行ってください(どちらも同じ結果が得られます)。

スクリプトにRun Modelメッセージを含める。

RunメッセージとKeep Dialog Open(1)メッセージの両方を含める。

起動ウィンドウを表示せずにモデルを実行するには、スクリプトにRunメッセージを含めます。

データテーブルの「モデル」スクリプト

データテーブルに「モデル」スクリプトが含まれており、「モデルのあてはめ」プラットフォームを起動して対話的に操作する場合は、テーブルスクリプトによって割り当てられている役割に基づいて、「モデルのあてはめ」起動ウィンドウに予め情報が入力されます。

あてはめのグループ

1つのプロファイルで複数のモデルを表示したい場合は、Fit Group関数を使用します。最小2乗、非線形、ニューラル、Gauss過程、および混合モデルといったモデルのあてはめを1つのウィンドウにまとめ、結果を1つにまとめたプロファイルを表示できます。次の例は、標準最小2乗モデルとGauss過程モデルの両方を作成します。

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(Name("log(ヒスタミン0)"),Name("log(ヒスタミン1)"),Name("log(ヒスタミン3)"),Name("log(ヒスタミン5)")),
	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関数

ヒント: <<演算子は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
);

/* 「スチューデント化残差」プロットの下に表示される/

fitObj << (:ABRASION << {AICc( 1 )});

個々の効果にメッセージを送るには、さらに入れ子にします。

fitObj << ( responseName << ((effectName) << effectOption ));

標準最小2乗

固定効果と複数のY変数のみの標準最小2乗モデルの場合は、Y変数をまとめて、または個別にモデルをあてはめることができます。一部の行に欠測値がある場合は、次の規則が適用されます。

スクリプトでは、デフォルトで、複数のYがまとめてあてはめられます。モデルは、すべてのY変数が欠測値でない行だけを使って各Yをあてはめます。たとえば、1つまたは複数の欠測値がある行はモデルから除外されます。また、スクリプトにRun( "Fit Together" )を明示的に含めても、同じ結果が得られます。

Run( "Fit Separately" )オプションを使用すると、このモデルは各Yを、そのYが欠測値でないすべての行を使ってあてはめます。たとえば、ある行に1つまたは複数のYの欠測値があっても、その行はモデルに含まれる可能性があります。

次のスクリプトは応答Yをまとめてあてはめます。

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Fit Model(
	Y( :Name("身長(インチ)"), :Name("体重(ポンド)") ),
	Effects( :性別 ),
	Personality( "Standard Least Squares" ),
	Emphasis( "Minimal Report" ),
	Run // またはRun( "Fit Together" )
);

次のスクリプトは応答Yを個別にあてはめます。

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Fit Model(
	Y( :Name("身長(インチ)"), :Name("体重(ポンド)") ),
	Effects( :性別 ),
	Personality( "Standard Least Squares" ),
	Emphasis( "Minimal Report" ),
	Run( "Fit Separately" )
);

JMPでモデルを実行するとき、ユーザは応答をまとめてあてはめるのか、それとも個別にあてはめるのかを選択するよう求められます。「モデルのあてはめ」起動ウィンドウには[個別にあてはめ]オプションがあり、デフォルトでオフになっています。Yの欠測値がどのように扱われるかについては、『基本的な回帰モデル』の欠測値を参照してください。

注: 変量効果のあるモデルの場合、Yはデフォルトで個別にあてはめられます。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).