5.2 数据矩阵:把线索编成可计算的表格


5.2 数据矩阵:把线索编成可计算的表格

本节摘要:建树的第一道工序是把性状与序列组织成数据矩阵——行为类群、列为性状,交叉格填状态或碱基。编码方案的每个决定都在做模型假设:离散化怎么切阈值、缺失数据怎么补、序列比对怎么对齐、选哪些位点。矩阵不是数据的天真堆砌,矩阵本身就是演化假设,这决定了后续所有推断的方向。

上一节我们学了树的语法,现在进车间。建树算法不吃"翅上有条铜绿带"这种自然语言,它吃的是矩阵——一张行为类群、列为性状、交叉格填状态的表。本节把这张表讲透:它怎么编、编的时候在做什么取舍、哪些看起来中性的决定其实在偷偷预设演化模型。

一、矩阵的三要素

一张系统发生数据矩阵有三个部分:行(类群单元,通常是一个物种或一个个体)、列(性状或位点)、值(状态编码)。形态性状的编码方式是给状态编号:铜绿横带"有=1,无=0",颚齿"4枚=0,5枚=1,6枚=2"。分子数据的矩阵则是一段段对齐好的序列:每个位点是一个"性状",每行是各物种在该位点上的碱基。

矩阵的组织看似机械,其实处处是判断。第一个判断是行要选谁:采样不足(漏掉关键中间类群)会让树的形状失真,采样过多又引入冗余。第二个判断是列要选谁:第 4 章的"同源预审"在这里兑现——只有通过同源审核的性状才有资格进矩阵,趋同性状进来就是在往数据里掺假。第三个判断是值怎么定义:同一性状的编码粒度(分两态还是分三态)会影响树的搜索空间。

二、形态性状的编码三难题

形态编码没有分子编码那么"干净",三个难题长期折磨着形态系统学家。

离散化的阈值。许多形态性状本质是连续的:翅展 35 到 45 毫米,怎么切成"大"和"小"?切在 40 毫米和切在 42 毫米,会把不同的个体分到不同状态。实践里常用的折中是把连续性状保留为连续值(第 5.3 节的模型可以处理),或者用"状态间隔"而不是单个阈值。但要注意:强行离散化会丢掉信息,而且切点本身是一种假设。

缺失数据的处理。化石只有部分骨骼,老标本腐烂丢了翅膀,雌雄个体常缺一方——矩阵里大量格子填不上。处理缺口的经典办法是填"缺失"符号(?),让算法跳过;但缺口比例太高时,树的分辨率会崩。更隐蔽的坑是:缺失不是随机的——古生物类群的缺失集中在大块结构,这种"非随机缺失"会系统性地扭曲推断结果,属于需要专门建模的问题。

性状间的相关性。翅膀长度与身体长度强相关,若两者都进矩阵,等于把同一条信息记了两遍,会"加重"这个信号。好的矩阵要识别并剔除冗余性状,或显式建模性状间的相关性——可惜多数形态矩阵仍在用朴素假设,这也是形态树相对分子树更容易出现假高支持度的原因之一。

三、序列矩阵:比对是一切的前提

分子矩阵的关键工序是比对——把同源位点对齐。序列比对(如 MAFFT、MUSCLE 这类工具做的事)决定哪些列是"同一个位点",比对错了,后面的推断全错。比对中常出现的两个问题:一是插入缺失(indel)处理,序列里有空缺(gap)时,是当作第五个状态还是当缺失符号,直接影响位点信息量;二是歧义区域,序列两端质量差、或重复区无法可靠对齐的片段,惯例是切掉(trim)再进矩阵,否则噪音会稀释信号。

选哪些位点同样有讲究。全基因组有几十亿碱基,矩阵装不下也不需要全装:选直系同源基因(在不同物种里由同一祖先基因传下来的,而非旁系同源)是关键,因为旁系同源位点(复制产生)讲的是基因复制史,不是物种史。第 5 章支柱页提到的"基因树不等于物种树",一大半根源就在这:用了旁系同源位点或用了受选择强影响的位点,树的形状就会被带偏。

# 概念示意:数据矩阵的组织结构(伪代码,非生产脚本) matrix = [] for taxon in taxa: row = {"taxon": taxon} row["形态_铜绿横带"] = 1 if taxon.has_band else 0 row["形态_颚齿数"] = taxon.mandible_teeth # 连续性状保留原值 row["COI_137"] = taxon.coi[136] # 序列位点按比对后坐标取碱基 row["COI_138"] = taxon.coi[137] matrix.append(row) # 输出到建树程序时转成 PHYLIP 或 NEXUS 格式 print(to_nexus(matrix)) # NEXUS 是分子系统学的通用交换格式

四、完整案例:一份矩阵如何决定一棵树的命运

背景:某研究团队要重建一个快速辐射的甲虫属的亲缘,最初只测了一个线粒体基因,矩阵里填满该基因全长的 640 个位点。操作:先用这套矩阵建树,支持度看着不错;随后补测了三个核基因,把矩阵扩成"1 个线粒体 + 3 个核基因"的联合矩阵,并用比对工具重新对齐,切掉了两端质量差的 120 个位点。结果:联合矩阵重建的树与单基因树在四个内部节点上拓扑不同,其中两个节点的支持度翻案(原来自展值 95% 的分支在联合数据里只剩 60%,而原来 40% 的分支涨到 92%)。解读:这个案例讲了两件事——单基因矩阵信息量不足,且线粒体基因受选择与母系遗传的影响,可能系统性偏向某种拓扑;联合矩阵通过补足独立信息与清洗低质量位点,给了更稳的答案。变式:若当初把"切掉两端"省略,把低质量位点全留下,噪音会稀释信号,可能得到"看似支持度不错、实则错误"的树——这正是第 5.3 节要防的假高支持度。

五、回到本案:LN-2026-0717 的矩阵设计

按本章原则给 LN-2026-0717 开一张矩阵处方:行——它自己 + 同属 12 个代表种 + 外群 1 个;列——形态性状约 20 个(全部过同源预审,排除趋同嫌疑的翅斑、体色),分子位点 COI 全序列加两个核基因各一段;缺失处理——尽量采到雌雄双性,实在缺失用符号标注并在方法里交代;比对——用标准工具对齐并 trim 掉低质量区。这张处方没有一处是"随意",每一条都对应一个已知的坑。做对了,后面建树才不会把案带偏。

本节要点回顾

  • 矩阵 = 行为类群 + 列为性状 + 交叉格填状态,是建树唯一入口;
  • 形态编码三难题:连续性状离散化阈值、缺失数据的非随机性、性状间相关性;
  • 序列矩阵的前提是比对:indel 处理与低质量区剪切都影响信号;
  • 只选直系同源基因:旁系同源位点讲的是基因史不是物种史;
  • 单基因矩阵信息不足,联合矩阵补足独立信息才是可靠做法。

矩阵就位。下一站是质检——树建出来了,自展值和后验概率到底在告诉我们什么。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U