Код: Выделить всё
from scipy.stats import ttest_ind, norm
def test_ttest_ind():
rng = np.random.default_rng(43)
rvs1 = stats.norm.rvs(loc=15, scale=10, size=500, random_state=rng)
rvs2 = stats.norm.rvs(loc=15, scale=10, size=500, random_state=rng)
print("Same same")
print(ttest_ind(rvs1, rvs2))
print(ttest_ind(rvs1, rvs2, equal_var=False))
print(ttest_ind(rvs1, rvs2, permutations=100000, random_state=rng))
print(ttest_ind(rvs1, rvs2, permutations=100000, random_state=rng, equal_var=False))
print()
print("Same size diff variance")
rvs3 = stats.norm.rvs(loc=15, scale=20, size=500, random_state=rng)
print(ttest_ind(rvs1, rvs3))
print(ttest_ind(rvs1, rvs3, equal_var=False))
print(ttest_ind(rvs1, rvs3, permutations=100000, random_state=rng))
print(ttest_ind(rvs1, rvs3, permutations=100000, random_state=rng, equal_var=False))
print()
print("Diff size diff variance")
rvs4 = stats.norm.rvs(loc=15, scale=20, size=100, random_state=rng)
print(ttest_ind(rvs1, rvs4))
print(ttest_ind(rvs1, rvs4, equal_var=False))
print(ttest_ind(rvs1, rvs4, permutations=100000, random_state=rng))
print(ttest_ind(rvs1, rvs4, permutations=100000, random_state=rng, equal_var=False))
print()
Код: Выделить всё
Same same
TtestResult(statistic=np.float64(0.7788368), pvalue=np.float64(0.43626), df=np.float64(998.0))
TtestResult(statistic=np.float64(0.7788368), pvalue=np.float64(0.43626), df=np.float64(997.167))
TtestResult(statistic=np.float64(0.7788368), pvalue=np.float64(0.43619), df=np.float64(nan))
TtestResult(statistic=np.float64(0.7788368), pvalue=np.float64(0.43470), df=np.float64(nan))
# OK all the above looks good.
Same size diff variance
TtestResult(statistic=np.float64(0.5116953), pvalue=np.float64(0.60897), df=np.float64(998.0))
TtestResult(statistic=np.float64(0.5116953), pvalue=np.float64(0.60901), df=np.float64(730.112))
TtestResult(statistic=np.float64(0.5116953), pvalue=np.float64(0.60763), df=np.float64(nan))
TtestResult(statistic=np.float64(0.5116953), pvalue=np.float64(0.61045), df=np.float64(nan))
# The variance *is* different... So how come pooling it or not has no effect?
Diff size diff variance
TtestResult(statistic=np.float64(-5.125124), pvalue=np.float64(4.0e-07), df=np.float64(598.0))
TtestResult(statistic=np.float64(-3.577155), pvalue=np.float64(0.00051), df=np.float64(111.951))
TtestResult(statistic=np.float64(-5.125124), pvalue=np.float64(9.9e-06), df=np.float64(nan))
TtestResult(statistic=np.float64(-3.577155), pvalue=np.float64(0.00046), df=np.float64(nan))
# Now the sample size differs, pooling the variance seems to have a huge effect! Why?
Подробнее здесь: https://stackoverflow.com/questions/790 ... -ttest-ind