0 と 1 の行を比較して、2 つの病状の有病率とクラスタリングを確認するにはどうすればよいでしょうか?こんにちは、私は博士論文に取り組んでいる、JMP の経験の浅い新しいユーザーです。 データの一部を比較する方法が分からないので、サポートが必要です。 私のデータは、146 の病状をそれぞれ 1 または 0 (はい/いいえ) で表す 146 の列で構成されています。 このデータを比較するための約 14000 行 (患者) があります。 同じ人の 2 つの病状について、最も一般的な組み合わせの順序を調べる必要があります。 どうやってやるの?
助けてくれてとても感謝しています、
エマ
高度な統計モデリングデータのブレンディングとクリーンアップRe: 2 つの病状の有病率とクラスタリングを調べるために 0 と 1 の行を比較するにはどうすればよいですか?txnelson と他の皆さん、アドバイスや提案をありがとうございました。 分析中に停止してしまい、元のデータの抽出からやり直す必要があったため、まだ解決策を試すことができませんでした。 時間が来たら戻ってきます。 ありがとう!
Re: 2 つの病状の有病率とクラスタリングを調べるために 0 と 1 の行を比較するにはどうすればよいですか?「」ということが起こります。同じ人の 2 つの病状の最も一般的な組み合わせの順序」は、いくつかの異なる分析目的を示唆している可能性があります。 しかし、どのような分析が示唆されるにせよ、私はまずデータの「中に」何が入っているかを確認することを強くお勧めします。
1 つのアプローチは、「列 > ユーティリティ > 列の結合...」を使用して、各状態の各患者のステータスを含む新しい列を作成することです。 次に、「グラフ > グラフ ビルダー」を使用してこの新しい列のツリーマップを作成し、ツールチップを介して結果を検査できます。 これを行う方法の詳細がわからない場合は、次の手順を試してください。オンラインドキュメント。 非常に多くの条件があるため、これは単なる混乱になる可能性があることに注意してください。
新しいユーザーは、おそらくスクリプトに興味がないでしょう。 ただし、以下のスクリプトはいくつかのデータをシミュレートし、ツリーマップを作成します。 ランダムなので、表示される内容は毎回異なる場合があります。 ただし、このコードを実行すると、次のようなグラフが生成されるはずです。

スクリプトを実行するには、「ファイル > 新規 > 新しいスクリプト」を実行し、表示されるウィンドウにコードを貼り付けて、「編集 > スクリプトの実行」を実行します。
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: 2 つの病状の有病率とクラスタリングを調べるために 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: 2 つの病状の有病率とクラスタリングを調べるために 0 と 1 の行を比較するにはどうすればよいですか?こんにちは@EmmaLT 、
あなたが尋ねていることを行う方法については考えがあると思いますが、データの一部を共有していただければ助かります。必要に応じて匿名化することもできます。 データセット全体である必要はなく、分析の方法に影響を与える可能性があるデータの構造をよりよく理解できるように、サブセットだけを使用します。
DS