为什么scipy.stats.ttest_ind对相同的输入提供不同的结果?(非幂等)

cvxl0en2  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(136)

我正在尝试运行一个T检验来检查给定KPI的两个样本之间是否存在显著差异。我正在运行以下Python代码:

population_control = 18917
population_treatment = 169996
stddev_control = 3.7944261452602888
stddev_treatment = 3.8521668798017057
avg_control = 2.906
avg_treatment = 2.921

import scipy.stats
rvs1 = scipy.stats.norm.rvs(loc=avg_control,scale=stddev_control,size=population_control)
rvs2 = scipy.stats.norm.rvs(loc=avg_treatment,scale=stddev_treatment,size=population_treatment)
t_score, pvalue = scipy.stats.ttest_ind(rvs1, rvs2, equal_var = False)

print(pvalue)

但是我不明白为什么对于相同的输入信息,输出会从一个执行到另一个执行而变化。有时我的p值〈0.05(显著),有时它会高得多。
同样,当我输入np.random.seed(12345678)时,我总是得到相同的p值,但这让我对我所做的事情产生了怀疑。
你有什么主意吗?谢谢。

smdnsysy

smdnsysy1#

我在回答我自己的问题,但我想听听你的意见。
问题似乎来自于scipy.stats.norm.rvs,它试图从我给他的平均值、方差和popsize中创建分布样本。样本生成似乎是随机的,这就是为什么我们在最后得到不同的p值。
显然,对于我的用例,最好使用ttest_ind_from_stats,这样我就有了一个固定的p值

相关问题