Comment écrire une boucle for pour exécuter une ANOVA unidirectionnelle sur toutes les colonnes Y d'une table de donnéesJ'ai une grande table de données avec 10 000 noms de colonnes différents et un petit nombre de lignes contenant des répliques de 5 groupes d'échantillons différents, y compris un groupe de contrôle appelé "HN30".J'ai un script qui exécutera un test de comparaison des moyennes post-hoc ANOVA et Dunnett à sens unique (c'est-à-dire la comparaison des moyennes) au groupe de contrôle (HN30) si je spécifie chaque variable Y une à la fois. Cependant, je ne veux pas saisir les 10 000 noms de colonnes différents ou être invité à exécuter un test Dunnett ou à entrer le nom du contrôle pour chaque analyse de colonne.Quelqu'un peut-il m'aider à écrire une boucle for qui itérera les commandes dans toutes les colonnes une à la fois. Une fois que j'obtiens la sortie, je sais comment utiliser la commande combine tables pour fusionner toutes les valeurs P de sortie.Voici ce que j'ai qui fonctionne pour deux colonnes spécifiées nommées "SPP1" et "ABCC2" où les lignes du groupe de contrôle sont étiquetées "HN30".Il suffit de parcourir toutes les colonnes. Merci beaucoup !
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 )}
);ScriptingRe: Comment scripter une boucle for pour exécuter une ANOVA unidirectionnelle sur toutes les colonnes Y d'une table de donnéesVoici un exemple de boucle. Vous pouvez probablement vous adapter à vos besoins.
Vous pouvez trouver des exemples des commandes utilisées dans l'index de script ou dans la référence de script, si nécessaire.
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: Comment scripter une boucle for pour exécuter une ANOVA unidirectionnelle sur toutes les colonnes Y d'une table de donnéesMerci Georg,
J'ai adapté votre exemple à ma table spécifique et maintenant toutes les ANOVA à sens unique en cours d'exécution pour chaque colonne, de sorte que cette partie fonctionne.Cependant, je n'arrive toujours pas à comprendre comment travailler dans le test de Dunnett pour suivre chaque ANOVA.Je ne sais pas comment structurer cette sous-commande avec la boucle for.Voici ce que j'ai jusqu'à présent, mais je ne peux pas les tests Dunnett spécifiques que je montre en bas pour exécuter dans la boucle for.Des idées?Merci encore
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: Comment écrire une boucle for pour exécuter une ANOVA unidirectionnelle sur toutes les colonnes Y d'une table de donnéesvous pouvez essayer ceci:
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]^ ) )" ) ) )
);