Y = [98, 112.5, 84, 102.5, 102.5, 50.5, 90, 77, 112, 150, 128, 133, 85, 112];
X = [65.3, 69, 56.5, 62.8, 63.5, 51.3, 64.3, 56.3, 66.5, 72, 64.8, 67, 57.5, 66.5];
X = J( N Row( X ), 1 ) || X; // 切片の列に1を入れる
beta = Inv( X` * X ) * X` * Y; // 最小2乗推定
resid = Y - X * beta; // 残差、Y - 推定値
sse = resid` * resid; // 誤差平方和
Show( beta, sse );
// データテーブルを開く
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// データを行列に移す
x = (Column( "年齢" ) << Get Values ) || (Column( "身長(インチ)" ) << Get Values);
x = J(N Row( x ), 1, 1) || x;
y = Column( "体重(ポンド)" ) << Get Values;
// 回帰分析の計算
xpxi = Inv( x` * x );
beta = xpxi * x` * y; // パラメータ推定値
resid = y - x * beta; // 残差
sse = resid` * resid; // 誤差平方和
dfe = N Row( x ) - N Col( x ); // 自由度
mse = sse / dfe; // 誤差の平均平方、誤差分散推定値
// 推定値の追加計算
stdb = Sqrt( Vec Diag( xpxi ) * mse ); // 推定値の標準誤差
alpha = .05;
qt = Students t Quantile( 1 - alpha / 2, dfe );
betau95 = beta + qt * stdb; // 上側95%信頼限界
betal95 = beta - qt * stdb; // 下側95%信頼限界
tratio = beta :/ stdb; // Studentのt値
probt = ( 1 - TDistribution( Abs( tratio ), dfe ) ) * 2; // p値
// 結果の表示
New Window( "ビッグ クラスの回帰分析",
Table Box(
String Col Box( "項",{"切片", "年齢", "身長(インチ)"} ),
Number Col Box( "推定値", beta ),
Number Col Box( "標準誤差", stdb ),
Number Col Box( "t値", tratio ),
Number Col Box( "p値", probt ),
Number Col Box( "下側95%", betal95 ),
Number Col Box( "上側95%", betau95 ) ) );
•
|
Yは応答変数のベクトル
|
•
|
aは切片項
|
•
|
bは係数から成るベクトル
|
•
|
Xは要因の計画行列
|
•
|
eは誤差項
|
factor = [1, 2, 3, 1, 2, 3, 1, 2, 3];
y = [1, 2, 3, 4, 3, 2, 5, 4, 3];
Design Nom( factor );
x = J( 9, 1, 1) || Design Nom( factor );
ここで、一般的な方程式を解くために、次のような行列Mを作成する必要があります。
行列Mは、次のような結合をすれば1ステップで作成できます。
M = ( x` * x || x` * y )
|/
( y` * x || y` * y );
FullFit = Sweep( M, [1, 2, 3] ); // フルモデルのあてはめ
InterceptOnly = Sweep( M, [1] ); // 切片のみのモデル
•
|
Design Nom()を使っているので、3番目の水準の係数は-0.333です。
|
このプログラム例では、特定の数値を指定していますが、それらを適切な引数に置き換えることにより、より汎用性があるスクリプトに変更できます。上の結果は、モデルのあてはめプラットフォームの結果と一致しています。詳細については、モデルのあてはめのANOVAレポートを参照してください。
図7.1 モデルのあてはめのANOVAレポート
以下に、モデルのあてはめのANOVAレポートに示すレポートを作成する方法を示します。
dt = New Table( "Data" );
dt << New Column( "y", Set Values( [1, 2, 3, 4, 3, 2, 5, 4, 3] ) );
dt << New Column( "factor", "Nominal", Values( [1, 2, 3, 1, 2, 3, 1, 2, 3] ) );
2.
|
obj = Fit Model(
Y( :y ),
Effects( :factor ),
Personality( "Standard Least Squares" ),
Run(
y << {Plot Actual by Predicted( 0 ), Plot Residual by Predicted( 0 ),
Plot Effect Leverage( 0 )}
)
);
3.
|
ranova = obj << Report;
ranova[Outline Box( 6 )] << Close( 0 );
ranova[Outline Box( 7 )] << Close( 1 );
ranova[Outline Box( 9 )] << Close( 1 );
ranova[Outline Box( 5 ), Number Col Box( 2 )] << Select;
ranova[Outline Box( 6 ), Number Col Box( 1 )] << Select;
この結果がモデルのあてはめのANOVAレポートに示されているものになります。