ABtest原理及python程式碼
# coding=utf-8
import numpy as np
import pandas as pd
from scipy import stats
import statsmodels.stats.weightstats as sw
# 兩個樣本長度相同
x1 = np.array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
x2 = np.array([1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1])
# 大量資料匯入
# df_x1 = pd.read_excel()
# df_x2 = pd.read_excel()
# np.array(df_x1['lable'].tolist())
# np.array(df_x2['lable'].tolist())
# 樣本均值是否顯著差異檢驗
def ABTest(x1,x2,alpha = 0.05):
'''
:param x1: 樣本 1
:param x2: 樣本 2
:param alpha: 第 1 類錯誤容許值
:return: z/t p 統計量 p 值
'''
# 樣本量大於 30 時,使用 Z 檢驗
if len(x1) >30:
z,p = sw.ztest(x1, x2, value=0)
# 詳細計算公式
# 樣本標準誤差,分母使用 n-1
# x1_mean,x1_std,x2_mean,x2_std = x1.mean(),x1.std(ddof = 1),x2.mean(),x2.std(ddof = 1)
# z = (x1_mean - x2_mean) / np.sqrt(x1_std ** 2 / len(x1) + x2_std ** 2 /len(x2))
# p = 2*stats.norm.sf(abs(z))
# 根據 alpha 計算置信區間 外匯跟單gendan5.com Z 分數服從標準正態分佈
d = stats.norm.ppf(1 - alpha / 2)
floor = - d
ceil = d
print(' 使用 Z 檢驗 ')
print('Z 分數為 {}'.format(z))
print(' 置信區間為 [{0},{1}]'.format(floor,ceil))
print('p 值為 {0},{1}alpha, 認為 x1,x2 均值差異 {2}'.format(p,' 大於 ' if p > alpha else ' 小於 ',' 顯著 ' if p < alpha else ' 不顯著 '))
return z,p
# 樣本量不夠大,使用 t 檢驗
else:
x = x1 - x2
t,p = stats.ttest_1samp(x,0)
d = stats.norm.ppf(1 - alpha / 2)
floor = - d
ceil = d
print(' 使用 T 檢驗 ')
print('T 分數為 {}'.format(t))
print(' 置信區間為 [{0},{1}]'.format(floor,ceil))
print('p 值為 {0},{1}alpha, 認為 x1,x2 均值差異 {2}'.format(p,' 大於 ' if p > alpha else ' 小於 ',' 顯著 ' if p < alpha else ' 不顯著 '))
return t,p
ABTest(x1,x2)
結果:
使用 Z 檢驗
Z 分數為 -7.1414284285428495
置信區間為 [-1.959963984540054,1.959963984540054]
p 值為 9.236596617174027e-13, 小於 alpha, 認為 x1,x2 均值差異顯著
Out[21]: (-7.1414284285428495, 9.236596617174027e-13)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2785265/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DES原理及程式碼實現
- Python物件導向多型實現原理及程式碼例項Python物件多型
- SQL隱碼攻擊原理及程式碼分析(二)SQL
- SQL隱碼攻擊原理及程式碼分析(一)SQL
- 單點登陸原理及程式碼(CAS)
- 程式碼簽名證書原理及好處
- UITableView的原理——探究及重新實現程式碼UIView
- 攜程旅行 abtest
- Android端程式碼染色原理及技術實踐Android
- 【整合學習】:Stacking原理以及Python程式碼實現Python
- RCE(遠端程式碼執行漏洞)原理及漏洞利用
- 支援向量機(SVM)從原理到python程式碼實現Python
- vue(js) 拖拽改變排序(陣列)位置(原理及程式碼)VueJS排序陣列
- 常見排序演算法原理及JS程式碼實現排序演算法JS
- 三方登入原理及後端示例程式碼後端
- 常見排序原理及 python 實現排序Python
- 用Python程式碼解釋大語言模型的工作原理Python模型
- CRC校驗原理簡介及C程式碼實現說明C程式
- springmvc工作原理及原始碼分析SpringMVC原始碼
- 驗證碼原理及驗證
- AQS的原理及原始碼分析AQS原始碼
- Mac搭建appium環境及python執行程式碼示例MacAPPPython行程
- Python專案開發案例集錦及配套程式碼Python
- 如何在tengine/nginx層做ABtestNginx
- 最近學到的ABTest知識
- HashMap實現原理及原始碼分析HashMap原始碼
- CORS原理及@koa/cors原始碼解析CORS原始碼
- synchronized實現原理及ReentrantLock原始碼synchronizedReentrantLock原始碼
- 快速傅立葉變換原理介紹及遞迴程式碼實現遞迴
- python程式碼打包exe程式Python
- mybatis原理,配置介紹及原始碼分析MyBatis原始碼
- JVMTI Agent 工作原理及核心原始碼分析JVM原始碼
- Java執行緒池原始碼及原理Java執行緒原始碼
- InnoDB MVCC實現原理及原始碼解析MVC原始碼
- 程式碼安全之程式碼混淆及加固(Android)?Android
- 深入理解 Python 虛擬機器:整型(int)的實現原理及原始碼剖析Python虛擬機原始碼
- 深入理解 Python 虛擬機器:列表(list)的實現原理及原始碼剖析Python虛擬機原始碼
- vysor原理與程式碼實現