다음 Python2 용 Python 스크립트를 참조하십시오.
답은 David C의 답변에서 영감을 얻었습니다.
마지막 대답은 https://www.ssa.gov/oact/babynames/limits.html "National Data 의 데이터에 따르면 야곱이 가장 가능성이 높은 이름 인 한 학급에서 5 명 이상의 야곱을 찾을 확률입니다. "에서 2006 년.
확률은 성공 확률이 Jacob-Probability 인 이항 분포에 따라 계산됩니다.
import pandas as pd
from scipy.stats import binom
data = pd.read_csv(r"yob2006.txt", header=None, names=["Name", "Sex", "Count"])
# count of children in the dataset:
sumCount = data.Count.sum()
# do calculation for every name:
for i, row in data.iterrows():
# relative counts of each name being interpreted as probabily of occurrence
data.loc[i, "probability"] = data.loc[i, "Count"]/float(sumCount)
# Probabilites being five or more children with that name in a class of size n=25,50 or 100
data.loc[i, "atleast5_class25"] = 1 - binom.cdf(4,25,data.loc[i, "probability"])
data.loc[i, "atleast5_class50"] = 1 - binom.cdf(4,50,data.loc[i, "probability"])
data.loc[i, "atleast5_class100"] = 1 - binom.cdf(4,100,data.loc[i, "probability"])
maxP25 = data["atleast5_class25"].max()
maxP50 = data["atleast5_class50"].max()
maxP100 = data["atleast5_class100"].max()
print ("""Max. probability for at least five kids with same name out of 25: {:.2} for name {}"""
.format(maxP25, data.loc[data.atleast5_class25==maxP25,"Name"].values[0]))
print
print ("""Max. probability for at least five kids with same name out of 50: {:.2} for name {}, of course."""
.format(maxP50, data.loc[data.atleast5_class50==maxP50,"Name"].values[0]))
print
print ("""Max. probability for at least five kids with same name out of 100: {:.2} for name {}, of course."""
.format(maxP100, data.loc[data.atleast5_class100==maxP100,"Name"].values[0]))
최대 이름이 야곱 인 경우 25 명 중 동일한 이름을 가진 5 명 이상의 어린이의 확률 : 4.7e-07
최대 물론 야곱이라는 이름은 50 명 중 1.6 명에서 같은 이름을 가진 5 명 이상의 어린이가있을 확률입니다.
최대 이름이 야곱 인 경우 100 명 중 동일한 이름을 가진 5 명 이상의 어린이의 확률 : 0.00045입니다.
David C와 동일한 결과 10 배 감사. (내 답변은 모든 이름을 합한 것은 아니며 논의해야 할 수도 있습니다)