Ciao a tutti,
Per orientarti rapidamente: sto lavorando con i dati ELISA (curva dose-risposta), quindi la mia variabile indipendente è il fattore di diluizione, la mia variabile dipendente è l'assorbanza e ho più punti temporali che sto osservando per più animali. Mi piacerebbe essere in grado di trovare la EC50 - diluizione alla metà della massima risposta - con un adattamento non lineare, sigmoidale, della curva. Attualmente sto usando un modello a 4 parametri (Probit 4P).
Fondamentalmente, mi piacerebbe scrivere uno script che possa ottenere i dati dalle stime dei parametri in una tabella, trovare il punto intermedio tra gli asintoti superiore e inferiore per ogni curva, e quindi usare quel valore in una previsione inversa personalizzata per ottenere EC50. Sono abbastanza sicuro di poter fare le seconde due parti se solo potessi ottenere le stime dei parametri dang!
Ecco cosa ho per il montaggio della 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;);
Funziona bene per me e ho l'output di un diario con ogni curva di adattamento con il confronto del modello, la trama dei dati, le informazioni sul modello (compresi il modello di predizione, il riepilogo dell'adattamento, le stime dei parametri * ~ * * ~ *, la correlazione delle stime , covarianza della stima e grafici della curva modellata). Posso fare clic con il tasto destro del mouse sulle stime dei parametri e su "Crea una tabella dati combinata" ma non so come farlo in uno script. Idealmente, avrei solo una tabella dati alla fine con colonne per Animal, Parametro (tasso di crescita, punto di flesso, asintoto inferiore, asintoto superiore) Gruppo (questi sono i miei punti temporali), Stima, Errore Std, Inferiore al 95%, Superiore 95%.
Qualsiasi aiuto sarebbe molto apprezzato! Grazie!
Uso
jrn["Correlation of Estimates"][MatrixBox(1)] << Make Combined Data Table;
Passare a Menu principale> Guida> Libri> Guida allo scripting JMP, quindi aprire il PDF e scorrere fino a Capitolo 11, Visualizza alberi.
Un report JMP è un elenco di finestre di visualizzazione annidate. Questo ti mostrerà come trovare oggetti e inviare messaggi.
jrn << show tree structure;
//or right click on a reveal button to the left of an outline box
// then select Edit, Show Tree Structure
Eccezionale! Grazie mille per la risposta - funziona in modo definitivo esattamente per quello di cui ho bisogno !! Sto solo ancora cercando di capire cosa sta succedendo sotto il tuo codice in modo da poterlo usare in diverse applicazioni in futuro.
È solo indicizzando il diario per nome, specificando che voglio la casella di tabella e creare una nuova tabella di dati?
Ho visto altre risposte come
dt2 = bivRep [1] [TableBox(3)] << Make Combined Data Table;
ma non riuscivo a capire cosa stesse realmente succedendo. Questo dovrebbe prendere la terza casella di tabella trovata nella prima sezione (?) Di bivRep e scrivere a un nuovo dt?
Sto esplorando un po 'di più e sono riuscito a ottenere il Riassunto delle misure
jrn["Summary of Fit"][Table Box (1)] << Make Combined Data Table;
ma non riuscivo a capire come fare qualcosa come ottenere la correlazione delle stime per la settimana 5.
Provai:
covar_pre = jrn["Covariance of Estimates"]["Week 5"][Table Box(1)] << Make Combined Table;
E ha ottenuto l'errore:
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 TableImmagino che * questo * output non sia una scatola da tavolo? Non sono sicuro di quale tipo di dati sia e non sono sicuro di come capirlo.
Ciao,
Una volta che hai un handle per il tuo diario, puoi navigare sul diario come mostrato di seguito (simile al post di @ gzmorgan0 ) per generare la tabella di dati delle stime dei parametri combinate.
jrn = Current Journal();
paramEst = jrn["Parameter Estimates"][Table Box( 1 )] << Make Combined Data Table;
Spero che questo sia utile!
Ecco un esempio, non esattamente il tuo esempio specifico (questo esempio usa By). Non conosco la tua esperienza nella navigazione di una finestra di rapporto.
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");
Spero che questo ti aiuti.