• 手动AB实验显著性统计


    代码如下

    import numpy as np
    from scipy import stats

    #
    先将对照组与实验组的数据放入use_time_base与use_time_exp a = [] b = [] count = 1000 for i in range(count): r = random.random() if r < 0.9: a.append(0) else: a.append(int((r-0.9)*100/2)) r = random.random() if r < 0.89: b.append(0) else: b.append(int((r-0.9)*100/2)) use_time_base = np.array(a) use_time_exp = np.array(b) #显著度计算 print('【use_time样本概况】') mean_base = use_time_base.mean() std_base = use_time_base.std() mean_exp = use_time_exp.mean() std_exp = use_time_exp.std() print("对照组:样本均值为%.2f,样本标准差为%.2f" % (mean_base,std_base)) print("实验组:样本均值为%.2f,样本标准差为%.2f" % (mean_exp,std_exp)) if stats.kstest(use_time_base, 'norm', (mean_base, std_base))[1] < 0.05 and stats.kstest(use_time_exp, 'norm', (mean_exp, std_exp))[1] < 0.05: print "对照组服从正态分布:",stats.kstest(use_time_base, 'norm', (mean_base, std_base)) print "实验组服从正态分布:", stats.kstest(use_time_exp, 'norm', (mean_exp, std_exp)) if stats.levene(use_time_base, use_time_exp)[1] > 0.05: print "对照组和实验组方差相等:", stats.levene(use_time_base, use_time_exp) if stats.ttest_ind(use_time_base,use_time_exp)[1] < 0.05: print "T检验结论:对照组和实验组存在显著差异",stats.ttest_ind(use_time_base,use_time_exp) else: print "T检验结论:对照组和实验组不存在显著差异",stats.ttest_ind(use_time_base,use_time_exp) else: print "对照组和实验组方差不相等:", stats.levene(use_time_base, use_time_exp) if stats.ttest_ind(use_time_base,use_time_exp,equal_var=False)[1] < 0.05: print "T检验结论:对照组和实验组存在显著差异",stats.ttest_ind(use_time_base,use_time_exp,equal_var=False) else: print "T检验结论:对照组和实验组不存在显著差异",stats.ttest_ind(use_time_base,use_time_exp,equal_var=False) if stats.mannwhitneyu(use_time_base, use_time_exp, alternative='two-sided')[1] < 0.05: print "非参数检验结论:对照组和实验组存在显著差异",stats.mannwhitneyu(use_time_base, use_time_exp, alternative='two-sided') else: print "非参数检验结论:对照组和实验组不存在显著差异",stats.mannwhitneyu(use_time_base, use_time_exp, alternative='two-sided') else: print "样本数据不服从正态分布,进行非参数检验:",stats.mannwhitneyu(use_time_base, use_time_exp, alternative='two-sided') if stats.mannwhitneyu(use_time_base, use_time_exp, alternative='two-sided')[1] < 0.05: print("非参数检验结论:对照组和实验组存在显著差异") else: print("非参数检验结论:对照组和实验组不存在显著差异")

    参考文献:

    https://zhuanlan.zhihu.com/p/235826647

  • 相关阅读:
    CF1168B Good Triple 性质分析
    bzoj 4994: [Usaco2017 Feb]Why Did the Cow Cross the Road III 树状数组_排序
    BZOJ 3940: [Usaco2015 Feb]Censoring AC自动机+栈
    BZOJ 1691 [Usaco2007 Dec]挑剔的美食家 multiset+排序+贪心
    BZOJ 1725: [Usaco2006 Nov]Corn Fields牧场的安排 状压动归
    BZOJ 1726: [Usaco2006 Nov]Roadblocks第二短路 Dijkstra
    BZOJ 1666: [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏 幼儿园测试题
    BZOJ 5508: [Tjoi2019]甲苯先生的字符串 矩阵乘法_思维
    BZOJ 1602: [Usaco2008 Oct]牧场行走 倍增裸题
    描述符get/set/delete,init/new/call,元类
  • 原文地址:https://www.cnblogs.com/jhc888007/p/14241700.html
Copyright © 2020-2023  润新知