参数估计想象你在煮一锅排骨汤。你想知道汤咸不咸你不会把整锅汤都喝完而是舀起一勺尝一尝。那一勺汤就是样本。那一勺的咸度就是样本统计量。整锅汤的咸度就是我们要猜的总体参数。参数估计就是根据样本的特征比如样本均值去估计总体的特征比如总体均值。它通常分为两种点估计直接说“这锅汤是1.5%的盐度”。但这很容易被打脸因为太绝对区间估计说“这锅汤的盐度在1.4%到1.6%之间我有95%的把握”。这就是置信区间更科学区间估计是最常使用的方式下面通过一个示例来演示参数估计的具体使用。import numpy as np from scipy import stats # 1. 模拟数据 np.random.seed(42) true_mean 15 # 上帝视角的真实均值 sample_salaries np.random.normal(loctrue_mean, scale3, size100) # 模拟100个样本 # 2. 计算统计量 sample_mean np.mean(sample_salaries) sample_std np.std(sample_salaries, ddof1) n len(sample_salaries) # 计算95%置信区间 # 这里的 scale 使用的是标准误 (Standard Error) 样本标准差 / sqrt(n) conf_int stats.t.interval( confidence0.95, dfn - 1, locsample_mean, scalesample_std / np.sqrt(n) ) lower_bound, upper_bound conf_int print(f样本均值: {sample_mean:.2f}k) print(f95%置信区间: [{lower_bound:.2f}k, {upper_bound:.2f}k]) # 运行结果 样本均值: 14.69k 95%置信区间: [14.15k, 15.23k] 图形化之后的结果如下从图中可以看出灰色的散点是你调研的那100个数据分析师的工资。你会发现有的高有的低散落在各地。蓝色的点和横线蓝点是你算出来的样本均值约14.67k虽然不完全等于真实的15k但很接近。蓝色的横线就是置信区间。它的含义是“虽然我不知道确切数字但我敢打赌真实数字就在这根蓝线的范围内。”红色的虚线这是真实的总体均值15k。结论你可以清楚地看到红色的虚线确实穿过了蓝色的横线。恭喜你这次“参数估计”成功捕获了真理数据分析不是算命算出来的不是一个死的数字而是一个科学的范围。我们就是用参数估计的方法在不确定性中寻找确定性。2. 假设检验假设检验是数据分析中最常用的决策工具。它的逻辑是先立一个Flag假设然后看证据数据是否打脸。原假设通常代表“无事发生”、“没有变化”、“运气好”。备择假设通常代表“有事发生”、“真的有效果”。P值表示原假设成立时出现当前数据的概率。P值越小说明原假设越不靠谱通常以0.05为界限。下面通过一个电商APP的A/B测试场景来演示假设检验的使用。假设某电商APP想把“购买”按钮从蓝色改成红色。原假设红色按钮和蓝色按钮的转化率没区别差别纯属偶然。备择假设红色按钮的转化率显著高于蓝色按钮。我们采集了两组用户的消费金额数据来进行T检验。# 1. 模拟AB测试数据 # 蓝色按钮组对照组平均消费 100元 group_blue np.random.normal(loc100, scale20, size1000) # 红色按钮组实验组平均消费 105元 (我们要检验这个提升是否显著) group_red np.random.normal(loc105, scale25, size1000) # 2. 进行独立样本T检验 (T-test) t_stat, p_val stats.ttest_ind(group_blue, group_red) print(fP值: {p_val:.5f}) # 3. 判断结论 alpha 0.05 if p_val alpha: print(结论拒绝原假设。红色按钮带来的消费提升是【统计显著】的建议全量上线) else: print(结论无法拒绝原假设。两组差异可能是误差导致的建议维持原状。) # 运行结果 P值: 0.00000 结论拒绝原假设。红色按钮带来的消费提升是【统计显著】的建议全量上线 图形化结果如下从图中我们可以看出两条曲线红色和蓝色其实重叠度很高。对于新手看到这个图可能会陷入一个误区觉得“这两座山峰看起来差不多嘛没啥区别”。但在统计学上两座山峰的“重心”均值发生了显著偏移。这就是假设检验的威力--在重叠的噪声中识别出偏移的信号。3. 非参数估计前面的“参数估计”和“T检验”都有一个娇气的脾气它们通常假设数据是服从“正态分布”的也就是漂亮的钟形曲线。但在现实生活中很多数据并不正态或者数据甚至是定序的比如非常满意、满意、一般、不满意。这时候传统的T检验就失效了我们需要请出非参数检验。它不依赖数据的分布形状非常抗造。假设我们要对比两款手游《王者荣耀》和《原神》玩家每天的游玩时长。由于《原神》玩家可能存在大量的“长尾”用户玩特别久数据往往是严重右偏的不符合正态分布。这时候对比两组数据差异就不能用T检验我们使用非参数估计中的一种方式曼-惠特尼U检验 (Mann-Whitney U test)。# 1. 模拟非正态分布数据 (使用指数分布模拟由偏数据) # 游戏A平均时长较短 game_a_hours np.random.exponential(scale1.0, size100) # 游戏B平均时长较长 game_b_hours np.random.exponential(scale1.5, size100) # 2. 首先检查一下正态性 (Shapiro-Wilk检验) # 如果P 0.05说明不是正态分布 _, p_norm_a stats.shapiro(game_a_hours) print(f游戏A正态性检验P值: {p_norm_a:.4f} (小于0.05则非正态)) # 3. 使用非参数检验Mann-Whitney U检验 # 它可以比较两个独立样本的分布是否存在差异侧重于中位数/秩次的比较 u_stat, p_val_nonparam stats.mannwhitneyu(game_a_hours, game_b_hours, alternativetwo-sided) print(fMann-Whitney U检验 P值: {p_val_nonparam:.5f}) if p_val_nonparam 0.05: print(结论两款游戏的玩家游玩时长分布存在显著差异。) else: print(结论两款游戏玩家游玩时长无显著差异。) # 运行结果 游戏A正态性检验P值: 0.0000 (小于0.05则非正态) Mann-Whitney U检验 P值: 0.00003 结论两款游戏的玩家游玩时长分布存在显著差异。 可视化结果如下尽管数据长得歪瓜裂枣严重右偏U检验依然稳健地告诉我们这两组数据不一样。U检验比较的不仅仅是平均值它更多是在比较“秩次”Ranking。通俗点说它发现如果我们把两组玩家混在一起排名Game B的玩家即使不看具体时长排名也普遍比Game A的玩家靠前。从图中来看你会看到橙色Game B的尾巴明显比蓝色Game A拖得更长、更厚实。这说明Game B比如《原神》更容易让玩家沉浸更久或者拥有更多的重度玩家。4. 总结
数据会说谎?三大推断方法帮你“审问”数据真相
发布时间:2026/7/1 2:51:01
参数估计想象你在煮一锅排骨汤。你想知道汤咸不咸你不会把整锅汤都喝完而是舀起一勺尝一尝。那一勺汤就是样本。那一勺的咸度就是样本统计量。整锅汤的咸度就是我们要猜的总体参数。参数估计就是根据样本的特征比如样本均值去估计总体的特征比如总体均值。它通常分为两种点估计直接说“这锅汤是1.5%的盐度”。但这很容易被打脸因为太绝对区间估计说“这锅汤的盐度在1.4%到1.6%之间我有95%的把握”。这就是置信区间更科学区间估计是最常使用的方式下面通过一个示例来演示参数估计的具体使用。import numpy as np from scipy import stats # 1. 模拟数据 np.random.seed(42) true_mean 15 # 上帝视角的真实均值 sample_salaries np.random.normal(loctrue_mean, scale3, size100) # 模拟100个样本 # 2. 计算统计量 sample_mean np.mean(sample_salaries) sample_std np.std(sample_salaries, ddof1) n len(sample_salaries) # 计算95%置信区间 # 这里的 scale 使用的是标准误 (Standard Error) 样本标准差 / sqrt(n) conf_int stats.t.interval( confidence0.95, dfn - 1, locsample_mean, scalesample_std / np.sqrt(n) ) lower_bound, upper_bound conf_int print(f样本均值: {sample_mean:.2f}k) print(f95%置信区间: [{lower_bound:.2f}k, {upper_bound:.2f}k]) # 运行结果 样本均值: 14.69k 95%置信区间: [14.15k, 15.23k] 图形化之后的结果如下从图中可以看出灰色的散点是你调研的那100个数据分析师的工资。你会发现有的高有的低散落在各地。蓝色的点和横线蓝点是你算出来的样本均值约14.67k虽然不完全等于真实的15k但很接近。蓝色的横线就是置信区间。它的含义是“虽然我不知道确切数字但我敢打赌真实数字就在这根蓝线的范围内。”红色的虚线这是真实的总体均值15k。结论你可以清楚地看到红色的虚线确实穿过了蓝色的横线。恭喜你这次“参数估计”成功捕获了真理数据分析不是算命算出来的不是一个死的数字而是一个科学的范围。我们就是用参数估计的方法在不确定性中寻找确定性。2. 假设检验假设检验是数据分析中最常用的决策工具。它的逻辑是先立一个Flag假设然后看证据数据是否打脸。原假设通常代表“无事发生”、“没有变化”、“运气好”。备择假设通常代表“有事发生”、“真的有效果”。P值表示原假设成立时出现当前数据的概率。P值越小说明原假设越不靠谱通常以0.05为界限。下面通过一个电商APP的A/B测试场景来演示假设检验的使用。假设某电商APP想把“购买”按钮从蓝色改成红色。原假设红色按钮和蓝色按钮的转化率没区别差别纯属偶然。备择假设红色按钮的转化率显著高于蓝色按钮。我们采集了两组用户的消费金额数据来进行T检验。# 1. 模拟AB测试数据 # 蓝色按钮组对照组平均消费 100元 group_blue np.random.normal(loc100, scale20, size1000) # 红色按钮组实验组平均消费 105元 (我们要检验这个提升是否显著) group_red np.random.normal(loc105, scale25, size1000) # 2. 进行独立样本T检验 (T-test) t_stat, p_val stats.ttest_ind(group_blue, group_red) print(fP值: {p_val:.5f}) # 3. 判断结论 alpha 0.05 if p_val alpha: print(结论拒绝原假设。红色按钮带来的消费提升是【统计显著】的建议全量上线) else: print(结论无法拒绝原假设。两组差异可能是误差导致的建议维持原状。) # 运行结果 P值: 0.00000 结论拒绝原假设。红色按钮带来的消费提升是【统计显著】的建议全量上线 图形化结果如下从图中我们可以看出两条曲线红色和蓝色其实重叠度很高。对于新手看到这个图可能会陷入一个误区觉得“这两座山峰看起来差不多嘛没啥区别”。但在统计学上两座山峰的“重心”均值发生了显著偏移。这就是假设检验的威力--在重叠的噪声中识别出偏移的信号。3. 非参数估计前面的“参数估计”和“T检验”都有一个娇气的脾气它们通常假设数据是服从“正态分布”的也就是漂亮的钟形曲线。但在现实生活中很多数据并不正态或者数据甚至是定序的比如非常满意、满意、一般、不满意。这时候传统的T检验就失效了我们需要请出非参数检验。它不依赖数据的分布形状非常抗造。假设我们要对比两款手游《王者荣耀》和《原神》玩家每天的游玩时长。由于《原神》玩家可能存在大量的“长尾”用户玩特别久数据往往是严重右偏的不符合正态分布。这时候对比两组数据差异就不能用T检验我们使用非参数估计中的一种方式曼-惠特尼U检验 (Mann-Whitney U test)。# 1. 模拟非正态分布数据 (使用指数分布模拟由偏数据) # 游戏A平均时长较短 game_a_hours np.random.exponential(scale1.0, size100) # 游戏B平均时长较长 game_b_hours np.random.exponential(scale1.5, size100) # 2. 首先检查一下正态性 (Shapiro-Wilk检验) # 如果P 0.05说明不是正态分布 _, p_norm_a stats.shapiro(game_a_hours) print(f游戏A正态性检验P值: {p_norm_a:.4f} (小于0.05则非正态)) # 3. 使用非参数检验Mann-Whitney U检验 # 它可以比较两个独立样本的分布是否存在差异侧重于中位数/秩次的比较 u_stat, p_val_nonparam stats.mannwhitneyu(game_a_hours, game_b_hours, alternativetwo-sided) print(fMann-Whitney U检验 P值: {p_val_nonparam:.5f}) if p_val_nonparam 0.05: print(结论两款游戏的玩家游玩时长分布存在显著差异。) else: print(结论两款游戏玩家游玩时长无显著差异。) # 运行结果 游戏A正态性检验P值: 0.0000 (小于0.05则非正态) Mann-Whitney U检验 P值: 0.00003 结论两款游戏的玩家游玩时长分布存在显著差异。 可视化结果如下尽管数据长得歪瓜裂枣严重右偏U检验依然稳健地告诉我们这两组数据不一样。U检验比较的不仅仅是平均值它更多是在比较“秩次”Ranking。通俗点说它发现如果我们把两组玩家混在一起排名Game B的玩家即使不看具体时长排名也普遍比Game A的玩家靠前。从图中来看你会看到橙色Game B的尾巴明显比蓝色Game A拖得更长、更厚实。这说明Game B比如《原神》更容易让玩家沉浸更久或者拥有更多的重度玩家。4. 总结