数分基础(05)中心极限定理、假设检验与AB测试简介

news2024/9/20 18:46:04

文章目录

  • 1. 中心极限定理
    • 1.1 概念
    • 1.2 直观理解
    • 1.3 重要性
  • 2. 示例
    • 2.1 数据集
    • 2.2 验证思路
      • (1)获取一个样本均值
      • (2)假设抽取1000次
      • (3)增大样本容量
    • 2.3 实现
    • 2.4 结果
  • 2. 假设检验
    • 2.1 总体思路
    • 2.2 比较两种运输方式的平均销售额
      • (1)提出假设
      • (2)检验方法
      • (3)计算检验统计量
      • (4)结果解释
  • 3. A/B测试

1. 中心极限定理

1.1 概念

是统计学中的一个核心概念:当样本量足够大时,无论总体分布形状如何,样本均值的分布都会趋近于正态分布

1.2 直观理解

假设我们有一组数据,从中不断地抽取样本并计算每个样本的平均值,这些均值会形成一个分布。无论原始数据是什么分布,当样本足够大时,这些平均值的分布会接近于“钟形”的正态分布。

1.3 重要性

中心极限定理为我们提供了使用正态分布进行统计推断的依据,即使原始数据不是正态分布。

2. 示例

2.1 数据集

我们仍旧使用这个数据集,数分基础(01)示例数据集Global_Superstore

使用其中的“销售额”列数据,随机抽取不同样本大小的子集,并计算这些样本的均值,观察样本均值的分布变化。

2.2 验证思路

为了达到我们的设想,以终为始

(1)获取一个样本均值

从原始数据中随机抽取若干个数据点(样本),这些数据点的平均值。例如,我们从销售额这一列中随机抽取10个数值(样本量=10),就能够集散一个样本均值。

(2)假设抽取1000次

假设样本量=10,我们重复(1)1000次,每次都会获得10个样本的一个均值,这1000次的均值(每次10个)会是不同的值,将这些值绘制直方图,显示分布情况。

(3)增大样本容量

观察随着样本数量增加,均值分布是否趋于正态分布。来验证“当样本足够大时,这些平均值的分布会接近于“钟形”的正态分布”。

2.3 实现

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 加载数据集
file_path = 'Global_Superstore2.xlsx'
excel_data = pd.ExcelFile(file_path)
sheet_names = excel_data.sheet_names
data = pd.read_excel(file_path, sheet_name='Sheet1')

# 从数据集中提取销售额数据
sales_data = data['Sales']

# 设置不同的样本量
sample_sizes = [10, 50, 100, 500]

# 设置中文字体为 SimHei(黑体),在绘图前设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 绘制均值的分布
plt.figure(figsize=(12, 8))

for i, size in enumerate(sample_sizes):
    # 生成样本均值的分布
    sample_means = [np.mean(np.random.choice(sales_data, size, replace=False)) for _ in range(1000)]
    plt.subplot(2, 2, i + 1)
    plt.hist(sample_means, bins=30, color='skyblue', alpha=0.7)
    plt.title(f'样本数量 = {size}')
    plt.xlabel('样本均值') 
    plt.ylabel('频率')    
    plt.grid(True)

plt.tight_layout()
plt.show()

这行代码的意思是:

sample_means = [np.mean(np.random.choice(sales_data, size, replace=False)) for _ in range(1000)]

从销售额数据sales_data中随机抽取指定数量(‘size’)的数据,计算均指,并重复这个过程1000次。每次计算得到的均值存储在sample_means列表中

plt.hist()

plt.hist(sample_means, bins=30, color='skyblue', alpha=0.7)

绘制直方图,‘sample_means’作为输入,表示将列表中的1000个数值进行统计绘图
bins=30,将1000个值分成30个区间(柱子),每个柱子的宽度代表均值的范围,高度代表这个范围内的均指出现的次数(频率),并设置柱子的颜色和透明度。

  • 直方图的每个柱子(条形)代表一个样本均值区间的出现次数(频率)
  • 柱子的高度越高,该样本均值范围内的次数越多
  • 如果某个区间(例如,200-210)对应的柱子的高度为80,意味着在1000次抽样中,样本均值落在200-210之间的情况出现了80次

2.4 结果

在这里插入图片描述
当样本量较小时,左上角=10,样本均值的分布并不是正态分布,随着样本量增加到100,或者500,样本均值的分布逐渐趋向于“钟形”的正态分布

直观地验证了中心极限定理:无论总体分布是什么形状(偏态分布、均匀分布等),当样本量足够大时,样本均值的分布会趋近于正态分布。

也就意味着,即便我们面对的是非正态分布的原始数据,只要样本量大,样本均值就是正态分布的,就可以应用依赖正态分布的统计推断,z检验、t检验等。

2. 假设检验

利用数据集中的运输方式和销售额来看假设检验。我们在Ship Mode中可以看到有不同的运输方式,现在,我们验证两种运输方式:Same Day 和 Second Class 下的平均销售额是否存在显著差异。
在这里插入图片描述

2.1 总体思路

  1. 设定原假设(H0)和备择假设(H1)
  2. 选择合适的统计检验方法(如 t 检验)
  3. 从样本数据中计算相应的统计量
  4. 根据统计量和p值,判断是否拒绝原假设

2.2 比较两种运输方式的平均销售额

(1)提出假设

原假设(H0): Same Day 运输方式和 Second Class 运输方式的平均销售额无显著差异
备择假设(H1):Same Day 运输方式的平均销售额显著高于Second Class

(2)检验方法

使用独立样本T检验比较两组均指,两组数据相互独立,样本量较大。

T检验是一种统计检验方法,当样本量较小,或总体标准差未知时,用于检验样本均值与总体均值的差异,或比较两个样本均值。
在这里插入图片描述

使用条件:

  • 样本量较小( n < 30),且总体标准差未知
  • 数据近似正态分布或样本来自正态分布
  • 总体方差未知且需从样本数据中估计标准差

(3)计算检验统计量

提取 Same Day 和 Second Class 的销售额,并进行 t 检验

from scipy.stats import ttest_ind

# 提取不同运输方式的销售额数据
same_day_sales = data[data['Ship Mode'] == 'Same Day']['Sales']
second_class_sales = data[data['Ship Mode'] == 'Second Class']['Sales']

# 计算样本均值
mean_same_day = same_day_sales.mean()
mean_second_class = second_class_sales.mean()

# 执行独立样本t检验
t_stat, p_value = ttest_ind(same_day_sales, second_class_sales, equal_var=False)

# 打印结果
print(f"Same Day 平均销售额: {mean_same_day:.2f}")
print(f"Second Class 平均销售额: {mean_second_class:.2f}")
print(f"T统计量: {t_stat:.2f}")
print(f"p值: {p_value:.4f}")

运行结果为

Same Day 平均销售额: 247.02
Second Class 平均销售额: 248.88
T统计量: -0.18
p值: 0.8559

Scipy 科学计算库,ttest_ind函数,执行独立样本T检验,比较两组独立样本的均指是否存在显著差异,例如对比两组实验结果、两种方案的效果等。

常用于A/B测试、医学实验等,判断两组之间的均指差异是否是由随机误差引起,还是由于实际的显著差异引起。

ttest_ind主要参数:
ttest_ind(a, b, equal_var=True, nan_policy=‘propagate’, alternative=‘two-sided’)

a:第一组样本数据(数组或列表)
b:第二组样本数据(数组或列表)
equal_var:是否假设两组数据具有相等的方差
True(默认值):假设两组方差相等
False:不假设方差相等

nan_policy:处理缺失值的策略。
‘propagate’(默认):如果存在 NaN,则返回 NaN
‘omit’:忽略 NaN 值
‘raise’:遇到 NaN 值时报错

alternative:定义双尾或单尾检验类型
‘two-sided’(默认):双尾检验
‘less’:单尾检验,测试是否 a 的均值小于 b
‘greater’:单尾检验,测试是否 a 的均值大于 b

t_stat:T 统计量,用于衡量样本均值的差异程度。T 值越大,均值差异越明显。
p_value:p 值,用于判断差异的显著性。通常,如果 p 值小于显著性水平(例如 0.05),我们认为差异显著,拒绝原假设
通过判断 T 统计量和 p 值,可以评估两组数据的差异性,并为后续行动提供数据支持

(4)结果解释

平均销售额,Same Day 方式的平均销售额约为 247.02 Second Class 运输方式的平均销售额约为 248.88

Same Day 平均销售额: 247.02
Second Class 平均销售额: 248.88
T统计量: -0.18
p值: 0.8559

t 统计量 -0.18 ,接近于0 ,均值差异不明显
p 值 0.8559 ,远大于 0.05 ,差异不显著,不能拒绝原假设 —— Same Day 运输方式和 Second Class 运输方式的平均销售额无显著差异

意味着,在决策时,如果销售额是主要考虑的问题,选择“Same Day”运输方式,并不会带来显著的销售提升,或许可以考虑成本、运输效率。

3. A/B测试

简要说下A/B测试,是一种对比测试,通过对比两种方案的效果来评估哪种更优。常用于网站设计、广告优化、产品定价等。

例如希望评估两种运输方式对销售额的影响,看看是否有显著差异。那么可以将上面的 Same Day 运输方式设为 A 组, Second Class 运输方式设为 B 组。

测试的目标为,Same Day 运输方式是否能带来更高的销售额。

在实际中,可以随机将用户分配到不同的实验组。然后收集两组的销售额数据。对比两组表现。使用统计检验判断差异是否显著。

在这个数据集示例中,我们已有两组数据【假设是上述方案设计下收集来的】,且已经进行了分析,且判断了差异并不显著。

也就是说,我们可以根据测试结果,优化商业方案,例如这里,帮助我们评估运输方式对销售额的影响。假如运输方式对销售额的影响有显著的差异,就可以选择销售额高的运输方式。这样通过小规模的实验,能够降低全局实施的风险。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2100834.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

环信高质量全球网络——70%丢包环境,消息100%送达,抗弱网能力大幅提升!

在当今数字化时代&#xff0c;稳定而高效的即时通讯已成为企业和个人不可或缺的工具。环信即时通讯&#xff08;IM&#xff09;云服务一直致力于为用户提供优质的通信体验。如今&#xff0c;环信IM通过自研传输协议&#xff0c;实现了在弱网环境下的卓越表现&#xff0c;确保消…

.NET 一款具备签名用于绕过防护的工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

踩坑-pycharm-终端闪退

问题&#xff1a; pycharm打开终端&#xff0c;终端直接闪退&#xff0c;打开其他项目&#xff0c;没事 原因&#xff1a; 之前在其他项目下载了allure&#xff0c;不知道怎么终端的path改了 解决&#xff1a; 此处&#xff0c;终端路径修改为如下即可&#xff1a;

HTML+CSS+Query实现二级菜单

在网页设计中&#xff0c;导航菜单是非常重要的部分之一&#xff0c;尤其是具有二级下拉菜单的导航栏&#xff0c;可以提升用户体验。本文将通过HTML、CSS和jQuery实现一个具有二级菜单标题的导航栏&#xff0c;并详细讲解每一步的实现过程。 <!DOCTYPE html> <html …

[数据集][目标检测]街头摊贩识别检测数据集VOC+YOLO格式758张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;758 标注数量(xml文件个数)&#xff1a;758 标注数量(txt文件个数)&#xff1a;758 标注类别…

信捷 XD PLC 双精度浮点数的初始化及传输

在用信捷XDH PLC进行运动控制时&#xff0c;加减速时间是个64位的双精度的浮点数&#xff0c;那么如果不在人机界面写到PLC&#xff0c;PLC自身也是可以初始化的&#xff0c;比如0.005,怎么办呢。 用FLT指令把 整数出单精度浮点数&#xff0c;然后EDIV指令把两个单精度浮点数相…

2025第五届广州国际新能源汽车产业智能制造技术展览会

2025第五届广州国际新能源汽车产业智能制造技术展览会 展会时间&#xff1a;2025年11月20日-22日 展会地点&#xff1a;广州保利世贸博览馆(PWTC Expo) 主题&#xff1a;能源绿色化&#xff0c;制造低碳化 400多家参展商&#xff1b;20000多名观众&#xff1b;20000平方米展出…

mysql索引,事务,约束

MySQL事务 1.什么事务 用于保证数据的一致性,它是由一组相关的dml语句组成,该租的dml语句要么全部成功要么全部失败. 2.事务和锁 当执行事务操作时(dml),MySQL会在表上加锁,防止其它用户改表的数据,这对用户来说很重要 mysql 数据库控制台事务的几个重要操作(基本操作 tra…

鸿蒙开发—黑马云音乐之播放页面(下)

目录 1.用户随意控制播放进度 2.歌曲暂停和播放控制和歌曲上一首、下一首播放控制 3.歌曲列表 4.歌曲列表数据动态化和背景雾化 5.唱针效果 6.结语 1.用户随意控制播放进度 src/main/ets/services/AvPlayerManager.ets&#xff1a; // 让播放对象从某个时间点开始播放 …

本地大语言模型部署及应用

01 模型 2024-07-24&#xff0c;Meta 正式发布新一代开源大模型 Llama 3.1 系列&#xff0c;该模型共有三个版本&#xff1a; 8B70B405B meta评估了超过 150 个语言覆盖范围广的基准数据集。比较了 Llama 3.1 与竞争性模型在真实世界场景下的表现。实验评估表明&#xff0c;L…

动态住宅IP代理的搭建指南:实现高效网络访问

在互联网的复杂环境中&#xff0c;动态住宅IP代理逐渐成为提升网络隐私和绕过IP限制的热门选择。相比于数据中心代理IP&#xff0c;动态住宅IP代理具有更高的隐蔽性和真实性&#xff0c;能够有效模拟真实用户的网络行为。本文将详细介绍动态住宅IP代理的搭建方法&#xff0c;帮…

iPhone、微信二选一?苹果、腾讯官方回应

KlipC报道&#xff1a;9月2日&#xff0c;有消息称&#xff0c;腾讯和苹果正在就APPStore的抽成问题在不断交涉&#xff0c;如若谈崩有可能导致微信下架&#xff0c;iPhone一旦升级到 iOS 18.2 系统可能将无法使用微信。 对此&#xff0c;苹果中国区技术顾问表示&#xff0c;“…

Vue 2 与 Vue 3 中 keep-alive 组件的深入解析

更多内容前往个人网站&#xff1a;孔乙己大叔 在 Vue.js 的开发中&#xff0c;keep-alive 是一个非常重要的内置组件&#xff0c;它允许我们将组件状态或实例保持在内存中&#xff0c;避免重新渲染和重新创建组件&#xff0c;这对于需要频繁切换但内容较为复杂的组件场景非常有…

如何在银河麒麟中快速查询网卡固件及驱动信息

如何在银河麒麟中快速查询网卡固件及驱动信息 1、第一步&#xff1a;找到网卡名称2、第二步&#xff1a;查询固件和驱动信息3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在银河麒麟服务器操作系统中&#xff0c;如何查询网卡固件…

统一NLP和目标检测的DETR(一)——self attention、encoder、decoder

主流目标检测算法劣势 YOLO系列&#xff0c;它基于anchor来做&#xff0c;少不了要用MNS&#xff0c;导致速度相对较慢。 但今天介绍一款DETR&#xff0c;基于VIT的目标检测算法。 那么我们需要先深入过一遍VIT。 Vision transform 1、传统RNN网络的问题 单向&#xff1a;只…

vue3集成sql语句编辑器

使用的是codemirror 安装 pnpm add codemirror vue-codemirror --savepnpm add codemirror/lang-sqlpnpm add codemirror/theme-one-dark使用 <template><codemirror v-model"configSql" placeholder"Code goes here..." ref"codemirrorR…

热力图科普:数据可视化的利器

hello大家好&#xff0c;俺是没事爱瞎捣鼓又分享欲爆棚的叶同学&#xff01;&#xff01;&#xff01; 日常闲扯 哎呀&#xff0c;第一天上完课&#xff0c;给俺的感觉是&#xff08;热和惊喜&#xff09;&#xff0c;热是真热&#xff0c;从出租屋走到教学楼给我整的汗流浃背…

十七、网络编程

文章目录 一、网络相关的概念二、InetAddresss类三、Socket3.1 基本介绍 四、TCP网络通信编程4.1 应用案例1(使用字节流)4.2 应用案例2(使用字节流)4.3 应用案例3(使用字符流)4.4 应用案例4&#xff08;TCPFileCopy&#xff09;4.5 netstat 指令4.6 TCP网络通讯不为人知的秘密 …

为啥一定要考HCIE安全?这4个理由你不得不看

大家都知道&#xff0c;网络安全越来越成为企业和个人关注的焦点。 随着网络攻击的日益复杂和频繁&#xff0c;对于具备高级网络安全技能的专业人才的需求也在不断增长。HCIE-Security认证&#xff0c;作为华为推出的顶级信息安全认证&#xff0c;正是满足这一需求的黄金标准。…

inflight 守恒化简

设 x 为 E bw / delay 效能&#xff0c;y 为 flow 在瓶颈处的实际分配带宽&#xff0c;r 为时延&#xff0c;inflt 守恒模型的方程组如下&#xff1a; I ( t ) ∑ i 0 n w i ( t ) I(t)\displaystyle\sum_{i0}^n w_i(t) I(t)i0∑n​wi​(t) d x d t y r − x \dfrac{dx}{dt…