Calcul de pente et compilation pour plusieurs cas avec un nombre d'observations variableSalut,
Je sais que le sujet du calcul de la pente linéaire a déjà été abordé, mais je n’ai pas trouvé de moyen efficace de créer une sortie sous forme de tableau de pistes pour un ensemble de cas (c.-à-d. Patients) pour lesquels j'ai un nombre variable d'observations en fonction du temps.
Voici une capture d'écran des données (fictive; le fichier réel est joint):
Mock data for SLOPE calculationDonnées simulées pour le calcul de la pente
Suivant les conseils des discussions précédentes dans ce forum, j'ai utilisé l'ajustement Y par X (modification de la mesure en fonction du temps) en utilisant Patient_ID comme variable et en traçant un ajustement linéaire avec une interception contrainte à 0:
Ouput: 5 analyses identiques à celle ci-dessous:

Où suis-je coincé? Comment collecter l’estimation de la pente dans un nouveau tableau qui ressemble à ceci:
| Patient_ID | Pente |
| AAA | m1 |
| BBB | m2 |
| CCC | m3 |
| DDD | m4 |
| EEE | m5 |
Toute suggestion serait la bienvenue: je ne suis pas attaché au format de données original ni à la méthode d’analyse.
Merci
Re: Calcul de pente et compilation pour plusieurs cas avec un nombre d'observations variableVérifiez l’arborescence et la version de JMP. Mon code fonctionne dans JMP 11.2.1, 12.2.0 et 13.1.0. Parfois, il existe des différences dans les structures sous-jacentes lors du passage d’une version à l’autre. Si vous voyez un motif régulier dans les zones de nombre de colonnes (par exemple 7, 22, 37, 52, 67), vous pouvez l'intégrer dans la boucle.
Re: Calcul de pente et compilation pour plusieurs cas avec un nombre d'observations variableUn script pourrait également extraire les estimations en utilisant plusieurs techniques différentes. L'approche courante par itérations devient lourde en raison des groupes Par, mais peut être simple, ne serait-ce que par la force brutale. Une solution plus élégante utiliserait une seule requête XPath dans l'arborescence d'affichage du rapport pour extraire toutes les pentes sous forme de vecteur. Je n'ai pas le temps pour le moment de rechercher la syntaxe exacte, mais ce serait facile, à part les détails. Quelque chose comme ça:
plat << XPath( "//NumberColBox[NumberColBoxHeader=\!"Estimate\!"]" ) << Get( 2 );
Re: Calcul de pente et compilation pour plusieurs cas avec un nombre d'observations variableMerci: j'oublie toujours cette fonctionnalité très soignée
Re: Calcul de pente et compilation pour plusieurs cas avec un nombre d'observations variableSalut,
Merci pour votre réponse rapide: c’est ce que je recherchais à l’exception que la "récupération" de l’estimation_paramètre à partir du rapport multi-parcelles ne fonctionne pas car NumberColBox (7) ne fonctionne que pour le premier tracé, les tracés suivants ont leur correspondant NumberColBox 23, 37 et ainsi de suite.
Je ne suis pas sûr de savoir comment parcourir par l'appel NumberColBox.
Des pensées?
Merci
TS
Re: Calcul de pente et compilation pour plusieurs cas avec un nombre d'observations variableVous avez découvert le Par groupe de rôles les données pour une analyse de régression séparée. (J'espère que vous savez appuyer sur la touche Ctrl et la maintenir enfoncée avant de cliquer sur le triangle rouge et de sélectionner la commande Ajuster la ligne!) Cliquez maintenant avec le bouton droit de la souris sur le tableau Estimations de paramètres et sélectionnez Créer un tableau de données combinées.
Re: Calcul de pente et compilation pour plusieurs cas avec un nombre d'observations variableCe code fera l'affaire. Le "secret" consiste à examiner la structure arborescente sous-jacente de la sortie, convertie en rapport.
dt = data table("SLOPE_Calculation_mock_data");
bv = dt << Bivariate(
Y( :Change in Measure ),
X( :Time ),
Fit Line( {Line Color( {213, 72, 87} )} ),
By( :Patient_ID )
);
// Figure out how many patients there are
dtab = dt << Tabulate(
Show Control Panel( 0 ),
Add Table( Row Table( Grouping Columns( :Patient_ID ) ) ),
invisible
);
pdt = dtab << Make Into Data Table;
np = nrows(pdt);
patient_list = pdt:Patient_ID << get values;
dtab << close window;
pdt << new column("Slope", numeric, continuous);
bvrep = bv << report;
//bvrep << show tree structure; // Used to get underlying structure
for (i = 1, i <= np, i++,
parameter_estimates = bvrep[i][numbercolbox(7)] << get;
one_slope = parameter_estimates[2];
pdt:Slope[i] = one_slope;
);