我有一个150 * 60的矩阵,该矩阵包含在多天内与多个主题记录的分类响应(三级分类响应重新编码为1、2和3)。行代表个人,而列代表相对于特定日期(例如1月1日)的天数。由于并非所有受试者都每天都做出反应,因此矩阵周围散布了一些缺失值。
示例数据: 数据= [1,NaN,2,1,...,1; 1,2,Nan,1,...,2; ... 2,3,3,Nan,...,2];
我正在尝试使用分层聚类,基于他们在几天之内的响应来聚类个人。由于响应是绝对的,因此我尝试使用汉明距离作为距离度量。但是,由于存在NaN,我使用的是Matlab在其pdist2文档中提供的自定义距离函数nanhamdist,而不是内置的“ Hamming”。
这是我的代码:
distV = pdist(Data,@nanhamdist);
linkV = linkage(distV,'complete')
[dg,~,indC] = dendrogram(linkV,0)
基于树状图和热图,这种用于聚类的方法似乎已经生成了一些有意义的聚类,但是我不确定这是否是确定聚类数量的适当方法。我尝试使用带有下面代码的“ evalclusters”,但是由于linkV(149 * 3)的长度比Data(150 * 60)的长度短1,所以我遇到了错误。
evalclusters(Data,linkV ,'silhouette','Distance','@nanhamdist')
错误消息:预测变量矩阵X和聚类解决方案矩阵必须具有相同的 行数。
我应该如何进行呢?任何意见将是有益的。谢谢!