PCNM(邻体矩阵主坐标分析(principalcoordinates of neighbour matrices)是什么东西呢?

生态与环境科学很多数据取自地球的表面,因此取样点之间往往具有空间位置关系。研究取样点之间的空间关系属于空间生态学的范畴。如何研究取样点之间的空间关系(或具有什么样的空间结构)?要研究这个问题最基本条件就是得知道取样点位置坐标(如果取样点是经纬度,需要转为笛卡尔坐标系,在R里面的SoDA程序包中geoXY()函数干这个事情)。有了取样点的位置坐标,我们就可以想尽办法通过这个xy坐标来模拟各种可能存在的空间结构。如何获取或是模拟各种各样可能的空间结构,这就是通过主坐标的方法来做这个事情。首先算取样点之间的距离矩阵,然后削减(truncate)距离矩阵规模,只保留一定规模的邻体之间的距离(为什么这么干,就是扭曲一下距离矩阵,可以模拟更多的结构,大家可以不必了解这么多原理)后进行分析主坐标分析,那么得到第1到第n个主坐标都可以说是模拟潜在的空间结构。这些空间结构可以用n个变量构成的取样点-主坐标矩阵来表示,这个就是PCNM变量矩阵。这个PCNM变量矩阵可以作为普通的环境因子矩阵一样,作为解释变量来解释原始的响应变量(可以单变量,也可以是多变量)。我们可以想象一下,如果我们通过各种不同的方法模拟出来的空间结构能够很好解释响应变量(即回归的R2比较大),我们有理由相信响应变量之间存在我们所预先模拟的空间结构。那么为什么响应变量会存在这些模拟的空间结构,有可能是刚好某些环境因子具有这种空间结构,导致了这种空间结构,这些环境因子可能已经被测量,也可能还没有被测量,所有获得PCNM变量后,接下来的工作就是将PCNM作为一组解释变量,跟已经测得的环境变量一起,对响应变量进行解释(也就是变差分解),这样可以看到底是不是已经测量的环境因子是否有类似空间结构来导致响应变量具有类似空间结构,还是未测量的环境变量引起的,当然,也可能说响应变量本身具有的此类空间结构,而不是由环境因子引起部分,这部分统统都是PCNM单独解释的部分。

#载入本章所用的程序包

library(ape)

library(spdep)

library(vegan)

library(ade4)

#以下几个程序包可以从https://r-forge.r-project.org/R/?group_id=195下载本地安装

library(packfor)

library(spacemakeR)

library(AEM)

library(PCNM)

#导入数据

mite

mite.env

mite.xy

mite.h

mite.xy.c

# 1b. ...或自动构建PCNM变量

# library(PCNM) #如果还未加载PCNM程序包

xy.d1

mite.PCNM.auto

summary(mite.PCNM.auto)

# PCNM变量Moran指数(由第一距离等级0到削减阈值);也见PCNM()函数

#产生的图(此处无显示图)

# Moran指数的期望值(代表无空间相关)

mite.PCNM.auto$expected_Moran

mite.PCNM.auto$Moran_I

#正空间相关的特征函数

(select

length(select)  # I > E(I)条件下PCNM变量的数量

mite.PCNM.pos

# 2.运行基于去趋势甲螨数据的全模型PCNM分析

#------------------------------------------------------------

mite.PCNM.rda

anova.cca(mite.PCNM.rda)

# 3.如果分析为显著,计算校正R2

(mite.R2a

#甲螨-环境-PCNM变差分解

# *****************************

# 1.环境变量检验和前向选择

#将环境变量3-5重新编码成二元变量

substrate

shrubs

topo

mite.env2

#环境变量的前向选择

mite.env.rda

(mite.env.R2a

mite.env.fwd

env.sign

env.red

colnames(env.red)

# 3. PCNM变量的前向选择

#运行未去趋势甲螨数据的全模型PCNM分析

mite.undet.PCNM.rda

anova.cca(mite.undet.PCNM.rda)

#如果分析表明显著,计算校正R2和运行PCNM变量前向选择

(mite.undet.PCNM.R2a

(mite.undet.PCNM.fwd

adjR2thresh=mite.undet.PCNM.R2a))

#根据R2a准则,如果保留12个PCNM变量,获得的校正R2已经稍大于全模

#型的校正R2。但这个“稍微超过”也是可行,并不一定很严格。

(nb.sig.PCNM

#按顺序排列显著的PCNM变量

(PCNM.sign

#赋予所有显著PCNM变量一个新的对象

PCNM.red

# 5.甲螨-环境-趋势-PCNM变差分解

(mite.varpart

par(mfrow=c(1,2))

showvarparts(2)

plot(mite.varpart,digits=2)

#检验单独解释部分[a],  [c]和[d]

#********************************

# [a]部分,环境变量单独解释部分

anova.cca(rda(mite.h,env.red, PCNM.red ))

# [b]部分,趋势单独解释部分

anova.cca(rda(mite.h,PCNM.red , env.red))

#仅有环境变量和宽尺度空间变量单独解释部分显著。

转载本文请联系原作者获取授权,同时请注明本文来自赖江山科学网博客。

链接地址:http://blog.sciencenet.cn/blog-267448-1022075.html

上一篇:如何在R里面实现偏最小二乘回归法(partial least squares 回归

下一篇:基于距离的RDA(db-RDA)

pcnm r 语言_科学网—PCNM(邻体矩阵主坐标分析) - 赖江山的博文相关推荐

  1. 计算密码子频率的代码R语言_科学网—R语言终止密码子统计 - 熊荣川的博文

    熊荣川 六盘水师范学院生物信息学实验室 #R语言终止密码子统计 setwd("**") infile = "protein1.fasta" outname = ...

  2. 泰尔指数r语言_科学网-一招搞定泰尔指数及其分解-王庆喜的博文

    一招搞定泰尔指数及其分解 上期讲了区位基尼系数,这期讲讲泰尔指数. 泰尔指数的原理同基尼系数,都是在测度一组数据分布的差异性.但是其有着良好的可分解性质,因此当需要考察产业空间集中度在不同区域层面的差 ...

  3. r语言plotmds_科学网—在R中运行metaMDS - 梅卫平的博文

    中英文混合版. Function metaMDS performs Nonmetric Multidimensional Scaling (NMDS), and tries to find a sta ...

  4. python做社会网络分析系统_科学网—python 社会网络分析工具之igraph - 郗强的博文...

    1.networkx 2.igraph 3.SNAP 2.igraph igraph是免费的复杂网络(graphs)处理包,可以处理百万级节点的网络(取决于机器内存).igraph提供了R和C语言程序 ...

  5. python字母频率_科学网-Python统计字母频数和频率-吕波的博文

    方案一 统计字符串中的字母频数 import collections import re d = collections.defaultdict(int) S = "testTypecopy ...

  6. Java对象的两大特征_科学网—Java 面向对象的四个特征 - 李玖栋的博文

    1.抽象: 抽象--就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.(就是把现实世界中的某一类东西,提取出来,用程序代码表示,抽象出来一般叫做类或者接口.)抽象并不打 ...

  7. python社会网络分析教授_科学网—python 社会网络分析工具之networkx - 郗强的博文...

    1.networkx 2.igraph 3.SNAP 1.networkx NetworkX是一个用Python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网 ...

  8. l2空间的完备性_科学网—话说泛函---Hilbert空间[转] - 陆慧敏的博文

    一百年前的数学界有两位泰斗: 庞加莱和希尔伯特, 而尤以后者更加 出名(在我的汉字系统下希尔伯特居然是一个词组),  我想主要原因是他曾经在1900年的世界数学家大会上提出了二十三个著名的希尔伯特问题 ...

  9. g2 折线图点与点之间直线_科学网—ggplot2实现散点折线图 - 肖斌的博文

    准备的数据: 第一列是时间,第二列是样本,第三列是具体数值.横轴标为时间,纵坐标为具体数值,图中不同颜色展示不同样本. 具体的代码: library(ggplot2) png("./xyz. ...

最新文章

  1. 普渡大学李攀:好的图表示到底是什么?
  2. 清华张亚勤院士团队招聘 AI 工业方向博士后
  3. 树莓派harmonyos,【树莓派入门】(三)| 树莓派如何控制步进电机
  4. oracle 删掉虚拟目录,创建虚拟目录失败,必须为服务器名称指定“localhost”
  5. union 中的注意事项
  6. Android selinux权限修改
  7. “2011年度IT博客大赛”支持fangmin的。请投下您最宝贵的一票
  8. pdfbox 第一页加内容_你用代码做过哪些很酷/有趣的事?
  9. cfiledialog指定位置和大小_GDamp;T | 位置度公差的理解过程
  10. .NET Core开发实战(第8课:配置框架:让服务无缝适应各种环境)--学习笔记
  11. STL容器删除元素的陷阱
  12. 从还珠格格到街头霸王!80后的怀旧神器 三星GalaxyFold另类体验
  13. 配置tomcat tomcat与nginx的整合
  14. A3C的算法原理和算法流程
  15. 数据库增删改查的基本语法
  16. Windows系统怎么查看电脑的系统位数?
  17. java搜索引擎框架_搜索引擎框架介绍
  18. 【翻译】CRAFT:Character Region Awareness for Text Detection
  19. Oracle数据库PL/SQL块-存储函数和过程
  20. Font Awesome文字图标的使用

热门文章

  1. 5G时代音视频开发王器:WebRTC
  2. 修改iTunes备份文件路径(转)
  3. 坚如磐石的React.js基础:入门指南
  4. mysql中井号的作用_URL 链接中 井号#、问号?、连接符 分别有什么作用?
  5. linux vim 倒数200行,上古神器之vim
  6. php猜数游戏63,PHP如何实现猜数游戏 PHP实现猜数游戏代码示例
  7. java破坏双亲委派_JDK为何自己先破坏双亲委派模型?
  8. Hadoop大数据创建
  9. Windows 命令行 (cmd) 切换盘符
  10. python自动化--飞书群发送日报图片