Hola a todos,
Para orientarlo rápidamente: estoy trabajando con datos ELISA (curva de dosis-respuesta), de modo que mi variable independiente es el factor de dilución, mi variable dependiente es la absorbancia y tengo múltiples puntos de tiempo que estoy observando para múltiples animales. Me gustaría poder encontrar la EC50 - dilución en la mitad de la respuesta máxima - con un ajuste de curva no lineal, sigmoidal. Actualmente estoy usando un modelo de 4 parámetros (Probit 4P).
Básicamente, me gustaría escribir un script que pueda obtener los datos de las estimaciones de los parámetros en una tabla, encontrar el punto intermedio entre las asíntotas superior e inferior para cada curva y luego usar ese valor en una predicción inversa personalizada para obtener el EC50. ¡Estoy bastante seguro de que puedo hacer las dos segundas partes si pudiera obtener las estimaciones del parámetro dang!
Esto es lo que tengo para el ajuste de la curva:
For ( i = 1, i <= N items (Mice), i++,
FC = Fit Curve (
Y ( :Data ),
X (:Dilution ),
Group (:Timepoint),
By(:Animal)
Fit Probit 4P,
Where (:Animal == eval(Mouse_names[i])), //thist isn't referencing the variable the way i expect but using either eval( ) or char( ) seems to be a work-around?...
SendToReport(
Dispatch(
{"Plot"},
"7",
ScaleBox,
{Format( "Fixed Dec", 12, 0 ), Min( 0 ), Max( 4 ), Inc( 2 ),
Minor Ticks( 0 )}
),
Dispatch(
{"Plot"},
"6",
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 12 ), Min( 0.0000001 ),
Max( 0.1 ), Inc( 2 ), Minor Ticks( 0 )}
),
Dispatch(
{"Plot"},
"13",
ScaleBox,
{Format( "Fixed Dec", 12, 0 ), Min( 0 ), Max( 4 ), Inc( 2 ),
Minor Ticks( 0 )}
),
Dispatch(
{"Plot"},
"16",
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 12 ), Min( 0.0000001 ),
Max( 0.1 ), Inc( 2 ), Minor Ticks( 0 )}
),
Dispatch(
{"Probit 4P", "Plot"},
"7",
ScaleBox,
{Format( "Fixed Dec", Use thousands separator( 1 ), 12, 0 ), Min( 0 ),
Max( 4 ), Inc( 2 ), Minor Ticks( 0 )}
),
Dispatch(
{"Probit 4P", "Plot"},
"6",
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 12 ), Min( 0.0000001 ),
Max( 0.1 ), Inc( 2 ), Minor Ticks( 0 )}
),
Dispatch(
{"Probit 4P", "Plot"},
"13",
ScaleBox,
{Format( "Fixed Dec", Use thousands separator( 1 ), 12, 0 ), Min( 0 ),
Max( 4 ), Inc( 2 ), Minor Ticks( 0 )}
),
Dispatch(
{"Probit 4P", "Plot"},
"16",
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 12 ), Min( 0.0000001 ),
Max( 0.1 ), Inc( 2 ), Minor Ticks( 0 )}
)
)
);
FC << journal;
FC << close window;);
Eso funciona bien para mí y tengo la salida de una revista con cada curva de ajuste con la comparación del modelo, el gráfico de los datos, la información del modelo (incluido el modelo de predicción, el resumen del ajuste, las estimaciones de los parámetros * ~ * * *, la correlación de las estimaciones). , covarianza de la estimación, y gráficos de la curva modelada). Puedo hacer clic con el botón derecho manualmente en las estimaciones de los parámetros y en "Crear tabla de datos combinados", pero no sé cómo hacerlo en un script. Idealmente, solo tendría una tabla de datos al final con columnas para Animal, Parámetro (tasa de crecimiento, punto de inflexión, asíntota inferior, asíntota superior) Grupo (estos son mis puntos de tiempo), Cálculo, Error estándar, 95% inferior, Superior 95%.
Cualquier ayuda sería muy apreciada! ¡Gracias!
Utilizar
jrn["Correlation of Estimates"][MatrixBox(1)] << Make Combined Data Table;
Vaya al Menú principal> Ayuda> Libros> Guía de secuencias de comandos de JMP, luego abra el PDF y desplácese hasta el Capítulo 11, Mostrar árboles.
Un informe JMP es una lista de cuadros de visualización anidados. Esto le mostrará cómo encontrar objetos y enviar mensajes.
jrn << show tree structure;
//or right click on a reveal button to the left of an outline box
// then select Edit, Show Tree Structure
¡Increíble! Muchas gracias por la respuesta, ¡definitivamente funciona para lo que necesito! Todavía estoy intentando averiguar qué sucede debajo de su código para poder usarlo en diferentes aplicaciones en el futuro.
¿Se trata simplemente de indexar el diario por nombre, especificando que sí quiero el cuadro de tabla y hacer una nueva tabla de datos?
He visto otras respuestas como
dt2 = bivRep [1] [TableBox(3)] << Make Combined Data Table;
pero no podía entender lo que realmente estaba pasando. ¿Tomaría éste el tercer cuadro de la tabla que se encuentra en la primera sección (?) De bivRep y escribe en un nuevo dt?
Estoy explorando un poco pero más y pude obtener el Resumen de ajuste con
jrn["Summary of Fit"][Table Box (1)] << Make Combined Data Table;
pero no pudo descubrir cómo hacer algo como obtener la correlación de estimaciones para la semana 5.
Lo intenté:
covar_pre = jrn["Covariance of Estimates"]["Week 5"][Table Box(1)] << Make Combined Table;
Y consiguió el error:
Cannot subscript Display Box{400} in access or evaluation of 'Subscript' , jrn["Covariance of Estimates"]["pre"][/*###*/Table Box( 1 )]
In the following script, error marked by /*###*/
paramEst = jrn["Covariance of Estimates"]["Week 5"][/*###*/Table Box( 1 )] <<
Make Combined Data TableSupongo que * esta * salida no es un cuadro de tabla? No estoy seguro de qué tipo de datos son y no estoy seguro de cómo resolverlos.
Hola,
Una vez que tenga un identificador de su diario, puede navegar por el diario como se muestra a continuación (similar a la publicación de @ gzmorgan0 ) para generar la tabla de datos de estimaciones de parámetros combinadas.
jrn = Current Journal();
paramEst = jrn["Parameter Estimates"][Table Box( 1 )] << Make Combined Data Table;
¡Espero que esto sea útil!
Aquí hay un ejemplo, no exactamente su ejemplo específico (este ejemplo utiliza By). No conozco su experiencia en navegar por una ventana de informe.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Nonlinear Examples/Bioassay.jmp" );
obj = Fit Curve( Y( :Toxicity ), X( :log Conc ), By( :formulation ) );
obj << Fit Logistic 4P( Custom Inverse Prediction( Response( 0.9 ) ) );
//you can get one table using Make Combined Data Table
est_tbl= report(obj[1])["Parameter Estimates"][TableBox(1)] << Make Combined Data Table;
est_tbl << Set Name("Parameter Estimates");
inv_tbl = report(obj[1])["Inverse Prediction"]["Predicted Values"][TableBox(1)] << Make Combined Data Table;
inv_tbl << Set Name("Inverse Prediction");
Espero que esto ayude.