Salut tout le monde,
Pour vous orienter rapidement : je travaille avec des données ELISA (courbe dose-réponse), donc ma variable indépendante est le facteur de dilution, ma variable dépendante est l'absorbance, et j'ai plusieurs points dans le temps que je regarde pour plusieurs animaux. J'aimerais pouvoir trouver l'EC50 - dilution à la moitié de la réponse maximale - avec un ajustement de courbe non linéaire, sigmoïde. J'utilise actuellement un modèle à 4 paramètres (Probit 4P).
Fondamentalement, j'aimerais écrire un script qui peut obtenir les données des estimations de paramètres dans une table, trouver le point médian entre les asymptotes supérieure et inférieure pour chaque courbe, puis utiliser cette valeur dans une prédiction inverse personnalisée pour obtenir le EC50. Je suis presque sûr que je peux faire les deux deuxièmes parties si je pouvais juste obtenir les estimations des paramètres dang !
Voici ce que j'ai pour l'ajustement de la courbe :
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;);
Cela fonctionne bien pour moi et j'ai la sortie d'un journal avec chaque courbe d'ajustement avec la comparaison du modèle, le tracé des données, les informations sur le modèle (y compris le modèle de prédiction, le résumé de l'ajustement, * ~ * les estimations de paramètres * ~ *, la corrélation des estimations , covariance de l'estimation et tracés de la courbe modélisée).Je peux manuellement cliquer avec le bouton droit sur les estimations de paramètres et "Make Into Combined Data Table" mais je ne sais pas comment le faire dans un script.Idéalement, je n'aurais qu'un seul tableau de données à la fin avec des colonnes pour Animal, Paramètre (taux de croissance, point d'inflexion, asymptote inférieure, asymptote supérieure) Groupe (ce sont mes points de temps), Estimation, Erreur Std, Inférieur 95%, Supérieur 95 %.
Toute aide serait grandement appréciée! Merci!
Utiliser
jrn["Correlation of Estimates"][MatrixBox(1)] << Make Combined Data Table;
Accédez à Menu principal > Aide > Livres > Guide de script JMP, puis ouvrez le PDF et faites défiler jusqu'au Chapitre 11, Afficher les arborescences.
Un rapport JMP est une liste de zones d'affichage imbriquées.Cela vous montrera comment trouver des objets et envoyer des messages.
jrn << show tree structure;
//or right click on a reveal button to the left of an outline box
// then select Edit, Show Tree Structure
Génial!Merci beaucoup pour la réponse - cela fonctionne exactement pour ce dont j'ai besoin !! J'essaie toujours de comprendre ce qui se passe sous votre code afin de pouvoir l'utiliser dans différentes applications à l'avenir.
S'agit-il simplement d'indexer le journal par son nom, en précisant que je veux la boîte de table et en créant une nouvelle table de données ?
J'avais vu d'autres réponses comme
dt2 = bivRep [1] [TableBox(3)] << Make Combined Data Table;
mais n'arrivait pas à comprendre ce qui se passait vraiment. Celui-ci prendrait-il la troisième case de table trouvée dans la première section (?) de bivRep et l'écrirait-elle dans un nouveau dt ?
J'explore un peu mais plus et j'ai pu obtenir le résumé de Fit avec
jrn["Summary of Fit"][Table Box (1)] << Make Combined Data Table;
mais je n'ai pas trouvé comment faire quelque chose comme obtenir la corrélation des estimations pour la semaine 5.
J'ai essayé:
covar_pre = jrn["Covariance of Estimates"]["Week 5"][Table Box(1)] << Make Combined Table;
Et a obtenu l'erreur:
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 TableJe suppose que * cette * sortie n'est pas une boîte de table ? Je ne sais pas de quel type de données il s'agit et je ne sais pas comment les comprendre.
Bonjour,
Une fois que vous avez une poignée pour votre journal, vous pouvez naviguer dans le journal comme indiqué ci-dessous (similaire à la publication par @gzmorgan0 ) pour générer le tableau de données des estimations de paramètres combinées.
jrn = Current Journal();
paramEst = jrn["Parameter Estimates"][Table Box( 1 )] << Make Combined Data Table;
J'espère que ceci est utile!
Voici un exemple, pas exactement votre exemple spécifique (cet exemple utilise By). Je ne connais pas votre expertise dans la navigation dans une fenêtre de rapport.
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");
J'espère que cela t'aides.