こんにちは、JMPコミュニティの皆様
K-means クラスターと同じように、共通スケールを使用して PCA を実行する方法はありますか?
共通スケールのK平均クラスタは私のデータにははるかに適していますが、クラスタリングデータを削除して、軸付きのPCAバイプロットのみを表示したいので質問します。
最高、
これに感謝します。私はスクリプトが GUI よりも自然になる日を目指していますが、ここでは R よりも JMP を使用しています...
PCA は相関行列から始まります。 共分散行列が選択されている場合、PCA バイプロットは K-means クラスター バイプロット (共通スケール) と一致し、軸の分散を決定できます。
JMPのユーザーマニュアルより
どうやらPCAの共分散行列は、K-meansクラスタリングの一般的なスケールと同じです
に追加するには@ダン_オーバーミラーコメント、K Means は、そのオプションを使用するときに列をスケーリングしないだけで中央に配置すると信じているため、PCA で分析を複製するには、最初に列を中央に配置してから、スケーリングなしの PCA を実行します。以下のスクリプトを実行すると、二変量スコア プロットが一致するはずです。
Names default to here(1);
dt = Open( "$Sample_data/Lipid Data.jmp" );
//Center columns
dt << New Column("Age Centered", Numeric, "Continuous", Format("Best", 10), Formula(:Age - Col Mean(:Age)));
dt << New Column("Weight Centered", Numeric, "Continuous", Format("Best", 10), Formula(:Weight - Col Mean(:Weight)));
dt << New Column("Cholesterol Centered", Numeric, "Continuous", Format("Best", 10), Formula(:Cholesterol - Col Mean(:Cholesterol)));
dt << New Column("Triglycerides Centered", Numeric, "Continuous", Format("Best", 10), Formula(:Triglycerides - Col Mean(:Triglycerides)));
//Window with both analyses:
New Window( "Compare",
H List Box(
//K Means common scale:
dt << K Means Cluster(
Y( :Age, :Weight, :Cholesterol, :Triglycerides ),
Columns Scaled Individually( 0 ),
{Single Step( 0 ), Number of Clusters( 3 ), K Means Cluster,
Go( Show Biplot Rays( [0, 0, 1] ), Biplot( 1 ) )}
),
//PCA unscaled using centered columns
dt << Principal Components(
Y( :Age Centered, :Weight Centered, :Cholesterol Centered, :Triglycerides Centered ),
Estimation Method( "Default" ),
"on Unscaled"
)
)
);K-Means に関する JMP ヘルプから:
個別にスケーリングされた列
各列を他の列とは独立してスケーリングします。 変数が共通の測定尺度を共有しておらず、1 つの変数がクラスタリング プロセスを支配しないようにする場合に使用します。 たとえば、ある変数の値が 0 から 1000 の間であり、別の変数の値が 0 から 10 の間である場合があります。 この状況では、このオプションを使用して、クラスタリング プロセスが最初の変数によって支配されないようにすることができます。
それらを個別にスケーリングしない場合、変数をスケーリングしていません。
主成分でそれを再現したい場合は、主成分 On Unscaled (主成分の赤いポップアップ メニューから利用可能) を選択します。 ただし、これらの結果を意味のあるものにするには、すべての変数が同様のスケールである必要があることに注意してください。
こんにちは、「個別にスケーリングされた列」オプションが選択されている場合、PCA のスケーリングは K-means と同じです。
しかし、「個別にスケーリングされた列」オプションが選択されていない場合にKmeansが実行できるように、PCAで一般的なスケーリングを実行する方法を見つけることができません
これを行う必要がある理由は、K 平均バイプロットには、軸によって説明される分散が含まれていないためです。K 平均プロットにその値を表示する方法を誰かが知っている場合は、感謝します!
私は質問を理解していないかもしれませんが、PCA は、相関に対して PCA を実行しているときに、すべての変数を自動的に中央に配置してスケーリングします。 したがって、すべての変数は同じスケールにあります。