阿尔法多样性和地理范围大小石炭纪和二叠纪四足动物

作者: 古宇宙的发展团队

上次更新时间:2024-04-16

介绍

古宇宙是由开发的R包古生物学家。一揽子计划的目的是生成社区驱动的通用函数工具包古生物群落。该包不提供实现而是提供辅助功能来帮助简化分析并提高代码的可读性和再现性。本小插曲(或教程,如果您愿意)将为您提供指导通过安装过程和一些可用功能在内部古宇宙。为此,我们将重点关注用法以四足动物为例石炭纪/二叠纪界线。

安装

这个古宇宙可以通过CRAN或其献身的github储存库如果首选开发版本。要通过安装CRAN,只需使用:

安装.包(“古宇宙”)

要安装开发版本,请首先安装开发工具包,然后使用安装github安装古宇宙直接从GitHub。

安装.包(“开发工具”)
开发工具::安装github(“古宇宙/古宇宙”)

您现在可以加载古宇宙使用默认值图书馆功能:

图书馆(古宇宙)

在我们讨论好东西之前,开发团队有一个小型请求。如果您使用古宇宙在您的研究,请引用相关出版物。这将帮助我们继续我们的工作,支持你做你的工作。您可以访问适当的引文通过:

引用(“古宇宙”)

既然这样,我们就开始吧!

石炭纪和早二叠世被视为关键时期早期四足脊椎动物的间隔多样化和生物地理学。在此期间,几个主要群体出现了四足类(包括冠羊膜)石炭纪的热带雨林被旱地植被所取代在二叠纪,在所谓的“石炭纪雨林”坍塌”(CRC)(更多信息,请参见Dunne等人,2018)。

在这个小插曲中,我们将使用四足动物数据集到演示如何使用古宇宙函数来检查如何α多样性和范围大小在该间隔内变化。

四足动物数据集

中的函数古宇宙是围绕假设大多数用户的数据存储在事件中数据帧因此,这是预期的输入数据格式用于大多数功能。我们提供了两个实例发生数据集(四足动物珊瑚礁)在来自的包中不同的数据源。虽然这两个数据集有相似之处结构,每个结构中可用的数据(变量)不同。这个四足动物数据集是石炭纪早期的汇编三叠纪四足化石(n个=5270)从古生物学数据库.我们会的使用此数据集演示中的一些可用功能古宇宙.

让我们从探索数据集开始。

#调用数据集:
数据(四足动物)

#查看列名和前三列的前五行:
列名(四足动物)
##[1]“occurrence_no”“collection_no”“identified_name”“ideentified_rank”##[5]“accepted_name”“accepted_rank”“early_interval”“late_intervals”##[9]“最大最大”“最小”“门”“类”##[13]“order”“family”“genus”“abund_value”##[17]“abund_unit”“lng”“lat”“collection_name”##[21]“cc”“formation”“stratgroup”“member”##[25]“区域”“岩性1”“环境”“压力模式”##[29]“分类环境”“运动性”“生活习惯”“饮食”
四足动物[1:5,1:]
##发生_无集合_无标识_名称##1 146665 12943 n.gen.Anconastes n.sp.vesperus##2 147090 13004 Gorgonpsia indet公司。##3 147521 13043 n.gen.Procolophon n.sp.trigoniceps##4 147523 13044 n.gen.Ophiodeirus n.sp.casei(麦冬属)##5 147563 13046 Broiliellus n.sp.arroyoensis肉鸡

如你所见,我们有各种各样的变量可供选择!对于这个小插曲,我们将主要关注一些空间信息,例如纬度和经度。但首先,我们需要一些数据准备…

探索功能

如果我们研究四足动物的多样性和分布模式在石炭纪和二叠纪,我们首先必须时间和空间上的事件。我们可以很容易地做到这一点中的函数古宇宙包裹。让我们先看看按时间装箱。

有两个古宇宙帮助我们实现以下目标的功能将事件分配给不同的时间间隔或“箱子”。第一,我们将使用时间(_B)为我们的研究。该函数需要最大和最小时间间隔来运行。正如我们所知,我们对石炭纪和二叠纪,我们可以利用这些作为我们的间隔来获得合适的我们追求的阶段级垃圾箱:

#生成时间段
箱子<- 时间(_B)(间隔= c(c)(“石炭纪”,“二叠纪”),
                  等级= “舞台”,
                  刻度= “GTS2012”,
                  绘图= 错误的)

(垃圾箱)
##bin interval_name rank max_ma mid_ma min_ma duration_myr缩写颜色字体##1 1 Tournaisian舞台358.9 352.80 346.7 12.2 T#8CB06C黑色##2 2 Visean阶段346.7 338.80 330.9 15.8 V#A6B96C黑色##3 3谢尔普霍夫阶330.9 327.05 323.2 7.7 Se#BFC26B黑色##4 4巴什基尔阶323.2 319.20 315.2 8.0 B#99C2B5黑色##5 5莫斯科舞台315.2 311.10 307.0 8.2 M#B3CBB9黑色##6 6 Kasimovian阶段307.0 305.35 303.7 3.3 Ka#BFD0C5黑色

在我们将事件放入这些时间箱之前,我们需要事件发生的年代以百万年计。自从数字时代以来从PBDB下载数据后可能发生了更改,我们将使用查找(_U)获取内事件的数字年龄四足动物基于指定间隔的数据集姓名:

#使用Palaeoverse提供的间隔键获取命名间隔的新数字年龄
四足动物<- 查找(_U)(四足类,int_key键=interval_key)

#确保任何无法匹配的值都包含其原始值
四足动物$间隔最大值<- 如果不是这样(is.na公司(四足类$间隔最大值),
四足动物$最大值,
四足动物$间隔最大值)
四足动物$间隔最小值<- 如果不是这样(is.na公司(四足类$间隔最小值),
四足动物$最小_ ma,
四足动物$间隔(最小值)
四足动物$间隔mid_ma<-(四足动物$最小值+四足动物$最大值(_ma)/2

#查看更新的数据集
四足动物[1:5,35:37]
##间隔最大间隔最小间隔## 1         307.000         302.400          298.90## 2         265.100         262.500          259.10## 3         251.902         249.685          247.20## 4         290.100         284.700          283.50## 5         283.500         275.800          272.95

正如你所看到的,我们有一些新的列更新了间隔时间。Handy!手持!

现在,我们可以使用bin_时间。目前,我们将使用“中间”方法,但我们稍后再讨论这个问题。

#重命名列,以便使用新的间隔进行装箱
列名(四足动物)[9:10]<- c(c)(“旧最大值”,“旧最小值”)
列名(四足动物)[c(c)(35,37)]<- c(c)(“最大值”,“最小值”)

#生成时间段
四足动物<- bin_时间(occdf(occdf)=四足动物,
                      垃圾箱=箱子,
                      方法= “中间”)
##bin_time中的错误(occdf=tetrapods,bins=bins,method=“mid”):发生数据的最小年龄小于bins的最小年龄。

哦,不!我们遇到了一个错误。这是因为有些事情在我们感兴趣的时间间隔之外。bin_时间无法将位于您选择的时间间隔,为了使其生效,我们首先必须删除这些事件。

#删除小于我们感兴趣的时间间隔的事件
cp_四足动物<- 子集(四足类,最小> 最小值(垃圾箱$最小值)

#将出现的箱子放入选定的时间箱子
中足类<- bin_时间(occdf(occdf)=cp_四足动物,
                          垃圾箱=箱子,
                          方法= “中间”)
##bin_time中的警告(occdf=cp_tetrapods,bins=bins,method=“mid”):一个或多个##矿点的中点年龄相当于bin边界。跳过这些装箱##个事件。提示:`which(is.na(occdf$bin_assignment))`。

这样更好!让我们看看我们的数据集是如何变化的。

#检查数据集列
列名(中足类)
##[1]“occurrence_no”“collection_no”“identified_name”“ideentified_rank”##[5]“accepted_name”“accepted_rank”“early_interval”“late_intervals”##[9]“old_max_ma”“old_min_ma”、“门”“类”##[13]“order”“family”“genus”“abund_value”##[17]“abund_unit”“lng”“lat”“collection_name”##[21]“cc”“formation”“stratgroup”“member”##[25]“区域”“岩性1”“环境”“压力模式”##[29]“taxon_environment”“能动性”“生活习惯”“饮食”##[33]“early_stage”“late_stage“max_ma”“interval_mid_ma”##[37]“min_ma”“id”“n_bins”“bin_assignment”##[41]“箱_中点”

正如您所看到的,四个新列(变量)已经添加到我们的数据集。其中两项尤为重要。首先是箱子_分配,它显示发生的位置已添加到。第二个是_箱-这表明有多少事件可能已放置在其中的容器中。让我们进一步检查这一点。

#制作一个潜在箱子数量表
桌子(中足类$n个箱子)#原始计数
## ##    1    2    3    4    5    6    7    8    9 ##  843 1754  425  268   33   34    3    2   16
桌子(中足类$n个箱子)/ nrow公司(中足类)#比例
## ##            1            2            3            4            5            6            7 ## 0.2495559503 0.5192421551 0.1258140912 0.0793368857 0.0097690941 0.0100651273 0.0008880995 ##            8            9 ## 0.0005920663 0.0047365305

如您所见,只有约25%的数据集可以分配给一个bin-其他事件无法确定分配给单个时间间隔。这是其他方法用于bin_时间函数很方便。它们为用户提供将事件分配给箱子时的不同选项。而不是“mid”方法,让我们试试“most”方法,它将发生在垃圾箱中,覆盖了大部分潜在时间范围。

#将出现的箱子放入选定的时间箱子
maj_四足动物<- bin_时间(occdf(occdf)=cp_ trapods,
                          垃圾箱=箱子,
                          方法= “多数”)

我们建议使用这些不同的选项它们如何影响你的成绩!

接下来,我们还将在空间上放置我们的事件。我们需要一些函数来执行此操作。首先,我们需要将古坐标添加到我们的数据集。我们可以使用古旋回要执行的函数这个。

#古旋回事件
maj_四足动物<- 古旋回(occdf(occdf)=主要四足动物,年龄= “bin_midpoint”,
                              方法= “点”,模型= “古地图”)

现在让我们检查它是否有效…

#检查古坐标
(maj_四足动物[,c(c)(“p_lng”,“p_lat”)])
##p_lng p_lat## 1 -39.1618   2.9214## 2 -34.0923 -59.1326## 4 -29.7188  -0.1250## 5 -27.9228   3.6845## 6 -29.0469  -0.2730## 7 -16.5579  -6.0513

我觉得不错!现在我们有了我们的古坐标事件,我们可以将它们放入空间箱中。我们可以使用箱子_空间函数,它将每个事件分配给许多离散的等面积六边形网格单元(基于优步的H3系统).

#制作一个潜在箱子数量表
maj_四足动物<- 箱子_空间(occdf(occdf)=主要_ trapods,
                           液化天然气= “p_lng”,
                           纬度= “p_lat”,
                           间距= 100)
##主电网中相邻单元之间的平均间距设置为103.6 km。##H3分辨率:3
#显示使用“bin_space”添加的新列的前6行。
(maj_四足动物[,c(c)(“单元格ID”,“单元格中心_lng”,“单元格中心_平面”)])
##单元格ID单元格中心单元格lng单元格中心单元格lat##1 8380d4fffffffff-38.83199 3.04111345##2 83dd68fffffffff-34.6666-59.09848198##4 837c65fffffffff-29.87643-0.04859754##5 837c40 ffffffffff-27.94272 3.31086571##6 837c64fffffffff-28.90531-0.63974717##7 837da3fffffffff-16.16673-6.15422544

箱子_空间添加了一些新列,包括一个带有唯一的网格单元ID,以及纬度和纵向坐标表示该单元的质心。

既然我们既有时间箱又有空间箱,我们可以使用这些数据以查看四足动物化石在我们的数据集中的空间覆盖情况随时间变化。

#提取唯一的间隔中点
中点<- 分类(独特的(主要_四足动物$bin_中点))

#计算每个时间段中唯一单元格的数量
唯一单元格<- 独特的(maj_trapods[,c(c)(“bin_midpoint”,“单元格ID”)])
斯帕克科夫<- 组_应用(unique_ cells,组= “bin_midpoint”,有趣=nrow)

让我们暂时保存下来,继续进行一些分析!

独特的分类群和α多样性

在许多情况下,古生物学家仅通过保留根据给定的分类学分辨率确定的唯一事件(例如属或种);然而,这可能会产生一些有用的信息被丢弃。这个税务_唯一功能保留鉴定为较粗分类学分辨率的事件尚未在数据集中表示。例如以下事件:

物种级鉴定过滤器将减少物种数量富裕到只有两个(A.石棺霸王龙).然而,这些分支都不是嵌套在一起的,因此未确定标识的事件表示至少一个尚未在数据集中表示的物种。税务_唯一旨在处理此类分类数据,并将保留所有七个本例中的“物种”。有关更多详细信息,请参阅?税务_唯一.

此函数在查看alpha时特别有用多样性(当地丰富性)。让我们通过筛选将其应用于数据集它达到了基因水平。

#筛选到类别级别:
tet属<- 税款(U)(occdf(occdf)=主要四足动物,属= “属”,家庭= “家庭”,
                         订单= “订单”,类= “类”,分辨率= “属”)

我们可以将其与原始数据集中的属进行比较,以了解使用添加了多少个属tax_unique():

#以前有多少独特的属:
长度(独特的(主要_四足动物$属)
## [1] 717
#之后有多少独特的属:
长度(独特的(四属$唯一名称)
## [1] 719

如你所见,我们增加了两个分类群,否则会是忽略!要更具体地查看函数是如何执行的,请使用看看第718行,它记录了一个不确定的家族事件二齿类。此事件现在具有唯一的名称‘双齿类昆虫’

#请参见第718行
tet属[718, ]
##类序科属unique_name##718双齿石首鱼双齿石首鱼<NA>双齿石首鱼indet。

现在,让我们使用这个函数来提取每种植物的独特属集合(=位置)组_应用:

#使用group_apply和tax_unique:
col_属<- 组_应用(occdf(occdf)=主要四足动物,
                           组= c(c)(“集合_否”),
                           有趣=税务_唯一,
                           属= “属”,
                           家庭= “家庭”,
                           订单= “订单”,
                           类= “类”,
                           分辨率= “属”)

#请参阅新数据帧的结构:
字符串(科属)
##“data.frame”:2853 obs.,共6个变量:##$class:chr“Osteichthyes”“Osterichthyes“Ostelichthyes,”Osteichttphyes“”爬行动物“。。。##$订单:chr NA“Temnospondyli”“Cotylosauria”NA。。。##$家族:chr NA“异形科”NA“Bolosauridae”。。。##$属:chr NA“Parioxys”“Archeria”“Bolosaurus”。。。##$unique_name:chr“Osteichthyes indet.”“Parioxys sp.”“Archeria sp.””“Bolosaurus sp.”。。。##$collection_no:chr“11149”“11152”“11165”“11164”。。。

接下来,让我们统计每个收藏的独特属数:

#获取每个集合的独特属的名称
独特属<- 独特的(coll_generas[,c(c)(“唯一名称”,“集合_否”)])

#计算每个集合的独特属数
coll_taxa公司<- 组_应用(unique_genera,组= “集合_否”,有趣=nrow)

#重命名列名:
列名(coll_taxa)<- c(c)(“n_分类群”,“集合_否”)

#快速查看新数据帧
(coll_taxa)
##分类集合否## 1      1        104796## 2      1        106270## 3      3        106558## 4      8        108766## 5      3        109702## 6      1         11149

要绘制α多样性(局部丰富度)图,我们需要添加这些集合的间隔时间数据:

#以与收藏及其数百万年历史相关的栏目为例:
coll信息<-maj_四足动物[,c(c)(“集合_否”,“最大值(_M)”,“间隔_mid_ma”,“最小值”)]

#根据集合编号删除重复集合(第1列)
coll信息<-coll信息[!复制(收集信息[1]),]

#将此数据帧与上面的数据帧组合
字母_数据<- 合并(coll_info、coll_taxa、,由= “集合_否”)

#看一看:
(字母_数据)
##集合_无最大最大间隔_最小最小分类群## 1         11149 290.10          284.70 283.50      1## 2         11152 293.52          283.90 272.95      1## 3         11165 298.90          294.50 290.10      9## 4         11323 303.70          301.15 293.52      1## 5         12943 307.00          302.40 298.90      1## 6         12976 283.50          275.80 272.95      7

完成。现在来绘制时间的α多样性!让我们从一个简单散点图:

#绘制石炭纪和二叠纪α多样性图
情节(字母_数据$间隔mid_ma,字母数据$n分类,#添加点
     xlim公司= 转速(范围(字母_数据$间隔mid_ma,na.rm(毫米)= 真的)),#反转x轴
     xlab公司=“时间(Ma)”,伊拉布=“分类号”,#轴标签
     每小时= 19,科尔= “#0e826f”)#点样式和颜色
区块alpha-div-plot-1的绘图

区块alpha-div-plot-1的绘图

看起来不错,但要弄清楚是什么阶段有点困难包含哪些数据点。轴_地理()添加了地质图和轴之间的时间刻度。

根据上面的绘图,让我们使用此函数添加x轴的时间刻度:

#设置边距
标准(三月= c(c)(7.1,4.1,4.1,2.1))#如果添加更多间隔类别,请在底部展开

#绘制最终的α多样性图
情节(字母_数据$interval_mid_ma,字母数据$n分类,#添加点
     轴= 错误的,
     xlim公司= 转速(范围(字母_数据$interval_ mid_,na.rm(毫米)= 真的)),#反转x轴
     xlab公司= " ",伊拉布= “分类号”,#轴标签
     每小时= 19,科尔= “#0e826f”)#点样式和颜色
()
(2)#向左侧添加法线轴
轴_地理(侧面= 1,间隔= 列表(“时代”,“期间”))
标题(xlab公司= “时间(Ma)”,线路= 4)
区块alpha-div-plot-2的绘图

区块alpha-div-plot-2的绘图

太神了!现在我们可以清楚地看到α多样性似乎是二叠纪远高于石炭纪。但是四足动物的空间分布在这一边界上发生了变化?让我们用一些其他的古宇宙要查找的函数出去!

通过时间探索范围大小/空间问题

我们可以研究的另一个因素是分类群的范围大小是如何变化的跨C/P边界。我们可以检查这种空间分布通过时间使用税务范围空间函数,其中提供了几种不同的方法来估计分类事件。现在我们将使用该方法反对的论点它使用凸包计算分类群的地理范围,但是函数中详细描述了其余方法可通过以下方式访问的文档?税务范围空间.

我们可以将其与组_应用计算数据集每个时间间隔的平均值:

#首先,删除任何不带属的出现
space_trapods(四足动物)<- 子集(maj_四足动物,!is.na公司(属)

#查找所有属的时间范围
space_trapods(四足动物)<- 组_应用(occdf(occdf)=太空四足动物,
                               组= c(c)(“bin_midpoint”),
                               有趣=税务范围空间,
                               姓名= “属”,
                               液化天然气= “p_lng”,
                               纬度= “p_lat”,
                               方法= “骗局”)

#查看数据集
(空间_四足动物)
##分类单元分类单元id区域bin中点##1阿卜杜拉东1 0.00 257.05##2 Acrodenta 2 0.00 257.05##3阿德洛沙龙3 0.00 257.05##4 Aelurognathus 4伊鲁洛尼亚图斯4 292392.77 257.05##9非洲龙5 14698.41 257.05##14嗜黑粒细胞体6 0.00 257.05

如你所见组_应用税务范围空间生成面积为的数据集每个分类单元每次的地理范围(以千米平方为单位)间隔。注意,这里的面积为零表示只有一个该分类单元在该时间桶中的出现。根据这些信息,我们可以现在画出四足动物在整个石炭纪和二叠纪:

#查找每个时间间隔的平均地理范围大小
空间_四足动物_平均<- 组应用(_A)(空间_四足动物,“bin_midpoint”,功能(df)意思是(df$区域))
列名(空间_四足动物_平均值)<- c(c)(“意指_区域”,“bin_midpoint”)

#创建随时间变化的平均范围大小图
情节(空间_四足动物_平均$bin_中点,空间_四边形_平均值$意思是面积,#添加点
     轴= 错误的,
     xlim公司= 转速(范围(作为数字(空间_四足动物_平均$bin_midpoint),na.rm(毫米)= 真的)),#反转x轴
     xlab公司= " ",伊拉布= 表达(“四足类属的平均范围大小(km)”^2~")"),#轴标签
     每小时= 19,科尔= “#0e826f”)#点样式和颜色
()
(2)#在左侧添加法线轴
轴_地理(侧面= 1,间隔= 列表(“时代”,“期间”))
标题(xlab公司= “时间(Ma)”,线路= 4)
区块alpha-div-plot-3的绘图

区块alpha-div-plot-3的绘图

从图中可以看出四足类在二叠纪增加。然而,我们首先需要当然,我们没有发现另一种模式。记住我们是如何计算的每个时间间隔更早的唯一地理单元的数量?这提供了化石记录空间分布的测量方法。可能是我们没有选择增加的范围大小,而只是二叠纪含化石岩石的更大地理分布。收件人如果是这样的话,我们可以运行一个简单的相关性测试四足动物的平均地理范围大小和独特的数量每个时间间隔中的网格单元:

#在平均范围大小和细胞空间扩散之间进行相关性测试
#通过时间
cor.测试(日志10(空间_四足动物_平均$平均面积),日志10(斯帕克科夫$nrow),方法= “矛兵”)
## ##斯皮尔曼秩相关ρ## ##数据:log10(space_tetrapods_mean$meanarea)和log10(spat.cov$nrow)##S=226.12,p值=0.01898##替代假设:真rho不等于0##样本估计:##ρ## 0.5962179

高的rho值和小于我们的截止值的p值显著性(0.05)表明平均地理范围大小与空间扩散的相关性数据的。看起来这项工作还远没有结束…

……但剩下的就交给你了!

希望这个小插曲已经向您展示了古宇宙功能并帮助为提供工作流你自己的分析。如果您对软件包或其有任何疑问功能,请随时加入我们的Palaeoverse谷歌并留下一个问题;我们的目标是尽快答复可能!

工具书类

Dunne,E.M.、Close,R.A.、Button,D.J.、Brocklehurst,N.、Cashmore、,D.D.、Lloyd,G.T.和Butler,R.J.,2018年。四足类的兴起和“石炭纪雨林”的影响崩溃”。英国皇家学会学报B:生物科学,285(1872), 20172730.