python - 定量数据集的意义测试(Python Pandas)
问题描述
df
假设我有以下数据框conv_rate = sales / visits
:
theme visits sales conv_rate
0 brazil 34 2 5.9%
1 argentina 18 3 16.7%
2 spain 135 15 11.1%
3 uk 71 6 8.5%
4 france 80 4 5.0%
5 iceland 26 1 3.8%
6 chile 104 11 10.6%
7 italy 47 5 10.6%
# Total visits = 515
# Total sales = 47
# Mean conversion rate = 9.1%
我想测试哪些国家的转化率与人口平均值的转化率显着不同(零假设 = 转化率没有差异)。
什么测试最适合这里?我相信我需要一个双尾检验,因为样本转换率可能高于或低于总体平均值。但是我不确定t 检验或z 检验是否最合适。
根据我的阅读,z 检验最适合大样本量 (n>30),而 t 检验最适合小样本量 (n<30)。这个对吗?由于我的一些样本(例如西班牙)的样本量比其他样本(例如阿根廷)大,我如何确定哪种测试最适合?我希望在所有行(样本)上运行相同的测试。
我在这里要做的是查看哪些国家/地区的转化率与零假设“显着不同”。我想使用显着性检验来计算每个国家/地区的“检验值”(例如下面),然后将该值与阈值进行比较,以确定该国家/地区是否具有只能通过 5% 来解释的转化率,1 %,占人口的 0.1%(因此,我非常相信转化率的差异是“显着的”,而不是偶然的)。
theme visits sales conv_rate value
0 brazil 34 2 5.9% 1.57
1 argentina 18 3 16.7% 4.51
2 spain 135 15 11.1% 3.06
3 uk 71 6 8.5% 2.57
4 france 80 4 5.0% 1.88
5 iceland 26 1 3.8% 1.28
6 chile 104 11 10.6% 3.23
7 italy 47 5 10.6% 2.94
什么测试最适合这个目的?我可以构建测试pandas
还是应该使用scipy
?
解决方案
您可以使用二项式检验,将转化视为“销售额”,将访问次数视为“试验”,平均成功率是您的平均销售额/平均访问次数:
import pandas as pd
from scipy.stats import binom_test
p = df.sales.sum()/df.visits.sum()
df['p_binom'] = df.apply(lambda x: binom_test(x[2],x[1],p=p),axis=1)
df
theme visits sales conv_rate p_binom
0 brazil 34 2 5.9% 0.765868
1 argentina 18 3 16.7% 0.222923
2 spain 135 15 11.1% 0.452636
3 uk 71 6 8.5% 1.000000
4 france 80 4 5.0% 0.245689
5 iceland 26 1 3.8% 0.508992
6 chile 104 11 10.6% 0.607580
7 italy 47 5 10.6% 0.615161
推荐阅读
- javascript - 将一个页面中的项目添加到购物车中,该购物车将仅使用 JS/CSS/HTML 显示在另一个页面中
- xml - xslt 从 xml 节点值中嵌套选择
- regex - 正则表达式检测非拉丁字符
- typescript - 断言 TypeScript 应该无法键入检查一些示例代码
- git - 带有合并提交的 Git rebase
- java - 即使绘制了新文本,也设置一次 Swing 应用程序的默认字体
- php - 在 required_once 文件中定义未扩展 php
- c - C : 我可以 Snprintf(buffer,buffersize,buffer,..) 吗?
- c# - BotBuilder C# 从 Scorable Dialogs 捕获“抱歉,我的机器人代码有问题”
- javascript - Angular - 从 Firestore 获取单个文档时遇到问题