Pic d'une distribution de probabilitéSalut
J'ai un ensemble de données qui correspond le mieux à la distribution Johnson Su et je me demandais s'il existait un moyen d'estimer la valeur du pic de cette distribution. Il n'a qu'un seul pic, ce qui est assez différent de la médiane ou de la moyenne. Appeler ce "mode" pourrait être la meilleure solution possible ici, mais comment estimer ce point ?
Re : Pic d'une distribution de probabilitéL'option de profil peut-elle être étendue pour la distribution de données qui est groupée ? Pour N groupes, il faut obtenir le mode correspondant à la distribution de chacun des éléments du groupe. Ou devrais-je créer un sous-ensemble par groupe à chaque fois, puis utiliser l'option de profilage. J'ai utilisé le col groupby puis ajusté, mais il semble qu'il donne une valeur unique pour l'ensemble de données entier et non pour chaque membre du groupe.
Re : Pic d'une distribution de probabilitéVous avez une solution en utilisant le profileur qui fonctionnera. En ce qui concerne les scripts qui ne fonctionnent pas pour vous, cet article met en évidence certaines des modifications apportées aux fonctions Maximize et Minimize. Merci à l'équipe d'assistance technique de JMP de me l'avoir signalé !
https://community.jmp.com/t5/JMPer-Cable/Minimize-and-Maximize-Functions-in-JSL/ba-p/36355
Re : Pic d'une distribution de probabilitéLa méthode de Laura est plus soignée ! Et beaucoup moins sujet aux erreurs. Il est toujours préférable de laisser JMP faire le travail pour vous si vous pouvez trouver un moyen.
Re : Pic d'une distribution de probabilitéL'une des choses que j'aime dans JMP, c'est qu'il vous offre souvent de nombreuses façons de résoudre un problème.Toutes les suggestions précédentes pour trouver le mode de la densité Johnson SU ajustée pour les données sont excellentes, mais voici une autre option qui utilise le Profiler.
Une fois que vous avez utilisé Distribution pour ajuster la distribution Johnson Su à vos données, vous pouvez choisir Enregistrer la formule de densité du Equipé Johnson Su menu.Cela enregistre la formule Johnson Su Density dans une colonne de votre table de données.

Ensuite, vous pouvez ouvrir le profileur en choisissant Graphique>>Profiler .Présentez votre formule de densité comme Y, formule de prédiction et cliquez sur OK.Allumez ensuite le Fonctions de désirabilité depuis Profileur de prédiction menu.Après tu choisis Maximiser la désirabilité du Profileur de prédiction menu.Cela trouvera le mode (maximum) de votre densité Johnson Su pour ces données.

Re : Pic d'une distribution de probabilitéMerci beaucoup! 
Re : Pic d'une distribution de probabilitéJe n'ai aucun problème avec les données de cette colonne. Voici une nouvelle version qui évite d'avoir à saisir manuellement les estimations des paramètres, empruntant à la solution de Ian :
Names Default to Here( 1 );
dist = Current Data Table() << Distribution(
Stack( 1 ),
Continuous Distribution(
Column( :T10_100 ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Fit Distribution( Johnson Su )
)
);
estimates = Report( dist )["Fitted Johnson Su"][NumberColBox(1)] << Get As Matrix;
dist expr = Substitute(
Expr(
Johnson Su Density(
q, // quantile
ggg, // gamma or first shape parameter
ddd, // delta or second shape parameter
ttt, // theta or location parameter
sss // sigma or scale parameter
)
),
Expr( ggg ), estimates[1],
Expr( ddd ), estimates[2],
Expr( ttt ), estimates[3],
Expr( sss ), estimates[4]
);
peak height = Maximize( dist expr, { q( 0.01, 70 ) } );
difference = Minimize( peak height - dist expr, { q( 0.01, 70 ) } );
Print( "The peak location is " || Char( q ) );
J'obtiens ce résultat avec vos données:


Ce ne sont donc pas les données ou le script, ce doit être JMP (installation).
Re : Pic d'une distribution de probabilitéL'optimisation ne fonctionne pas non plus dans l'exemple de table de données. De plus, j'ai utilisé le script de Ian qui est complètement indépendant de mes données. Il doit donc y avoir quelque chose qui ne va pas avec l'installation, comme vous l'avez souligné. Dois-je réinstaller JMP maintenant ?
Je joins quand même la colonne de données.
Re : Pic d'une distribution de probabilitéJe ne vois rien de mal avec le script d'Ian ou le mien, ce qui laisse la table de données ou l'installation de JMP. Commençons par le tableau de données. Pouvez-vous le partager? Si oui, veuillez identifier la colonne de données que vous avez utilisée. En fait, nous n'avons besoin que de la colonne de données à l'origine du problème. Vous pouvez supprimer le reste si c'est mieux pour vous.
Merci!
Re : Pic d'une distribution de probabilitéCela n'a pas fonctionné pour votre script et pour mon ensemble de données. Même avec le script de Ian, il dit
"Échec de l'optimisation : Échec : impossible de réduire la fonction objective".
Je suis donc allé de l'avant avec la solution de Bill, mais je considère qu'il ne s'agit que d'une solution temporaire à mon problème.
Re : Pic d'une distribution de probabilitéÊtes-vous en train de dire que mon script de solution n'a pas fonctionné avec l'exemple original que vous avez publié (comme c'était le cas pour moi) ou qu'il n'a pas fonctionné avec un nouvel ensemble de données ? Si c'est le dernier cas, pouvez-vous partager les données ?
Avez-vous essayé le script de Ian ?
Re : Pic d'une distribution de probabilitéLa méthode de Mark est soignée. Voici une alternative qui utilise directement la fonction :
NamesDefaultToHere(1);
ClearLog();
// Make some representative data
dt = NewTable("Johnson Su", NewColumn("Data", Numeric, Continuous, Formula(Random Johnson Su( 5, 2, 1, 1 ))));
dt << addRows(50);
// Fit the data
dist = dt << Distribution(Continuous Distribution( Column( :Data ), Fit Distribution( Johnson Su ) ));
// Get the fitted parameters
params = Report(dist)[NumberColBox(3)] << get;
gamma = params[1]; // Shape
delta = params[2]; // Shape
theta = params[3]; // Location
sigma = params[4]; // Scale
// http://www.mathwave.com/articles/johnson_su_distribution.html
// f(x) = delta/(lambda * Sqrt(2*pi()) * Sqrt(z^2 + 1)) * exp( -1/2*(gamma + delta * ln(z + Sqrt(z^2+1)))^2 );
// where:
// z = (x - eta)/lambda;
// and:
// delta > 0 lambda > 0
jsu = Expr(delta/(lambda * Sqrt(2*pi()) * Sqrt(z^2 + 1)) * exp( -1/2*(gamma + delta * ln(z + Sqrt(z^2+1)))^2 ) );
SubstituteInto(jsu, Expr(z), Expr((x - eta)/lambda));
// Use the fitted parameter values
// Note the change in parameter names! 'lambda' -> 'sigma' and 'eta' -> 'theta'
SubstituteInto(jsu,
Expr(gamma), Eval(gamma),
Expr(delta), Eval(delta),
Expr(eta), Eval(theta),
Expr(lambda), Eval(sigma)
);
// Get upper and lower bounds for the optimisation (either side of the (assumed) single peak)
vals = Column(dt, "Data") << getValues;
low = Quantile(0.25, vals);
high = Quantile(0.75, vals);
// Do the maximization
Maximize(jsu, {x(low, high)}, << Tolerance(10^-10), << showDetails(true));
Print(x);
("À l'œil nu", cela semble fonctionner, mais aucun test bien sûr).
Re : Pic d'une distribution de probabilitéMerci pour votre réponse. Mais d'une manière ou d'une autre, cela ne fonctionne pas pour moi. Ça dit
"Échec de l'optimisation : Échec : nombre maximal d'itérations dépassé"
J'utilise JMP 12, peut-être que l'optimiseur a une fonctionnalité limitée.
Re : Pic d'une distribution de probabilitéJuste pour ajouter.
La méthode de Mark est vraiment la meilleure façon d'obtenir la valeur maximale, mais pour obtenir rapidement une valeur estimée, vous pouvez ajuster la courbe, puis utiliser l'outil JMP Crosshairs trouvé dans le menu Outils ou dans votre barre de menus. Cliquez sur l'outil, puis placez le symbole du réticule à l'endroit qui, selon vous, représente le mieux le pic et une valeur apparaîtra. Si vous utilisez JMP 13, vous obtiendrez une loupe avec l'outil Crosshair qui vous aidera à vous rapprocher.
HTH
Re : Pic d'une distribution de probabilitéMalheureusement, la plate-forme Distribution ne fournit pas le mode d'une fonction analytique. J'ai cherché mais je n'ai pas trouvé non plus la formule du mode d'une distribution de Johnson.
Une autre approche consiste à utiliser l'optimiseur numérique JMP pour rechercher la solution. Mon approche consiste à utiliser le Maximiser() fonction pour trouver la densité maximale de la distribution ajustée, qui correspond au pic, puis utiliser la fonction Minimiser() fonction pour trouver le quantile produit une probabilité la plus proche du maximum. Voici la solution par étapes pour correspondre à ce que vous essayez de faire.
- J'ai ouvert l'exemple de moulage par injection à partir du répertoire de données d'échantillons.
- J'ai ouvert la plateforme Distribution sur la colonne de données Shrinkage.
- J'ajuste la distribution Johnson SU pour obtenir les estimations des paramètres Johnson SU.
- J'ai écrit un script avec deux étapes décrites ci-dessus pour trouver l'emplacement du pic.
Voici la distribution ajustée :

.Le script est :
peak height = Maximize(
Johnson Su Density(
q, // quantile
-25.83224, // gamma or first shape parameter
1.5352821, // delta or second shape parameter
-3.912839, // theta or location parameter
2.5166e-6 // sigma or scale parameter
),
{ q( 0.01, 70 ) }
);
difference = Minimize(
peak height - Johnson Su Density(
q, // quantile
-25.83224, // gamma or first shape parameter
1.5352821, // delta or second shape parameter
-3.912839, // theta or location parameter
2.5166e-6 // sigma or scale parameter
),
{ q( 0.01, 70 ) }
);
Print( "The peak location is " || Char( q ) );
Notez que les estimations sont copiées dans l'appel de fonction, qui est utilisé deux fois.
Voici le résultat dans le journal :

Ne soyez pas alarmé par tous les messages - cela a très bien fonctionné ! Vous pouvez voir le résultat en bas.