Calcul de la moyenne corrigéeSalut tout le monde,
J'ai du mal à calculer une "moyenne corrigée" sur 4 colonnes de résultats avec des valeurs numériques continues que j'obtiens.
Comment définir la "moyenne corrigée" ?Je veux exclure la valeur qui est la plus éloignée de la moyenne et compter deux fois la valeur la plus proche (en remplaçant effectivement la "valeur aberrante" exclue par la valeur qui s'en rapproche).
Voir l'exemple ci-dessous où les valeurs exclues sont surlignées en rouge et celles dupliquées en vert.

Merci pour votre aide! (Je suis actuellement sur JMP 17.0)
Veuillez trouver le script avec l'exemple de données brutes ci-dessous :
New Table( "corrected_mean_script",
Add Rows( 10 ),
New Column( "R1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Color Cells( {36, {1, 10}} ),
Set Values( [50.7, 54.5, 53.7, 54.5, 51.4, 47.6, 50.8, 51.4, 47.1, 53.1] )
),
New Column( "R2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Color Cells( {{36, {3, 8}}, {3, {5, 6, 9}}} ),
Set Values( [49.2, 55.4, 51.3, 54.8, 55.3, 53.7, 51.6, 51.2, 51.8, 50.3] ),
Set Display Width( 48 )
),
New Column( "R3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Color Cells( {{3, {1, 2, 4}}, {36, {5, 7}}} ),
Set Values( [54.7, 50.3, 55.1, 51.3, 52.9, 48.2, 53, 52.8, 44.1, 51.6] )
),
New Column( "R4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Color Cells( {{36, {2, 4, 6, 9}}, {3, {3, 7, 8, 10}}} ),
Set Values( [50.3, 52, 49.8, 52.9, 50.5, 52.1, 54.3, 44.8, 48.6, 55.3] ),
Set Display Width( 50 )
)
)Tableau de donnéesScriptles fenêtresRe : Calcul de la moyenne corrigéeVoici une façon, par étapes, de voir une solution.
Names Default To Here( 1 );
dt = New Table( "corrected_mean_script",
Add Rows( 10 ),
New Column( "R1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Color Cells( {36, {1, 10}} ),
Set Values( [50.7, 54.5, 53.7, 54.5, 51.4, 47.6, 50.8, 51.4, 47.1, 53.1] )
),
New Column( "R2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Color Cells( {{36, {3, 8}}, {3, {5, 6, 9}}} ),
Set Values( [49.2, 55.4, 51.3, 54.8, 55.3, 53.7, 51.6, 51.2, 51.8, 50.3] ),
Set Display Width( 48 )
),
New Column( "R3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Color Cells( {{3, {1, 2, 4}}, {36, {5, 7}}} ),
Set Values( [54.7, 50.3, 55.1, 51.3, 52.9, 48.2, 53, 52.8, 44.1, 51.6] )
),
New Column( "R4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Color Cells( {{36, {2, 4, 6, 9}}, {3, {3, 7, 8, 10}}} ),
Set Values( [50.3, 52, 49.8, 52.9, 50.5, 52.1, 54.3, 44.8, 48.6, 55.3] ),
Set Display Width( 50 )
)
);
dt << New Column( "Corrected Mean", Numeric, "Continuous" );
For Each Row(
mean = Mean( :R1, :R2, :R3, :R4 );
data = dt[Row(), 1::4];
absDiff = Abs( data - mean );
min = (data[Loc( absDiff == Min( absDiff ) )])[1];
data[Loc( absDiff == Max( absDiff ) )[1]] = min;
:Corrected Mean = Mean( data );
);Re : Calcul de la moyenne corrigéeMerci Marc, ça marche bien.
Pour référence future pour les autres, l'utilisation des conseils de ce sujet devrait permettre de localiser les 4 colonnes dans un tableau de données plus large :
https://community.jmp.com/t5/Discussions/How-to-get-column-number-from-column-name-JMP/td-p/5987
Merci encore!