こんにちは!
添付されているのは、サンプルの自動生データ セット (スクリプトとデータの両方が添付されています) で JMP の同等性テストを自動化するスクリプトです。問題は、同等性テスト関数で分散タイプを指定しているスクリプトの 27 行目です。同等性テスト関数は次のとおりです。
tostv = {"Pooled Variance", "Unequal Variances"};<BR />ksd = {12,275};<BR /><BR />Equivalence Tests(
ksd[i],
0.05,
tostv[i], // ***need to fix
"Equivalence",
With Control( "Young" )
)ただし、tostv[i] は適切に評価されず、無視され、デフォルトのプールされた分散が使用されます。何らかの eval 関数の組み合わせが必要だと思いますが、うまく動作しません。添付のデータとスクリプトを参照してください。ご協力いただきありがとうございます。
以下は、tostv リストを正しく処理するスクリプトのバージョンです。ただし、「i」変数にはロジックの問題があります。スクリプトでは、For ループを 4 回ループし、そのたびに i を 1 ずつ増やしていますが、tostv リストには 2 つのレベルしかありません。
コードはこちら
Names Default To Here( 1 );
tostv = {"Pooled Variance", "Unequal Variances"};
ksd = {12, 275};
dt = Current Data Table();
cnames = dt << Get Column Names( string );
n = N Items( cnames );
i = 0;
anova = Fit Group(
For( colnum = 4, colnum <= n, colnum++,
i = i + 1;
Eval(
Eval Expr(
Oneway(
Y( Column( colnum ) ),
X( :AgeClass ),
All Pairs( 1 ),
Means( 1 ),
t Test( 1 ),
Unequal Variances( 1 ),
Std Dev Lines( 0 ),
Mean Diamonds( 1 ),
Connect Means( 1 ),
Equivalence Tests(
ksd[i],
0.05,
Expr( tostv[i] ), //***need to fix to eval tostv
"Equivalence",
With Control( "Young" )
),
SendToReport(
Dispatch( {}, "1", ScaleBox, {Minor Ticks( 0 )} ),
Dispatch( {}, "Oneway Plot", FrameBox, ),
Dispatch( {}, "Oneway Means Compare", FrameBox, ),
Dispatch( {"Oneway Anova"}, "Summary of Fit", OutlineBox, {Close( 1 )} ),
Dispatch( {"Oneway Anova"}, "Analysis of Variance", OutlineBox, {Close( 1 )} ),
Dispatch( {"Oneway Anova"}, "Means for Oneway Anova", OutlineBox, {Close( 1 )} ),
Dispatch( {}, "t Test", OutlineBox, {Close( 1 )} ),
Dispatch( {}, "Means Comparisons", OutlineBox, {Close( 1 )} )
)
)
)
);
)
);ジムさん、本当にありがとう!また、i ロジックの問題に気づいてくださってありがとうございます。私の元のデータ セットには、この例の to 2 ではなく、4 レベルの tostv リストがありました。
eval 関数に関するご協力に心から感謝いたします。