你好,JMP 社區
有沒有辦法使用通用尺度來執行 PCA,就像使用 K 均值聚類一樣?
我之所以問這個問題,是因為常用的 K 均值聚類方法更適合我的數據,但我想刪除聚類數據,只顯示帶軸的 PCA 雙標圖
最好的,
謝謝你。我渴望有一天腳本比 GUI 更自然,但在這裡我使用 JMP 而不是 R...
PCA 從相關矩陣開始。 如果選擇協方差矩陣,則 PCA 雙圖匹配 K 均值集群雙圖(通用尺度),並且可以確定軸方差
來自 JMP 用戶手冊
顯然,PCA 的協方差矩陣與 K-means 聚類的常用尺度相同
添加到@Dan_Obermiller評論,我相信 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 幫助:
單獨縮放的列
獨立於其他列縮放每一列。 當變量不具有共同的測量尺度,並且您不希望一個變量主導聚類過程時使用。 例如,一個變量的值可能介於 0 和 1000 之間,而另一個變量的值可能介於 0 和 10 之間。 在這種情況下,您可以使用該選項使聚類過程不受第一個變量的支配。
如果您不單獨縮放它們,那麼您就沒有縮放變量。
如果您想在主成分中重現它,請選擇未縮放的主成分(可從主成分的紅色彈出菜單中獲得)。 但是,請記住,所有變量都應該在相似的範圍內,以使這些結果有意義。
嗨,當選擇“列單獨縮放”選項時,PCA 上的縮放與 K-means 相同
但是當未選擇“列單獨縮放”選項時,我無法找到一種方法來使用 PCA 執行常見縮放,就像 Kmeans 可以做到的那樣
我需要這樣做的原因是因為 K-means 雙圖不包括軸解釋的方差。如果有人知道如何讓 K-means 圖顯示該值,我將不勝感激!
我可能不理解這個問題,但是當您對相關性執行 PCA 時,PCA 會自動居中並縮放所有變量。 因此,所有變量都在同一尺度上。