【R语言】非度量多维标度分析法(Non-metric multidimensional scaling,NMDS)

Python015

【R语言】非度量多维标度分析法(Non-metric multidimensional scaling,NMDS),第1张

度量多维尺度分析(NMDS 分析)是一种将多维空间的研究对象(样本或变量)简化到低维空间进行定位、分析和归类,同时又保留对象间原始关系的数据分析方法,能够反映对象间的顺序关系。与PCoA类似,NMDS可以基于任何类型距离矩阵对对象(样方)进行排序;但也有不同之处,NMDS不在基于距离矩阵数值,而是根据排位顺序进行计算。对于存在距离缺失的数据而言有优势,只要想办法确定对象间的位置关系,即可进行NMDS分析。由于NMDS不是特征根排序技术,也不再让排序轴载更多的变差目的;因此NMDS排序图可以任意旋转、中心化和倒置(赖江山, 数量生态学)。

预先设定排序轴的数量m;

在m维空间内构建对象的初始结构,初始结构是调整对象之间位置关系的起点;

在m维空间内,用一个迭代程序不断调整对象位置,目标是不断最小化应力函数(Stress function,其值被转化为0~1间的数值,可以检验 NMDS 分析结果的优劣。通常认为 stress<0.2 时可用 NMDS 的二维点图表示,其图形有一定的解释意义;当 stress<0.1 时,可认为是一个好的排序;当 stress<0.05 时,则具有很好的代表性)不断调整对象位置,直至应力函数值不再减少,或已达到预定的值;

大部分NMDS会根据PCA结果旋转最终的排序图,使结果更容易解读。

Shepard 图:能够比较NMDS中对象间距离与原始距离测度矩阵中的值或者通过二者间进行线性(Linear fit)或非线性(Non-metric fit)拟合的R^2 评估,拟合R^2 越大越好/两个R^2 值越一致越好。

1、Shepard图的R^2 :拟合R^2 越大越好/两个R^2 值越一致越好;

2、Stress值:Stress<0.2(有一定可靠性);Stress<0.05(结果较好);Stress<0.02(结果很好);Stress<0.01(结果极好)。

注:stress=0.12,说明结果不好,但有一定的可靠性。

图形中的点代表样本,不同颜色/形状代表样本所属的分组信息。同组样本点距离远近说明了样本的重复性强弱,不同组样本的远近则反应了组间样本距离在秩次(数据排名)上的差异。样本相似性距离计算方式对结果有影响,选择输入不同相似性距离值的矩阵,得到的结果存在着不同程度差异。

横纵坐标轴含义:NMDS是距离值的秩次(数据排名)信息的评估,图上样本信息仅反映样本间数据秩次信息的远近,而不反映真实的数值差异,横纵坐标轴并无权重意义,横轴不一定比纵轴更加重要。

NMDS是非参数的方法,不应该有解释量,不知道他们这些NMDS的解释率是怎么算出来的?我估计是用主坐标分析(PCoA)的解释量来作为NMDS的解释量,但这种张冠李戴的做法可能是不合适的(引自赖江山老师: http://blog.sciencenet.cn/blog-267448-1146112.html )。

R语言-统计学 描述性统计

描述定量数据的数值方法:中心趋势度量 变异的度量 相对位置的度量。

1.中心趋势度量 : 算数平均 中位数 众数

1.1 在R中计算平均数的函数 mean( )常规的mean() 函数用法mean(x, trim = 0, na.rm = FALSE, ...) 参数说明: x 对象名称trim 过滤掉异常值 ,按照距离平均值的远近距离排除,如对象中含有10个数据,排除最高和最低值,trim=0.2na.rm 默认为F 表示是否计入空值实例1: 做一个稍微复杂点的操作,用r做数据透视表并把结果转换为matrix ,对行列求和。(仅娱乐,无实用价值)

demo <- mtcars[1:6,] # 调用R自带函数集,并去前6行

toushi <- aggregate(mtcars[,5:6] ,by = list(cyl = mtcars$cyl),sum) # 数据透视表求和

toushi <- as.matrix(toushi) # 将结果的数据框转化成矩阵

#(toushi <- apply(toushi,c(1,2),sum))

(rowSums(toushi)) # 行求和

(colSums(toushi)) # 列求和

toushi <- rbind(toushi,rowSums(toushi)) #将行求和结果并入最后一行

toushi <- cbind(toushi,colSums(toushi)) #将列求和结果并入最后一列

1.2 中位数和众数

对于偏度极大的数据集,中位数能更好的描述数据分布的中心。

很少用众数作为数据数据趋势的度量,只有当对y出现的相对频率感兴趣时,才会考虑到众数。

R实现中位数 :

median(x, na.rm = FALSE)

R中没有直接插找众数的命令

which.max(table(x))

2.变异的度量 : 极差 方差 标准差

2.1 .极差 = max()- min()

2.2 方差和标准差

对一个有n个测量值的有限总体来说,方差计算公式的分母为n。关于样本方差和总体方差分母的差异原因,可自行百度搜索。

R语言计算方差的函数: var(x,)

w<-c(75.0,64.0,47.4,66.9,62.2,62.2,58.7,63,5,66.6,64.0,57.0,69.0,56.9,50.0,72.0)

var(w)

# 附加指数点:标准差的两个有用法则:经验法则 和 切比雪夫法则,共同说明一个问题,对于任意大于1的正数k,至少有(1-1/k^2)的测试值落在平均值的k个标准值范围内。

3.变异的度量 : 百分位数 Z得分

3.1 .最常见的四分位数(一般从大到小)

quantile(x, probs = seq(0, 1, 0.25), na.rm = FALSE,names = TRUE, type = 7, ...)