Calcolo e compilazione di pendenze per casi multipli con vari numeri di osservazioniCiao,
So che l'argomento del calcolo della pendenza lineare è stato discusso in precedenza ma non sono riuscito a trovare un modo efficiente per creare un output tabulato di Slopes per un insieme di Casi (es. Pazienti) per i quali ho un numero variabile di obervazioni in funzione del tempo.
Ecco una schermata dei dati (mock, il file attuale è allegato):
Mock data for SLOPE calculationDati fittizi per il calcolo SLOPE
Seguendo il consiglio delle discussioni precedenti in questo forum, ho usato il Fit Y di X (Cambia in misura per tempo) usando Patient_ID come By variabile e tracciare un adattamento lineare con vincoli di intercettazione su 0:
Uscita: 5 analisi identiche a quella qui sotto:

Dove sono bloccato è come raccogliere il Preventivo del Pendio in una nuova tabella che potrebbe apparire come:
| Patient_ID | pendenza |
| AAA | m1 |
| BBB | m2 |
| CCC | m3 |
| DDD | m4 |
| EEE | m5 |
Qualsiasi suggerimento sarebbe benvenuto: non sono collegato al formato dati originale o al metodo di analisi.
Grazie
Ri: Calcolo del pendio e compilazione per casi multipli con vari numeri di osservazioniControlla la struttura ad albero e la versione di JMP. Il mio codice funziona in JMP 11.2.1, 12.2.0 e 13.1.0. A volte ci sono differenze nelle strutture sottostanti quando si passa da una versione all'altra. Se vedi un pattern regolare nelle caselle di inserimento dei numeri (es. 7, 22, 37, 52, 67) puoi costruirlo nel loop.
Ri: Calcolo del pendio e compilazione per casi multipli con vari numeri di osservazioniAnche uno script può estrarre le stime utilizzando diverse tecniche. L'approccio di iterazione comune diventa ingombrante a causa dei gruppi By, ma può essere diretto, anche se solo forza bruta. Una soluzione più elegante userebbe una singola query XPath nell'albero di visualizzazione dei report per recuperare tutte le inclinazioni come un vettore. Al momento non ho tempo per cercare la sintassi esatta ma sarebbe facile, dettagli a parte. Qualcosa come questo:
plat << XPath( "//NumberColBox[NumberColBoxHeader=\!"Estimate\!"]" ) << Get( 2 );
Ri: Calcolo del pendio e compilazione per casi multipli con vari numeri di osservazioniGrazie: mi dimentico sempre di questa caratteristica molto carina
Ri: Calcolo del pendio e compilazione per casi multipli con vari numeri di osservazioniCiao,
Grazie per la tua rapida risposta: è quello che stavo cercando con l'eccezione che il "recupero" del parametro_estimate dal report di plottaggio non funziona perché NumberColBox (7) funziona solo per il primo grafico, i seguenti grafici hanno il loro corrispondente NumberColBox 23, 37 e così via.
Non sono sicuro su come iterare attraverso la chiamata NumberColBox.
qualche idea?
Grazie
TS
Ri: Calcolo del pendio e compilazione per casi multipli con vari numeri di osservazioniHai scoperto il Di gruppo di ruolo i dati per l'analisi di regressione separata. (Spero che tu sappia premere e tenere premuto il tasto Ctrl prima di fare clic sul triangolo rosso e selezionare il comando Adatta linea!) Ora fai clic destro sulla tabella delle stime dei parametri e seleziona Crea tabella dati combinati.
Ri: Calcolo del pendio e compilazione per casi multipli con vari numeri di osservazioniQuesto codice farà il trucco. Il "segreto" è guardare la struttura ad albero sottostante dell'output, convertita in un report.
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;
);