import numpy as np
from scipy.stats import ttest_ind
np.random.seed(0)
# p1, p2는 모집단에 대한 proportion이며,
# 어느 정도 차이가 있지만 크지는 않음.
p1 = .36
N1 = 1000
p2 = .39
N2 = 500
print("=="*30)
print("== t-test for two proportion for ind population diff")
# p1의 분포를 가지는 binomial dist에 대해서 n번 시행했을 때의 결과를 size만큼 출력
# 즉, n이 10이라면, 10번을 시행했을 때의 결과, 즉 0과 10 사이의 값이 적힘.
population1 = np.random.binomial(n=1, p=p1, size=N1)
# p1의 분포를 가지는 binomial dist에 대해서 n번 시행했을 때의 결과를 size만큼 출력
population2 = np.random.binomial(1, p2, N2)
####
# Parameters
# a, b: 두 집단
# equal_var: 두 집단의 variance가 같은지, 다른지를 측정함. True일 경우는 같다고, False일 경우에는 다르다고 하며, 다른 테스트를 수행함.
# ----------------------
# Returns
# statistic: The calculated t-statistic.
# pvalue : The two-tailed p-value.
####
statistic, p_value = ttest_ind(
a=population1,
b=population2,
equal_var=True # variance equal.
)
print(f"statistic: {statistic:.5f}")
print(f"p_value : {p_value:.5f}")
print("=="*30)
# 위와 같이 proportion 뿐만 아니라, 다음과 같이 그냥 continuous한 값을 집어넣어도 됩니다.
print("== t-test for two average for ind population diff")
N = 100000
sample1 = np.random.normal(0, 1, N)
sample2 = np.random.normal(0, 1, N)
statistic, p_value = ttest_ind(
a=sample1,
b=sample2,
equal_var=True # variance equal.
)
print(f"statistic: {statistic:.5f}")
print(f"p_value : {p_value:.5f}")
print("=="*30)
댓글남기기