データテーブルのすべてのY列に対して一元配置分散分析を実行するforループをスクリプト化するにはどうすればよいですか?10,000の異なる列名と、「HN30」というラベルの付いたコントロールグループを含む5つの異なるサンプルグループからの複製を含む少数の行を持つ大きなデータテーブルがあります。各Y変数を一度に1つずつ指定すると、コントロールグループ(HN30)に対して一元配置分散分析とダネットの事後平均比較検定(平均比較)を実行するスクリプトがあります。 ただし、10,000の異なる列名をすべて入力したり、ダネット検定を実行したり、すべての列分析のコントロール名を入力したりするように求められたくはありません。誰かが、一度に1つずつすべての列でコマンドを繰り返すforループを作成するのを手伝ってくれませんか。 出力を取得したら、combinetablesコマンドを使用してすべての出力P値をマージする方法を知っています。以下は、「SPP1」と「ABCC2」という名前の2つの指定された列で機能するもので、コントロールグループの行には「HN30」というラベルが付いています。すべての列にわたって繰り返す必要があります。 本当にありがとう !
Fit Group(
Oneway(
Y( :SPP1 ),
X( :Cell lline ),
With Control( 1, {"HN30"} ),
Comparison Circles( 1 ),
SendToReport(
Dispatch(
{"Means Comparisons",
"Comparisons with a control using Dunnett's Method",
"LSD Threshold Matrix"},
"p-Value",
NumberColBox,
{Set Format( "Fixed Dec", 15, 15 )}
)
)
),
Oneway(
Y( :ABCC2 ),
X( :Cell lline ),
With Control( 1, {"HN30"} ),
Comparison Circles( 1 ),
SendToReport(
Dispatch(
{"Means Comparisons",
"Comparisons with a control using Dunnett's Method",
"LSD Threshold Matrix"},
"p-Value",
NumberColBox,
{Set Format( "Fixed Dec", 15, 15 )}
)
)
),
<<{Arrange in Rows( 1 )}
);スクリプティングRe:データテーブルのすべてのY列に対して一元配置分散分析を実行するforループをスクリプト化するにはどうすればよいですか?これがループの一例です。 おそらくあなたはあなたのニーズに適応することができます。
使用されるコマンドの例は、必要に応じて、スクリプトインデックスまたはスクリプトリファレンスにあります。
Names Default To Here( 1 );
cdt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
all_ys = cdt << get column names( Continuous, String );
For( i = 1, i <= n items(all_ys), i++,
Eval( Parse( Eval Insert( "oneway( X( :SITE ), Y( :^all_ys[i]^ ) )" ) ) )
);
Re:データテーブルのすべてのY列に対して一元配置分散分析を実行するforループをスクリプト化するにはどうすればよいですか?ありがとうGeorg、
私はあなたの例を私の特定のテーブルに適合させ、今度は各列に対してすべての一元配置分散分析を実行して、その部分が機能するようにしました。ただし、各ANOVAを追跡するためにダネット検定で作業する方法をまだ理解できません。そのサブコマンドをforループで構成する方法がわかりません。これが私がこれまでに持っているものですが、forループで実行するために下部に示す特定のダネット検定を実行することはできません。何か案は?再度、感謝します
Names Default To Here( 1 );
cdt = Open( "F:/Stats/DTest.jmp" );
all_ys = cdt << get column names( Continuous, String );
For( i = 1, i <= n items(all_ys), i++,
Eval( Parse( Eval Insert( "oneway( X( :Cell lLine ), Y( :^all_ys[i]^ ) )" ) ) )
);
Fit Group(
Oneway(
Y( :SPP1 ),
X( :Cell lline ),
With Control( 1, {"HN30"} ),
Comparison Circles( 1 ),
SendToReport(
Dispatch(
{"Means Comparisons",
"Comparisons with a control using Dunnett's Method",
"LSD Threshold Matrix"},
"p-Value",
NumberColBox,
{Set Format( "Fixed Dec", 15, 15 )}
)
)
),
Oneway(
Y( :ABCC2 ),
X( :Cell lline ),
With Control( 1, {"HN30"} ),
Comparison Circles( 1 ),
SendToReport(
Dispatch(
{"Means Comparisons",
"Comparisons with a control using Dunnett's Method",
"LSD Threshold Matrix"},
"p-Value",
NumberColBox,
{Set Format( "Fixed Dec", 15, 15 )}
)
)
),
<<{Arrange in Rows( 1 )}
);Re:データテーブルのすべてのY列に対して一元配置分散分析を実行するforループをスクリプト化するにはどうすればよいですか?あなたはこれを試すことができます:
Names Default To Here( 1 );
cdt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
ow_expr = Expr(
Oneway(
Y( Column( all_ys[i] ) ),
X( :SITE ),
/* 3rd site is control */
With Control( 1, {3} ),
Comparison Circles( 1 ),
SendToReport(
Dispatch(
{"Means Comparisons", "Comparisons with a control using Dunnett's Method", "LSD Threshold Matrix"},
"p-Value",
NumberColBox,
{Set Format( "Fixed Dec", 15, 15 )}
)
)
)
);
all_ys = cdt << get column names( Continuous, String );
//For( i = 1, i <= n items(all_ys), i++,
For( i = 1, i <= 3, i++,
Eval( Substitute( ow_expr, Expr( i ), i ) );
// Eval( Substitute( Expr( oneway( X( :SITE ), Y( Column( all_ys[i] ) ) ) ), Expr( i ), i ) )
// Eval( Parse( Eval Insert( "oneway( X( :SITE ), Y( :^all_ys[i]^ ) )" ) ) )
);