두 가지 의학적 상태의 유병률과 군집을 찾기 위해 행을 0과 1로 비교하는 방법은 무엇입니까?안녕하세요, 저는 박사 학위 논문을 작성하는 JMP의 미숙한 신규 사용자입니다. 내 데이터의 일부를 비교하는 방법을 찾을 수 없어서 도움이 필요합니다. 내 데이터는 146개의 의학적 상태에 대해 각각 1 또는 0(예/아니요)이 있는 146개의 열로 구성됩니다. 이 데이터를 비교할 약 14000개의 행(환자)이 있습니다. 한 사람의 두 가지 질병에 대한 가장 일반적인 조합의 순서를 찾아야 합니다. 어떻게 할 수 있습니까?
도움을 주셔서 대단히 감사합니다.
엠마
해석학Re: 행을 0과 1로 비교하여 두 가지 의학적 상태의 유병률과 클러스터링을 찾는 방법은 무엇입니까?안녕하세요 @EmmaLT ,
나는 당신이 묻는 것을 어떻게 할 것인지에 대한 아이디어가 있다고 생각하지만, 당신이 당신의 데이터 중 일부를 공유할 수 있다면 도움이 될 것입니다. 필요하다면 익명화할 수 있습니다. 전체 데이터 세트일 필요는 없으며 분석 방법에 영향을 미칠 수 있으므로 데이터가 어떻게 구성되어 있는지 더 잘 이해할 수 있도록 하위 집합일 필요가 있습니다.
DS
Re: 행을 0과 1로 비교하여 두 가지 의학적 상태의 유병률과 클러스터링을 찾는 방법은 무엇입니까?분석을 실행할 예제 데이터 테이블을 생성하는 샘플 스크립트를 만들었습니다.데이터 쌍을 만드는 데 시간이 걸리므로 100개 행의 데이터만 생성합니다.결과 테이블은 각 의학적 상태 조합이 발견된 환자 수를 제공합니다.

한 번에 14000명의 모든 환자에게 스크립트를 실행하면 시간이 꽤 걸립니다.데이터의 하위 집합에서 쉽게 실행한 다음 결과 테이블을 결합할 수 있습니다.
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: 행을 0과 1로 비교하여 두 가지 의학적 상태의 유병률과 클러스터링을 찾는 방법은 무엇입니까?"가 발생한다. 한 사람의 두 가지 의학적 상태에 대한 가장 일반적인 조합의 순서 "는 몇 가지 다른 분석 목표를 암시할 수 있습니다. 그러나 어떤 분석이 암시되든 먼저 데이터 '안에' 무엇이 있는지 살펴보는 것이 좋습니다.
한 가지 접근 방식은 "열 > 유틸리티 > 열 결합..."을 사용하여 모든 조건에 대한 각 환자의 상태를 포함하는 새 열을 만드는 것입니다. 그런 다음 '그래프 > 그래프 빌더'를 사용하여 이 새 열의 트리맵을 만들고 도구 설명을 통해 결과를 검사할 수 있습니다. 이 작업을 수행하는 방법에 대한 세부 정보가 확실하지 않은 경우 시도하십시오. 온라인 문서 . 너무 많은 조건으로 인해 이것은 엉망일 수 있습니다.
새로운 사용자로서 당신은 아마도 스크립팅에 관심이 없을 것입니다. 그러나 아래 스크립트는 일부 데이터를 시뮬레이션하고 Treemap을 만듭니다. 무작위성 때문에 보는 것이 매번 다를 수 있습니다. 그러나 이 코드를 실행하면 다음과 같은 그래프가 생성되어야 합니다.

스크립트를 실행하려면 '파일 > 새로 만들기 > 새 스크립트'를 실행하고 나타나는 창에 코드를 붙여넣은 다음 '편집 > 스크립트 실행'을 수행합니다.
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));