我正在尝试运行一个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值,但这让我对我所做的事情产生了怀疑。
你有什么主意吗?谢谢。
1条答案
按热度按时间smdnsysy1#
我在回答我自己的问题,但我想听听你的意见。
问题似乎来自于
scipy.stats.norm.rvs
,它试图从我给他的平均值、方差和popsize中创建分布样本。样本生成似乎是随机的,这就是为什么我们在最后得到不同的p值。显然,对于我的用例,最好使用
ttest_ind_from_stats
,这样我就有了一个固定的p值