我是 1300 年出生的特定人的後裔的可能性有多大?
換句話說,根據以下,什麼是p?
為了使這個問題成為數學問題而不是人類學或社會科學,並簡化問題,假設在人口中以相等的概率選擇配偶,除了兄弟姐妹和堂兄弟從不交配,而且配偶總是從同一個一代。
- – 初始種群
- ——數代。
- ——每對夫婦的平均子女數。(如果有必要回答,假設每對夫婦的孩子數量完全相同。)
- 沒有孩子的人的百分比,他們不被認為是一對夫婦的一部分。
- ——最後一代的人口。(任何一個或者應該給出,並且(我認為)另一個可以計算出來。)
- – 最後一代中的某人是初始一代中特定人的後代的概率。
當然,這些變量可以更改、省略或添加。為簡單起見,我假設和不要隨時間而改變。我意識到這將得到一個非常粗略的估計,但這是一個起點。
第 2 部分(進一步研究的建議):
你怎麼能認為配偶不是以全球統一的概率選擇的?實際上,配偶更有可能具有相同的地理區域、社會經濟背景、種族和宗教背景。如果不研究這方面的實際概率,這些因素的變量將如何發揮作用?這會有多重要?
因為這個問題得到的答案從天文數字小到幾乎 100% 不等,我想提供一個模擬,作為改進解決方案的參考和靈感。
我稱這些為“火焰圖”。每一個都記錄了群體中遺傳物質在離散世代中繁殖時的分散情況。這些圖是描繪人的細垂直線段的陣列。每一行代表一代,開始的一代在頂部。每一代的後代都在緊挨著它的下一行。
一開始,人口中只有一個人被標記並繪製為紅色。(很難看到,但它們總是繪製在頂行的右側。)它們的直系後代同樣用紅色繪製;它們將出現在完全隨機的位置。其他後代被繪製為白色。因為人口規模可以從一代到下一代有所不同,右側的灰色邊框用於填充空白空間。
這是一組 20 個獨立的模擬結果。
紅色遺傳物質最終在其中九個模擬中消失,剩下的 11 個(55%)倖存者。(在左下角的一種情況下,看起來整個種群最終都滅絕了。)然而,無論哪裡有倖存者,幾乎所有的種群都含有紅色遺傳物質。這提供了證據表明從上一代中隨機選擇的個體含有紅色基因的機會約為 50%。
該模擬通過隨機確定每一代開始時的存活率和平均出生率來工作。生存率來自 Beta(6,2) 分佈:平均為 75%。這個數字既反映了成年前的死亡率,也反映了那些沒有孩子的人。出生率來自 Gamma(2.8, 1) 分佈,因此平均為 2.8。結果是一個殘酷的故事,即生殖能力不足以彌補普遍的高死亡率。它代表了一個極其悲觀的最壞情況模型——但是(正如我在評論中所建議的)人口增長的能力並不是必不可少的。每一代人最重要的是人口中紅色的比例。
為了對繁殖進行建模,通過抽取所需大小的簡單隨機樣本,將當前人口減少到倖存者。這些倖存者是隨機配對的(配對後剩下的任何奇怪的倖存者都不會繁殖)。每對產生一些從泊松分佈中抽取的孩子,其平均值是這一代的出生率。如果父母中的任何一個包含紅色標記,則所有孩子都會繼承它:這模擬了通過任一父母直接血統的想法。
此示例從 512 人口開始,並運行 11 代(包括開始的 12 行)的模擬。這個模擬的變化從少到和盡可能多的使用不同數量的存活率和出生率的人都表現出相似的特徵:到代(在這種情況下為 9 代),大約有 1/3 的機會所有的紅色都消失了,但如果還沒有,那麼大多數人口都是紅色的。再過兩到三代,幾乎所有的種群都是紅色的,並將保持紅色(否則種群將完全消失)。
順便說一句,一代人的存活率達到 75% 或更少並不是幻想。1347 年晚期,鼠疫首次從亞洲進入歐洲。在接下來的三年中,大約 10% 到 50% 的歐洲人口因此而死亡。瘟疫在數百年後幾乎每一代人都會復發一次(但通常不會以同樣的極端死亡率)。
代碼
模擬是使用Mathematica 8 創建的:
randomPairs[s_List] := Partition[s[[Ordering[RandomReal[{0, 1}, Length[s]]]]], 2]; next[s_List, survive_, nKids_] := Flatten[ConstantArray[Max[#], RandomVariate[PoissonDistribution[nKids]]] & /@ randomPairs[RandomSample[s, Ceiling[survive Length[s]]]]] Partition[Table[ With[{n = 6}, ArrayPlot[NestList[next[#, RandomVariate[BetaDistribution[6, 2]], RandomVariate[GammaDistribution[3.2, 1]]] &, Join[ConstantArray[0, 2^n - 1], ConstantArray[1, 1]], n + 2], AspectRatio -> 2^(n/3)/(2 n), ColorRules -> {1 -> RGBColor[.6, .1, .1]}, Background -> RGBColor[.9, .9, .9]] ], {i, 1, 20} ], 4] // TableForm