r语言 - 如何在大型(300k * 10k)数据集上执行NMDS(布雷柯蒂斯距离)?



我正在处理一个非常大的植被覆盖数据集(300,000个地块x 10,000个物种),我想将其聚集在植被类型中。我的正常工作流程是首先执行NMDS(布雷-柯蒂斯距离),然后对NMDS结果进行K-means(以避免在覆盖数据集上使用欧几里德距离)。

当我尝试在这个大数据集上运行NMDS时,数据是断开的:

NMDS1<-metaMDS(data_wide, distance = "bray",k=5, noshare=TRUE, autotransform = FALSE, trymax=100, maxit=1000, wascores = FALSE)
# Error in cmdscale(dist, k = k) : NA values not allowed in 'd'
# In addition: Warning messages:
# 1: In stepacross(dis, trace = trace, toolong = 0, ...) :
#   Disconnected data: Result will contain NAs
# 2: In metaMDSdist(comm, distance = distance, autotransform = autotransform,  :
#   data are disconnected, results may be meaningless

我如何在这个大小的数据集上执行这个分析?

在这么大的数据集上运行NMDS可能真的会有问题。但是,您的错误消息不是由数据集的大小引起的,而是由于具有断开连接的数据(如错误消息所示)。您指定了noshare=TRUE,这意味着该方法识别了它们之间没有任何共享的采样单元对,并尝试查看在这两个极端之间是否存在共享某些东西(某些物种)的中间采样单元,并通过这些中间点估计距离。然而,你有一些采样单元没有这样的路由,这留下了断开的数据。您应该关闭这个过程(noshare=FALSE),或者您应该识别不连接的点或数据的不连接子集:您真的不能说不连接的数据子集之间的关系,因为它们没有任何共同之处。函数distconnected可用于查找这些子集或单个异常点。

最新更新