簡體   English   中英

R中的聚類分析與缺失數據

[英]Cluster Analysis in R with missing data

所以我花了很多時間試圖找到如何做到這一點的答案。 到目前為止我找到的唯一答案是: 如何在不刪除R中存在NA的行的情況下執行聚類

不幸的是,這對我不起作用。

所以這是我的數據示例(在此示例中為d):

Q9Y6X2           NA -6.350055943 -5.78314068
Q9Y6X3           NA           NA -5.78314068
Q9Y6X6  0.831273549  4.875151493  0.78671493
Q9Y6Y8  4.831273549  0.457298979  5.59406985
Q9Y6Z4  4.831273549  4.875151493          NA

這是我嘗試過的:

> dist <- daisy(d,metric = "gower")
> hc <- hclust(dist)
Error in hclust(dist) : NA/NaN/Inf in foreign function call (arg 11)

根據我的理解,daisy應該能夠處理NA值,但是在嘗試聚類結果時我仍然收到錯誤。

謝謝。

混合模型允許通過假設值完全隨機丟失(MCAR)來對具有缺失值的數據集進行聚類。 此外,信息標准(如BIC或ICL)允許選擇簇的數量。 您可以使用R包VarSelLCM來聚類這些數據(有一個Shiny應用程序來解釋結果)。 此處提供了此軟件包的教程

如果查看dist矩陣,您將看到存在NA,因為樣本Q9Y6X3和Q9Y6Z4沒有重疊。 這導致你的dist矩陣中的NA,這是hclust不喜歡的。 您可能會強制NAs為0或者其他什么,但我不確定這是否會留下統計偏差。

在以下帖子的第二個答案內: 如何在不刪除R中存在NA的行的情況下執行聚類 ,報告了“菊花”功能中的這種錯誤。 以前該功能由以下編碼:

if (any(ina <- is.na(type3))) 
stop(gettextf("invalid type %s for column numbers %s", 
    type2[ina], pColl(which(is.na))))

沒有打印出預期的錯誤消息,因為錯誤地使用了(is.na)而不是(ina)。

“cluster”包中包含的此函數的作者承認了該問題,並在2015年6月修復了該代碼.http://svn.r-project.org/R-packages/trunk/cluster/R/daisy.q

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM