Pico de una distribución de probabilidadHola
Tengo un conjunto de datos que se adapta mejor a la distribución de Johnson Su y me preguntaba si hay alguna manera de estimar el valor del pico de esta distribución. Tiene un solo pico, que es bastante diferente de la mediana o la media. Llamar a este "modo" podría ser la mejor solución posible aquí, pero ¿cómo calculo este punto?
Re: Pico de una distribución de probabilidad¿Se puede ampliar la opción de perfil para distribución de datos que estén agrupados? Para N grupos, es necesario obtener la moda correspondiente a la distribución de cada uno de los elementos del grupo. ¿O debería subdividir por grupo cada vez y luego usar la opción de generación de perfiles? Utilicé la col groupby y luego la ajusté, pero parece que proporciona un valor único para todo el conjunto de datos y no para cada miembro del grupo.
Re: Pico de una distribución de probabilidadTienes una solución usando el generador de perfiles que funcionará. En cuanto a los scripts que no le funcionan, este artículo destaca algunos de los cambios realizados en las funciones Maximizar y Minimizar. ¡Gracias al equipo de soporte técnico de JMP por indicármelo!
https://community.jmp.com/t5/JMPer-Cable/Minimize-and-Maximize-Functions-in-JSL/ba-p/36355
Re: Pico de una distribución de probabilidad¡El método de Laura es más ordenado! Y mucho menos propenso a errores. Siempre es mejor dejar que JMP haga el trabajo por usted si puede encontrar una manera.
Re: Pico de una distribución de probabilidadUna de las cosas que me encanta de JMP es que a menudo ofrece muchas formas de resolver un problema.Todas las sugerencias anteriores para encontrar la moda de la densidad Johnson SU ajustada para los datos son excelentes, pero aquí hay una opción más que utiliza Profiler.
Una vez que haya utilizado Distribución para ajustar la distribución Johnson Su a sus datos, puede elegir Guardar fórmula de densidad desde el Equipado Johnson Su menú.Esto guarda la fórmula de densidad de Johnson Su en una columna de su tabla de datos.

A continuación puede abrir el Profiler eligiendo Gráfico>>Perfilador .Plantea tu fórmula de densidad como la Y, fórmula de predicción y haga clic en Aceptar.A continuación encienda el Funciones de deseabilidad de Perfilador de predicción menú.Después de eso tu eliges Maximizar la deseabilidad desde el Perfilador de predicción menú.Esto encontrará la moda (máxima) de su densidad Johnson Su para estos datos.

Re: Pico de una distribución de probabilidad¡Muchas gracias! 
Re: Pico de una distribución de probabilidadNo tengo ningún problema con los datos de esta columna. Aquí hay una nueva versión que evita tener que ingresar manualmente las estimaciones de los parámetros, tomando prestada la solución 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 ) );
Me sale este resultado con tus datos:


Entonces no son los datos ni el script, debe ser JMP (instalación).
Re: Pico de una distribución de probabilidadLa optimización tampoco funciona en la tabla de datos de muestra. Además, utilicé el script de Ian, que es completamente independiente de mis datos. Entonces debe haber algún problema con la instalación, como usted lo señaló. ¿Debo reinstalar JMP ahora?
Adjunto la columna de datos de todos modos.
Re: Pico de una distribución de probabilidadNo veo nada malo en el script de Ian ni en el mío, por lo que deja la tabla de datos o la instalación de JMP. Comencemos con la tabla de datos. ¿Puedes compartirlo? Si es así, identifique la columna de datos que utilizó. En realidad, sólo necesitamos la columna de datos que está causando el problema. Puedes eliminar el resto si te resulta mejor.
¡Gracias!
Re: Pico de una distribución de probabilidadNo funcionó para su secuencia de comandos ni para mi conjunto de datos. Lo mismo con el guión de Ian, dice
"Error de optimización: error: no se puede reducir la función objetivo".
Así que seguí adelante con la solución de Bill, pero la considero sólo como una solución temporal para mi problema.
Re: Pico de una distribución de probabilidad¿Estás diciendo que el script de mi solución no funcionó con el ejemplo original que publicaste (como lo hizo conmigo) o que no funcionó con un nuevo conjunto de datos? Si es el último caso, ¿puedes compartir los datos?
¿Probaste el guión de Ian?
Re: Pico de una distribución de probabilidadEl método de Mark es genial. Aquí hay una alternativa que usa la función directamente:
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);
('A ojo' parece funcionar, pero no hay pruebas, por supuesto).
Re: Pico de una distribución de probabilidadGracias por la respuesta. Pero de alguna manera no me funciona. Dice
"Error de optimización: Error: se excedieron el máximo de iteraciones"
Estoy usando JMP 12, tal vez el optimizador tenga una funcionalidad limitada.
Re: Pico de una distribución de probabilidadSólo para agregar.
La forma de Mark es realmente la mejor manera de obtener el valor máximo, pero para obtener una forma rápida de obtener un valor estimado, puede ajustar la curva y luego usar la herramienta JMP Crosshairs que se encuentra en el menú Herramientas o en la barra de menú. Haga clic en la herramienta y luego coloque el símbolo de la mira en el lugar que crea que representa mejor el pico y aparecerá un valor. Si está utilizando JMP 13, obtendrá una lupa con la herramienta Cruz que lo ayudará a acercarse.
HT
Re: Pico de una distribución de probabilidadLamentablemente, la plataforma de distribución no proporciona el modo para una función analítica. Busqué pero tampoco pude encontrar la fórmula para la moda de una distribución de Johnson.
Otro enfoque es utilizar el optimizador numérico JMP para buscar la solución. Mi enfoque es utilizar el Maximizar() función para encontrar la densidad máxima de la distribución ajustada, que corresponde al pico, y luego usar la Minimizar() función para encontrar el cuantil que produce una probabilidad más cercana al máximo. Aquí está la solución en pasos que coinciden con lo que está intentando hacer.
- Abrí el ejemplo de moldeo por inyección desde el directorio de datos de muestra.
- Abrí la plataforma de Distribución en la columna de datos de Contracción.
- Ajusté la distribución de Johnson SU para obtener las estimaciones de los parámetros de Johnson SU.
- Escribí un guión con dos pasos descritos anteriormente para encontrar la ubicación máxima.
Aquí está la distribución ajustada:

.El guión es:
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 ) );
Observe que las estimaciones se copian en la llamada a la función, que se usa dos veces.
Aquí está el resultado en el Registro:

No se alarme por todos los mensajes: ¡funcionó muy bien! Puedes ver el resultado en la parte inferior.