我在网上进行了众多 DNA 测试之一,它根据 DNA 确定了遗传亲属,但这些亲属中的大多数至少是第三代堂兄弟。这些其他用户的家谱在线,我可以作为 JSON 数据访问。
我被收养了,所以“基本事实”对我来说是未知的。
但我需要某种算法来处理这些数据。我能想到的最简单的方法是从数据中找到最常见的姓氏,但这似乎不是很复杂。我想要更多建议或相关讨论或算法的链接。
我不想讨论我是否应该这样做。我不是 100% 确定我对它感兴趣是为了自己的利益,还是为了更多的学术活动。
我在网上进行了众多 DNA 测试之一,它根据 DNA 确定了遗传亲属,但这些亲属中的大多数至少是第三代堂兄弟。这些其他用户的家谱在线,我可以作为 JSON 数据访问。
我被收养了,所以“基本事实”对我来说是未知的。
但我需要某种算法来处理这些数据。我能想到的最简单的方法是从数据中找到最常见的姓氏,但这似乎不是很复杂。我想要更多建议或相关讨论或算法的链接。
我不想讨论我是否应该这样做。我不是 100% 确定我对它感兴趣是为了自己的利益,还是为了更多的学术活动。
最大似然估计是此类问题的标准方法之一。将家谱拼凑在一起后,计算树中某人获得您的测试结果的可能性(自由地进行独立假设以简化数学)。然后遍历所有人(希望这不会花费太长时间)并报告 k 最大的可能性。
这里的棘手部分是获得合理的可能性估计。这是一种方法;我不知道它是否有任何好处。您的家庭“树”是一个有向无环图(希望没有人拥有时间机器),其中每个节点恰好有零个或两个前辈。以拓扑(即合理的时间顺序)顺序遍历节点。对于前任节点为零的节点,初始化一个“染色体”,该“染色体”由 2k 个随机位组成,这些位被分组为 k 对 1 位等位基因(不确定如何设置 k;也许有一千个?)。对于具有两个前辈的节点,对于 k 对中的每一对,通过选择一个母亲的等位基因和一个父亲的等位基因来生成染色体。最后,您可以通过汉明距离获得遗传相似性分数。你必须找到测试结果和距离之间的映射,