comment comparer les lignes avec 0 et 1 pour découvrir la prévalence et le regroupement de deux conditions médicales ?Bonjour, je suis un nouvel utilisateur inexpérimenté de JMP travaillant sur ma thèse de doctorat. Je n'arrive tout simplement pas à savoir comment comparer une partie de mes données et j'ai besoin d'aide. Mes données se composent de 146 colonnes avec 1 ou 0 (oui/non) pour 146 conditions médicales respectivement. J'ai environ 14 000 lignes (patients) pour comparer ces données. J'ai besoin de connaître l'ordre des combinaisons les plus courantes pour deux conditions médicales chez la même personne. Comment puis je faire ça?
très reconnaissant pour l'aide,
Emma
AnalytiqueRe : comment comparer les lignes avec 0 et 1 pour découvrir la prévalence et le regroupement de deux conditions médicales ?J'ai créé un exemple de script, qui génère un exemple de table de données sur laquelle exécuter l'analyse.Je ne crée que 100 lignes de données car cela prend un certain temps pour créer les paires de données.Le tableau résultant fournit le nombre de patients dans lesquels chaque combinaison de conditions médicales a été trouvée.

Le script prendra un certain temps si vous l'exécutez sur les 14 000 patients à la fois.Vous pouvez facilement l'exécuter sur des sous-ensembles de données, puis combiner les tables résultantes.
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 : comment comparer les lignes avec 0 et 1 pour découvrir la prévalence et le regroupement de deux conditions médicales ?Il arrive que " l'ordre des combinaisons les plus courantes pour deux conditions médicales chez la même personne " pourrait impliquer quelques objectifs d'analyse différents. Mais, quelle que soit l'analyse implicite, je recommanderais fortement de jeter d'abord un coup d'œil à ce qui se trouve dans vos données.
Une approche serait d'utiliser "Cols > Utilities > Combine Columns..." pour créer une nouvelle colonne contenant le statut de chaque patient pour chaque condition. Ensuite, vous pouvez utiliser 'Graph> Graph Builder' pour créer un Treemap de cette nouvelle colonne et inspecter les résultats via l'info-bulle. Si vous n'êtes pas sûr des détails sur la façon de procéder, essayez le documentation en ligne . Sachez qu'avec tant de conditions, cela peut être un gâchis.
En tant que nouvel utilisateur, vous n'êtes probablement pas intéressé par les scripts. Mais le script ci-dessous simule certaines données et crée le Treemap. En raison du caractère aléatoire, ce que vous voyez peut être différent à chaque fois. Mais l'exécution de ce code devrait produire un graphique comme :

Pour exécuter le script, faites 'Fichier > Nouveau > Nouveau script', collez le code dans la fenêtre qui apparaît, puis faites 'Modifier > Exécuter le 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 : comment comparer les lignes avec 0 et 1 pour découvrir la prévalence et le regroupement de deux conditions médicales ?salut @EmmaLT ,
Je pense avoir une idée de la façon de faire ce que vous demandez, mais cela aiderait si vous pouviez partager certaines de vos données - vous pouvez les anonymiser si besoin est. Il n'est pas nécessaire que ce soit l'ensemble de données complet, juste un sous-ensemble pour que je puisse mieux comprendre comment les données sont structurées, car cela pourrait avoir un impact sur la façon de faire l'analyse.
DS