come confrontare le righe con 0 e 1 per scoprire la prevalenza e il raggruppamento di due condizioni mediche?Ciao, sono un utente nuovo e inesperto di JMP che lavora alla mia tesi di dottorato. Semplicemente non riesco a trovare come confrontare una parte dei miei dati e ho bisogno di assistenza. I miei dati sono costituiti da 146 colonne con 1 o 0 (sì/no) rispettivamente per 146 condizioni mediche. Ho circa 14000 righe (pazienti) da cui confrontare questi dati. Devo trovare l'ordine per le combinazioni più comuni per due condizioni mediche nella stessa persona. Come lo posso fare?
molto grato per l'aiuto,
Emma
AnalisiRe: come confrontare le righe con 0 e 1 per scoprire la prevalenza e il raggruppamento di due condizioni mediche?Ho creato uno script di esempio, che genera una tabella dati di esempio su cui eseguire l'analisi.Sto solo creando 100 righe di dati perché ci vuole un po' di tempo per creare le coppie di dati.La tabella risultante fornisce il conteggio del numero di pazienti in cui è stata trovata ciascuna combinazione di condizioni mediche.

Lo script impiegherà un bel po' di tempo se lo esegui su tutti i 14000 pazienti contemporaneamente.Puoi facilmente eseguirlo su sottoinsiemi di dati e quindi combinare le tabelle risultanti.
Names Default To Here( 1 );
dt = New Table( "raw Data" );
dt << add rows( 100 );
dt << New Column( "Patient", set each value( Row() ) );
Try( dt << delete columns( "Column 1" ) );
For( i = 1, i <= 146, i++,
dt << New Column( "Med Cond " || Char( i ),
set each value( Round( Random Uniform( 0, 1 ), 0 ) )
)
);
// Create the paired data table
dtPair = New Table( "Pairs",
New Column( "Patient" ),
New Column( "First Med Cond", Character ),
New Column( "Second Med Cond", Character )
);
//Populate the Pairs Table
For( theRow = 1, theRow <= N Rows( dt ), theRow++,
For( theFirstCond = 2, theFirstCond <= N Cols( dt ), theFirstCond++,
If( Column( dt, theFirstCond )[theRow] == 1,
thePatient = dt:Patient[theRow];
firstCond = (Column( dt, theFirstCond )) << get name;
For( theSecondCond = theFirstCond + 1, theSecondCond <= N Cols( dt ),
theSecondCond++,
If( Column( dt, theSecondCond )[theRow] == 1,
dtPair << add row( 1 );
pairRow = N Rows( dtPair );
dtPair:Patient[pairRow] = thePatient;
dtPair:First Med Cond[pairRow] = firstCond;
dtPair:Second Med Cond[pairRow] = (Column( dt, theSecondCond )) << get name;
)
);
)
)
);
dtSummary = dtPair << Summary(
Group( :First Med Cond, :Second Med Cond ),
Freq( "None" ),
Weight( "None" )
);
dtSummary << sort( by(N Rows), order(descending), replace table(11));Re: come confrontare le righe con 0 e 1 per scoprire la prevalenza e il raggruppamento di due condizioni mediche?Succede che " l'ordine per le combinazioni più comuni per due condizioni mediche nella stessa persona " potrebbe implicare alcuni obiettivi di analisi diversi. Ma, qualunque sia l'analisi implicita, consiglierei vivamente di dare un'occhiata prima a cosa c'è "nei" tuoi dati.
Un approccio sarebbe quello di utilizzare "Cols > Utilità > Combina colonne..." per creare una nuova colonna contenente lo stato di ciascun paziente per ogni condizione. Quindi puoi utilizzare "Grafico> Generatore di grafici" per creare una mappa ad albero di questa nuova colonna e ispezionare i risultati tramite il suggerimento. Se non sei sicuro dei dettagli su come farlo, prova il documentazione in linea . Tieni presente che, con così tante condizioni, questo potrebbe essere solo un disastro.
Come nuovo utente, probabilmente non sei interessato allo scripting. Ma lo script seguente simula alcuni dati e crea la mappa ad albero. A causa della casualità, ciò che vedi può essere diverso ogni volta. Ma l'esecuzione di questo codice dovrebbe produrre un grafico come:

Per eseguire lo script, fai 'File > Nuovo > Nuovo script', incolla il codice nella finestra che appare, quindi fai 'Modifica > Esegui script'.
NamesDefaultToHere(1);
// Generate some fake binary data for each condition (maximum possible incidence for one condition is 20% of the patients):
// This is unrepresentative since the incidences of the conditions are treated as independent, but the in practice this may not
// be the case
nr = 1400; // Number of patients
nc = 15; // Number of conditions
m = J(nr, nc, 0);
for(c=1, c<=nc, c++,
incidence = RandomInteger(0, Round(0.2 * nr));
m[RandomIndex(nr, incidence), c] = 1;
);
dt = asTable(m);
dt << setName("Fake Incidence Data");
// Use 'Combine Columns' to make a binary string for each patient indicating what conditions they have
cols = dt << getColumnNames;
dt << combineColumns(columns(Eval(cols)), ColumnName("Patient Condition"), Delimiter( "" ), MultipleResponse(0));
// Make a Treemap of the patient conditions
dt << Graph Builder(
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :Patient Condition ) ),
Elements( Treemap( X, Legend( 1 ) ) )
);
// Aggregate the patient comnditions to a new table and sort it (descending)
//dt2 = dt << Summary(Group(:Patient Condition));
//dt2 << Sort(By(:N Rows), ReplaceTable, Order(Descending));
Re: come confrontare le righe con 0 e 1 per scoprire la prevalenza e il raggruppamento di due condizioni mediche?Ciao @EmmaLT ,
Penso di avere un'idea di come fare ciò che stai chiedendo, ma sarebbe utile se potessi condividere alcuni dei tuoi dati: puoi renderli anonimi se necessario. Non è necessario che sia l'intero set di dati, solo un sottoinsieme in modo da poter capire meglio come sono strutturati i dati in quanto ciò potrebbe influire su come eseguire l'analisi.
DS