线粒体夏娃理论模拟

引子

由于线粒体严格遵循母系遗传,只能有母本传给子代。然而,科学家对世界不同地区和民族的人群进行线粒体DNA的调查,发现其线粒体DNA高度相似。因此可以判断,全人类很有可能拥有同一个母系祖先。

看到这个结论感觉难以置信,怀着疑问,对这个问题进行了一点研究:

初探

为了能够较为直观地看到母系遗传的子代情况,使用计算机进行了模拟。为了简化模型,这里假定:

  1. 每一代的种群数量恒定,程序中取n=100000
  2. 在上一代中查找母本时,每个个体的可能性相等

R代码(部分):

n 

代码解释:

  • child
  • ra
  • child

这里不得不吐槽一下,虽然R代码写起来简洁,但运行效率真心太差了。100k的量还可以较快得算完,1M算是勉勉强强,10M就得运行很久了。。。。

整理出数据:

图一:横轴表示向前追溯的代数,纵轴表示家族数量

图二:100代前的种群,横轴表示拥有共同祖先的家族的个体数,纵轴表示家族个数(数据经过排序)

图三:1000代前的种群,横轴表示拥有共同祖先的家族的个体数,纵轴表示家族个数(数据经过排序)

图四:100代前的种群,横轴表示个体编号,纵轴表示所属母本编号(数据经过排序)

图五:1000代前的种群,横轴表示个体编号,纵轴表示所属母本编号(数据经过排序)

分析

图一,从形式上来看很像次数为负的幂函数,近似服从幂律。在不断向祖先追溯的过程中,家族逐渐消亡、个体越来越向大家族集中,即“富者更富”。

图二和图四,近似服从正态分布(由于数据排过序,图示仅为正太分布的一半),对比图二和图三可以看出,样本逐渐向样本中心集中,样本方差逐渐缩小。

图四和图五,近似为均匀分布,这是由于模拟祖先选择时使用的是均匀随机函数。对比两图可以看出,随着代数的不断增加,部分家族消亡,使得更多的人拥有同一个祖先,因此直线变得越来越起伏不平。

虽然经历了1000代,100k的种群依然没有连为一颗家族树,我们不禁要问,多少代后才能找到线粒体夏娃呢?经过模拟,当代数至少为种群数量的1.7倍时,找到线粒体夏娃的可能性比较大。

发表评论

电子邮件地址不会被公开。 必填项已用*标注