層次聚類:JMP & R 不同意當我使用 Ward 方法在 JMP 和 R 中對相同的數據集進行聚類時,我得到的結果是不相同的。R 提供了兩個選項(ward.D 和 ward.D2),其中後者在對距離矩陣中的值進行聚類之前對它們進行平方。根據默塔和勒讓德 (2014) ,這也是 JMP 所做的。 但即使我在 R 中指定 method="ward.D2",我得到的輸出也有很大的不同:大約 15% 的觀察結果與我從 JMP 得到的結果不匹配。
那麼,問題 1:我期望相同的方法在 HCA 中產生相同的結果是錯誤的嗎?我不希望在 k-means 聚類中(至少沒有設置種子),但對於 HCA,結果在給定包內*內*是完全穩定的,所以我認為它們在*間*包內也應該是相同的。
問題 2:如果他們*應該*是一樣的……為什麼不一樣?
- 可能性A:距離矩陣的計算方式不同
- 可能性 B:Ward 方法的實現方式有所不同
- 可能性 C:R 中的 cutree() 函數與 JMP 中的“選擇簇數”函數不同
- 可能性 X... ???
我已經從 R 上傳了樹狀圖(如果那是糟糕的網絡禮儀,請道歉!);通過仔細查看沿 x 軸的標籤,您可以看到我正在談論的問題。這些標籤都以 1-5 的數字結尾,表示它們在 JMP 中分配到的集群的編號。如您所見,綠色組(“3”)是唯一一個在 JMP 和 R 之間完美 1:1 匹配的組。
感謝任何指導,-馬特

分析回复:層次聚類:JMP 和 R 不同意嗯…… 我剛剛對 JMP 和 R 中的三個不同數據集進行了比較(沒有使用“標準化數據”或“scale()”),並發現當使用相同數量的集群時,每個分類都完全匹配。我在 R 中指定的唯一方法是將“euclidean”用於“dist”函數,將“ward.D2”用於“hclust”函數。 您是否在 R 和/或 JMP 工作流程中指定了其他任何內容? 您的數據有多混亂(缺少...異常值...)?只是提供一些思考的食物......
回复:層次聚類:JMP 和 R 不同意好主意,但我不認為這是問題所在:因為我正在使用的數據集涉及的變量都在相同的範圍內,所以我總是在 JMP 中取消選擇“標準化數據”。 為了標準化 R 中的數據,必須使用 scale() 函數,而我從來沒有這樣做過。 據我所知,這兩個包都應該在非標準化數據上運行。回复:層次聚類:JMP 和 R 不同意感謝您傳遞它;它讓我意識到從 JMP 導出距離矩陣並將這些值與我在 R 中得到的距離矩陣進行比較是值得的!這將是縮小差異來源的一種方法。
回复:層次聚類:JMP 和 R 不同意感謝您的建議;很高興知道如果我無法以其他方式解決此問題,可以選擇將代碼發送給技術團隊。
要回答您的另一個問題,是的:每個包中的 HCA 結果是完全穩定的。
回复:層次聚類:JMP 和 R 不同意數據是否有可能在一個包中標準化,而不是在另一個包中? JMP 中的默認值是“標準化數據”。
回复:層次聚類:JMP 和 R 不同意這個線程也可能有助於距離矩陣:
https://community.jmp.com/t5/Discussions/which-distance-does-JMP-use-in-clustering/mp/275384#M53438
回复:層次聚類:JMP 和 R 不同意嗨 matthal_resear,
比較不同的包總是一個熱門話題。 由於我無法查看 JMP 中的源代碼,因此我無法檢查您在第 2 點中提到的 JMP 和 R 之間的任何計算是否存在差異。 它們都參考了 Murtagh & Legendre (2014),但這並不意味著該算法以完全相似的方式實現。 尤其是算法的核心前後可能會有差異。 也在潛在的子程序中。 同樣,由於無法檢查完整的代碼,因此無法回答這個問題。您可以嘗試將您的問題發送給 JMP 的技術支持,提供有關您正在使用的 R-Package 的詳細信息以及具體的例程。 有時有不止一個 R 函數可用。 然後他們可能有機會檢查差異,而不是說他們會找到什麼。
只是另一個想法。 HCA 包中的結果是否穩定? 還是它們略有不同? 這也是一個重要的信息。 最後,我將查看星座圖以識別那裡的差異。
只是我的2cents