Comment tracer des courbes d'ajustement de pic individuelles sur un histogramme (mélange de 2 normaux ajustés)Bonjour,
J'ai un ensemble de données qui contient plusieurs pics, que je peux parfaitement ajuster en utilisant l'option Fitted Normal 2 Mixture de l'histogramme.Cela génère la moyenne et le sigma pour chaque pic ainsi que les poids sous forme de valeurs numériques et superpose la courbe d'ajustement sur l'histogramme.Existe-t-il également un moyen de visualiser les ajustements de pics individuels superposés sur l'histogramme ?
Merci!
Denis
Re : Comment tracer des courbes d'ajustement de pic individuelles sur un histogramme (mélange de 2 normaux ajusté)Bonjour @txnelson ,
Peut-on faire quelque chose de similaire sur le tracé quantile normal ? J'aimerais produire quelque chose comme celui ci-joint (deux modes distincts), mais le faire de manière automatisée (reproductible), pas seulement en utilisant Édition > Copier le contenu du cadre et Modifier le contenu du cadre après avoir ajouté des personnalisations à un graphique et les avoir collées dans un autre. graphique.

@PatrickGiuliano
Re : Comment tracer des courbes d'ajustement de pic individuelles sur un histogramme (mélange de 2 normaux ajustés)Essaye ça:
Names Default To Here( 1 );
platform = Data Table( "Big Class.jmp" ) <<
Distribution(
Continuous Distribution(
Column( :height ),
Fit Distribution( Normal Mixtures( Clusters( 2 ) ) )
)
);
Wait( 0 );
Report( platform )[Outline Box( "Distributions" )][Outline Box( "height" )][
Outline Box( "Fitted Normal 2 Mixture" )][Outline Box( "Parameter Estimates" )][
Table Box( 1 )] << Make Into Data Table;
et le voici avec une colonne By :
Names Default To Here( 1 );
platform = Data Table( "Big Class.jmp" ) <<
Distribution(
Continuous Distribution(
Column( :height ),
Fit Distribution( Normal Mixtures( Clusters( 2 ) ) )
),
by(:sex)
);
Wait( 0 );
Report( platform[1] )[Outline Box( 1 )][Outline Box( "height" )][
Outline Box( "Fitted Normal 2 Mixture" )][Outline Box( "Parameter Estimates" )][
Table Box( 1 )] << Make Combined Data Table;
La différence avec une colonne Par est que « plateforme » contient désormais une liste de plateformes, et non une seule. Nous devons donc indexer avec un [1] pour obtenir la première entrée de la liste. De plus, la première zone de plan du rapport contient désormais une valeur par groupe. Il est donc plus facile de l'indexer par numéro plutôt que par nom.
Re : Comment tracer des courbes d'ajustement de pic individuelles sur un histogramme (mélange de 2 normaux ajusté)Salut, j'ai essayé cette technique en utilisant (comme décrit dans le post)
dist =Distribution( Continuous Distribution(
Column( :Column 1 ),
Fit Distribution( Normal Mixtures( Clusters( 2 ) ) ) ));
pour une autre donnée datable de ma part et cela fonctionne bien. Cependant, je souhaite pouvoir récupérer les estimations de paramètres à l'aide de <
j'ai utilisé
Fit Distribution( Normal Mixtures( Clusters( 2 ) ) ) ))<<MAKE into="" data="https://community.jmp.com/" table=""></MAKE>
J'ai probablement commis une erreur élémentaire, mais je ne la trouve pas.
De plus, si je réussis, avec l'aimable aide de la Communauté, j'aimerais beaucoup apprendre à inclure des valeurs par paramètre, si je l'avais utilisé (je dois effectuer cette analyse pour de nombreux sous-ensembles dans le tableau de données).
Merci d'avance.
Poul Ravn Sorensen
Re : Comment tracer des courbes d'ajustement de pic individuelles sur un histogramme (mélange de 2 normaux ajusté)Exactement ce que je cherchais. Merci!Re : Comment tracer des courbes d'ajustement de pic individuelles sur un histogramme (mélange de 2 normaux ajusté)Il y a plusieurs façons de faire ça.Les deux nécessitent l’ajout de JSL à votre code.La méthode 1 consiste à faire un clic droit sur le graphique et à sélectionner "Personnaliser...".Cela vous permettra de modifier le graphique, ou d'y ajouter des éléments.Si vous cliquez sur le "+" cela vous permettra d'ajouter un script, et l'un des Samples permettra de créer une courbe normale.Avec une certaine connaissance du traçage à l'aide de la fonction Y et de la fonction Densité normale, vous pouvez ajouter une telle courbe.
Vous trouverez ci-dessous un exemple d'ajout de JSL à un script pour générer 2 courbes normales au-dessus des exemples de données.La fonction Add Graphics Script() fait le travail.J'ai pris quelques raccourcis en codant en dur dans les 2 moyennes et écarts types différents ainsi que les facteurs d'échelle basés sur le nombre total de points de données divisés par les points de données pour la barre maximale dans la distribution de l'histogramme.Ces valeurs de données devraient être calculées dans n'importe quel script donné, en fonction de ce que vous proposez exactement.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
Dis = dt << Distribution(
Continuous Distribution( Column( :height ), Vertical( 0 ), Density Axis( 1 ) )
);
Report( Dis )[Frame Box( 2 )] << Add Graphics Script(
mu = 63;
sigma = 3.2;
Pen Color( "Red" );
Y Function( Normal Density( (x - mu) / sigma ) / (40 / 12), x );
mu = 51.5;
sigma = .87;
Pen Color( "Blue" );
Y Function( Normal Density( (x - mu) / sigma ) / (40 / 2), x );
);

Le code contenu dans la fonction Add Graphics Script() est le même code que vous ajouteriez au script si vous choisissez l'option Personnaliser...
Re : Comment tracer des courbes d'ajustement de pic individuelles sur un histogramme (mélange de 2 normaux ajusté)Salut, hein,
J'ai vu l'option permettant d'afficher l'ajustement global de la courbe mais pas les pics individuels.Voici ce que je veux afficher (excusez mon dessin grossier) :

Merci!
Re : Comment tracer des courbes d'ajustement de pic individuelles sur un histogramme (mélange de 2 normaux ajusté)Cette plate-forme de distribution peut montrer l'ajustement de la courbe :

dt = New Table( "Two Peaks",
Add Rows( 500 ),
New Column( "Column 1",
Numeric, "Continuous", Format( "Best", 12 ),
Formula(
If( Random Uniform() > 0.3,
Random Normal( 5 ),
Random Normal( 10 )
)
)
)
);
dist =Distribution(
Continuous Distribution(
Column( :Column 1 ),
Fit Distribution( Normal Mixtures( Clusters( 2 ) ) )
)
);