You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决R语言vegan包NMDS分析报错:'dist' cannot be all zero

解决vegan包NMDS分析的"dist cannot be all zero"报错问题

问题概述

使用RStudio中vegan包进行非度量多维尺度分析(NMDS)时触发如下报错:

Error in monoMDS(dist, y = cmdscale(dist, k = k), k = k, maxit = maxit,  : 
  'dist' cannot be all zero (all points are identical)

研究背景:样本量n=1,采用人际反应指针(IRI; Davis 1980, 1983)量表测量特质共情,目标是分析F、EC、PD、POV四个子量表间的距离。

现有代码

data_JA_select <- data_JA %>%
   dplyr::select(IRI_EC_1, IRI_EC_2,IRI_EC_3,IRI_EC_4,IRI_EC_5,IRI_EC_6,IRI_EC_7, IRI_POV_1, IRI_POV_2, IRI_POV_3, IRI_POV_4, IRI_POV_5, IRI_POV_6, IRI_POV_7, IRI_F_1,  IRI_F_2,  IRI_F_3, IRI_F_4, IRI_F_5, IRI_F_6, IRI_F_7, IRI_PD_1, IRI_PD_2, IRI_PD_3, IRI_PD_4, IRI_PD_5, IRI_PD_6, IRI_PD_7)

data_JA_nmds <- metaMDS(data_JA_select, k = 2, distance= "euclidean", trymax = 100)

注:data_JA为已清洗完成的有效数据。

报错原因

  1. 数据结构错误:NMDS默认分析行(样本)间的距离,但当前输入是1行(1个样本)、28列(各子量表题项)——仅1个观测点时,距离矩阵所有值为0,触发报错。
  2. 目标与结构不匹配:研究目标是分析4个子量表间的距离,需将子量表作为NMDS的「分析单元」(即行),而非单个样本。

解决方案

步骤1:计算四个子量表的得分

根据IRI量表规则,对子量表题项求平均分或总分:

library(dplyr)

# 计算子量表平均分(示例,可替换为总分)
data_JA_scores <- data_JA %>%
  mutate(
    EC_score = rowMeans(select(., starts_with("IRI_EC_")), na.rm = TRUE),
    POV_score = rowMeans(select(., starts_with("IRI_POV_")), na.rm = TRUE),
    F_score = rowMeans(select(., starts_with("IRI_F_")), na.rm = TRUE),
    PD_score = rowMeans(select(., starts_with("IRI_PD_")), na.rm = TRUE)
  ) %>%
  select(EC_score, POV_score, F_score, PD_score)

步骤2:转换数据结构适配NMDS

将子量表作为分析单元(行),样本得分作为变量(列):

# 转置数据,子量表为行,样本得分为列
nmds_data <- t(data_JA_scores)
# 给行命名对应子量表
rownames(nmds_data) <- c("EC", "POV", "F", "PD")

步骤3:重新运行NMDS

此时有4个分析单元,可正常计算距离矩阵并运行NMDS:

library(vegan)

# 运行NMDS
data_JA_nmds <- metaMDS(nmds_data, k = 2, distance = "euclidean", trymax = 100)

# 查看结果与绘图
print(data_JA_nmds)
plot(data_JA_nmds)

补充方案

也可先直接计算子量表间的距离矩阵,再传入NMDS核心函数monoMDS:

# 计算子量表间欧氏距离
dist_matrix <- dist(t(data_JA_scores), method = "euclidean")
# 运行NMDS
nmds_result <- monoMDS(dist_matrix, k = 2, maxit = 100)

内容的提问来源于stack exchange,提问作者jeisman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 11:01:34