A/B 試驗的假設推論

A/B 試驗的假設推論

來自專欄數據分析師學習之路4 人贊了文章

掌握套路,以不變應萬變


目的1:得到描述性統計分析

目的2: 得到推論性統計分析

  1. 假設檢驗:

  • 檢驗類型,抽樣分布,檢驗方向,p值,以及選擇的假設
  1. 置信區間:

  • 置信區間類型,置信水平,置信區間
  1. 效應量:

  • 效應量大小

本次材料為鍵盤布局的AB試驗

  1. AB試驗的應用場景通常是要進行不同的版本的測試,根據樣本的測試數據來看出假設選擇以及效應量
  2. 假設情況表示是否有顯著差異,效應量表示差異的程度,兩者共同決定結論
  3. A B 試驗為兩批獨立的對象進行兩個方案的試驗數據,通常為獨立樣本試驗
  4. 獨立雙樣本試驗的標準差是聯合標準差和原來的不一樣需要注意
  5. 獨立雙樣本試驗的抽樣分布根據兩個樣本的分布情況來判定的
  6. 獨立雙樣本檢驗的檢驗方式是雙尾檢驗,python中使用 statsmodels 模塊

假設:零假設為A,B布局沒有區別,即mean_A = mean_B 備選假設為A,B布局有區別,即mean_A != mean_B

import numpy as np import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport statsmodels.stats.weightstats as stdf_sample = pd.read_excel(D:AIJupyterAB.xlsx)df_sample.head()

A B 0 6 6 1 6 11 2 2 8 3 7 5 4 8 11

兩個樣本信息的描述性統計分析

mean_A = df_sample[A].mean()std_A = df_sample[A].std()mean_B = df_sample[B].mean()std_B = df_sample[B].std()print(A布局的平均錯誤個數為:%d,標準差為%.2f% (mean_A,std_A))print(B布局的平均錯誤個數為:%d,標準差為%.2f% (mean_B,std_B))A布局的平均錯誤個數為:5,標準差為2.06B布局的平均錯誤個數為:7,標準差為2.65

兩個樣本數據分別的抽樣分布

由下面小樣本,並且都分別為接近正態分布,可以認為是t分布的獨立雙樣本檢驗

print(A樣本的大小為%d, B樣本的大小為%d%(df_sample.shape[0],df_sample.shape[0]))f,[ax0,ax1] = plt.subplots(2,1,figsize=(20,20))sns.distplot(df_sample[A],ax=ax0)ax0.set_xlabel(number,fontsize=35)ax0.set_ylabel(qty,fontsize=35)ax0.tick_params(axis=x,labelsize=30)ax0.tick_params(axis=y,labelsize=30)sns.distplot(df_sample[B],ax= ax1)ax1.set_xlabel(number,fontsize=35)ax1.set_ylabel(qty,fontsize=35)ax1.tick_params(axis=x,labelsize=30)ax1.tick_params(axis=y,labelsize=30)A樣本的大小為25, B樣本的大小為25

ttest_ind:獨立雙樣本t檢驗usevar = unequal 表示兩個總體的方差不一致第一個參數是樣本A的數據第二個參數是樣本B的數據返回的第一個參數是t是假設檢驗計算出的t值第二個返回的是雙尾檢驗的p值第三個df是獨立雙樣本的自由度t,p_twotails,df = st.ttest_ind(df_sample[A],df_sample[B],usevar=unequal)print(獨立雙樣本t檢驗的t值為%.2f,雙尾檢驗的p值為%f,自由度為%d%(t,p_twotails,df))獨立雙樣本t檢驗的t值為-4.06,雙尾檢驗的p值為0.000195,自由度為45

得出結論:當雙尾檢驗的p值小於顯著水平alpha時就拒絕原假設

# 顯著水平 = 0.05alpha = 0.05if p_twotails <= alpha: print(拒絕零假設,接受備選假設即A B 布局有結果有差異, mean_A != mean_B)else: print(接受零假設即 A B 布局沒有差異,mean_A = mean_B)拒絕零假設,接受備選假設即A B 布局有結果有差異, mean_A != mean_B

假設檢驗小結:

  • 獨立雙樣本t(45)=-4.06,p = 0.000195(alpha=0.05),雙尾檢驗,拒絕零假設,即mean_A !=mean_B

進行置信區間的計算

  • a = 樣本平均值 - t_ci * 標準誤差
  • 樣本平均值 = 樣本1平均值 - 樣本2平均值
  • 標準誤差 : SE = np.sqrt((std_A)^2/n1+(std_2)^2/n2))
  • t_ci 可以使用graphpad.com/quickcalcs 網址來進行計算,其中概率為1-alpha 即 1-0.95

# 根據上面算出來的自由度45 和顯著水平 alpha = 0.95t_ci = 2.0141# 樣本大小a_n = 25b_n = 25# se 計算se = np.sqrt(np.square(std_A)/a_n + np.square(std_B)/b_n)se# 對應的平均值sample_mean = mean_A - mean_B sample_mean# #計算a,ba = sample_mean - se * t_cib = sample_mean + se * t_ci# #輸出結論print(獨立雙樣本的誤差平均值置信區間,95%置信水平,CI[{:.2f},{:.2f}].format(a,b))獨立雙樣本的誤差平均值置信區間,95%置信水平,CI[-4.07,-1.37]

效應量的計算

  • 利用效應量來衡量誤差的程度

#因為這裡雙獨立樣本,公式里的標準差要使用合併標準差代替# 獨立標準差公式sp = np.sqrt(((a_n-1)*np.square(std_A) + (b_n-1)* np.square(std_B) ) / (a_n+b_n-2))# d d = (mean_A-mean_B)/spprint(效應量d=,d)效應量d= -1.1471926573950622

數據分析報告

  1. 描述性統計分析

A布局的平均錯誤個數為:5,標準差為2.06

B布局的平均錯誤個數為:7,標準差為2.65

  1. 推斷性統計分析
  2. 假設檢驗 獨立雙樣本t(45)=-4.06,p = 0.000195(alpha=0.05),雙尾檢驗,拒絕零假設,即mean_A !=mean_B
  3. 置信區間 獨立雙樣本的誤差平均值置信區間,95%置信水平,CI[-4.07,-1.37]
  4. 效應量d= -1.1471926573950622 效果顯著

另外還有幾種檢驗

  1. 檢驗樣本總體是否為正態分布 scipy.stats.normaltest
  2. 檢驗樣本分布是否為正態分布scipy.stats.shapiro
  3. 可以認為若是總體方差未知的情況,若是樣本符合趨近正態分布的情況,那麼都可以近似地使用t檢驗來完成,參考

http://staff.ustc.edu.cn/~zwp/teach/Prob-Stat/Lec17_slides.pdf?

staff.ustc.edu.cn

  1. 總的來說應該是,若樣本大於30 且總體的方差sigma^(2) 已知,那麼可以採用正態分布的Z檢驗方法. Z = (樣本平均值-總體平均值(零假設平均值))/ 標準誤差
  2. 標準誤差 為 se = sigma/np.sqrt(n)
  3. 若是sigma(^2) 未知,則採用樣本的標準差來進行預估,此時使用t分布,自由度為n-1
  4. se = sample_std/np.sqrt(n) ,這時候可以採用python的t分布包
  5. 對於雙尾檢驗而言,每一側的顯著水平都是alpha 並非 alpha/2. 在此網站查到的Z或者t值直接使用即可

P value calculator?

www.graphpad.com


推薦閱讀:

從另一個角度看拉普拉斯變換
天文台的工作枯燥嗎?
特徵聯想 妙解橫生 一題十四解
探蜜?NAKI采蜜實錄
13種植物,不用管就能爆盆!

TAG:邏輯 | 自然科學 | 哲學 |