数据科学家稳健统计系列第一部分:稳健的中心趋势度量以及...

news2026/4/3 1:57:18
原文towardsdatascience.com/robust-statistics-for-data-scientists-part-1-resilient-measures-of-central-tendency-and-67e5a60b8bf1https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/cf43c75d8b50af4d9c13df54abeccde8.png使用 DALL-E 生成的图片统计在数据科学中的角色是核心的它将原始数据与可操作的见解联系起来。然而并非所有统计方法都是平等的尤其是在面对混乱的现实世界数据的残酷现实时。这使我们来到了稳健统计的目的这是一个旨在抵御数据异常的子领域这些异常经常使传统的统计方法偏离轨道。经典稳健统计必要的转变虽然经典统计学为我们服务得很好但它们对异常值和极端值的敏感性可能导致误导性的结论。稳健统计学应运而生旨在在更广泛的条件下提供更可靠的结果。这种方法不是关于不考虑地丢弃异常值而是关于开发对它们不太敏感的方法。稳健统计基于弹性的原则。它涉及构建统计方法这些方法在假设有微小偏差时仍保持不受影响或影响最小。这种弹性在现实世界的数据分析中至关重要因为完美分布的数据集是例外而不是常态。稳健统计学中的关键概念包括异常值、杠杆点和破坏点。异常值和杠杆点异常值是显著偏离数据集中其他观察值的观测点。在回归分析中杠杆点是指独立变量空间中的异常值它们可以过度影响模型的拟合。在这两种情况下它们的存在都可能扭曲经典统计分析的结果。例如让我们考虑一个数据集其中我们测量了小时数对考试成绩的影响。一个异常值可能是一个学习很少但得分异常高的学生而一个杠杆点可能是一个与同龄人相比学习时间异常长的学生。为了说明我们将模拟一个包含异常值和杠杆点的简单数据集并可视化它们对线性回归模型的影响。importnumpyasnpimportmatplotlib.pyplotaspltimportseabornassnsfromsklearn.linear_modelimportLinearRegressionfromscipyimportstatsfromscipy.statsimportmedian_abs_deviationdefcreate_model_add_point(x_base,y_base,pointNone):Extend base data with an optional point and fit a linear model.x,y(np.append(x_base,point[0]),np.append(y_base,point[1]))ifpointelse(x_base,y_base)modelLinearRegression().fit(x.reshape(-1,1),y)returnx,y,model# Set seed for reproducibility and simulate base datasetnp.random.seed(42)x_basenp.random.normal(5,2,30)y_base0.5*x_basenp.random.normal(0,0.5,30)# Prepare datasets with base, outlier, and leverage pointsdatasets[(x_base,y_base,LinearRegression().fit(x_base.reshape(-1,1),y_base)),# Base casecreate_model_add_point(x_base,y_base,(4,10)),# Adding an outliercreate_model_add_point(x_base,y_base,(15,10.5))# Adding a leverage point]# Plotting setupplt.rcParams.update({font.size:15})sns.set_palette(deep)fig,axesplt.subplots(2,3,figsize(18,12))titles[Original Data,With Outlier,With Leverage Point]special_points[(None,None),(4,10),(15,10.5)]palettesns.color_palette()plot_info{Original Data:{col:palette[0]},With Outlier:{col:palette[3]},With Leverage Point:{col:palette[1]}}# Plotting data points, regression lines, and special pointsfori,((x,y,model),title,(px,py))inenumerate(zip(datasets,titles,special_points)):x_valuesnp.linspace(min(x),max(x),100)y_valuesmodel.predict(x_values.reshape(-1,1))axes[0,i].scatter(x,y,colorblue,labelData Points,s100)axes[0,i].plot(x_values,y_values,colorred,labelLinear Fit,lw3)ifpxisnotNone:axes[0,i].scatter(px,py,colorplot_info[title][col],labeltitle,zorder5,s100)axes[0,i].set_title(title,fontweightbold)axes[0,i].set_xlabel(Study Hours)axes[0,i].set_ylim(-0.5,11)axes[0,i].legend()axes[0,0].set_ylabel(Exam Score)# Plotting intercepts and slopes with adapted colorsbar_colors[plot_info[title][col]fortitleintitles]intercepts[model.intercept_for_,_,modelindatasets]slopes[model.coef_[0]for_,_,modelindatasets]axes[1,0].bar(range(3),intercepts,colorbar_colors)axes[1,0].set_title(Estimated intercepts,fontweightbold)axes[1,0].set_xticks(range(3))axes[1,0].set_xticklabels(titles)axes[1,1].bar(range(3),slopes,colorbar_colors)axes[1,1].set_ylim(0.2,0.7)axes[1,1].set_title(Estimated slopes,fontweightbold)axes[1,1].set_xticks(range(3))axes[1,1].set_xticklabels(titles)# Hide the third subplot in the second row as its not neededaxes[1,2].axis(off)plt.tight_layout()plt.show()https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/83fb357a84397bef2db616421eb2c229.png图片由作者提供上面板中的图显示了当引入这些异常值时回归线的影响。异常值的添加会显著地将回归线向上倾斜增加其截距见左下角的条形图从而证明了异常值对模型的影响。相反杠杆点将回归线拉向自身增加估计的斜率见右下角的条形图同时减少截距可能导致对数据关系的误导性解释。破点估计量的破点是指它在产生错误结果之前可以容忍的受污染数据的比例。为了演示这个概念让我们比较在存在不断增加的异常值时均值和中位数作为中心趋势估计量的情况。# Original datadatanp.random.normal(0,1,100)# Function to introduce outliersdefintroduce_outliers(data,proportion):n_outliersint(len(data)*proportion)outliersnp.random.normal(20,5,n_outliers)# Generating outliersreturnnp.concatenate([data[:-n_outliers],outliers])proportionsnp.linspace(0,0.5,25)means[]medians[]forproportioninproportions:contaminated_dataintroduce_outliers(data,proportion)means.append(np.mean(contaminated_data))medians.append(np.median(contaminated_data))# Plottingplt.figure(figsize(10,6))plt.plot(proportions,means,labelMean,markero,linestyle--,colorpalette[3])plt.plot(proportions,medians,labelMedian,markerx,linestyle-,colorpalette[0])plt.xlabel(Proportion of Outliers)plt.ylabel(Value of Estimator)plt.title(Breakdown Point: Mean vs. Median)plt.legend()plt.grid(True)plt.show()https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/7e8387fd5adb8af4822e6f7f3793c522.png图片由作者提供该图显示中位数具有高破点50%这意味着在变得不可靠之前它可以处理高达 50%的数据被污染。相比之下均值的破点较低0%因为即使是单个极端异常值也会显著改变其值。总体而言上述模拟的结果强调了需要稳健的统计方法这些方法可以减轻此类异常的影响确保在现实世界场景中进行更可靠和准确的数据分析。稳健的中心趋势和分布度量https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/615bc66ee1929cf2c332d62584f4786a.png图片由 Billy Huynh 在 Unsplash 提供异常值可以显著扭曲从传统的中心趋势度量如均值和标准差获得的结果。让我们深入了解一些稳健的度量它们可以提供数据中心趋势和分布的更清晰图景。稳健的中心趋势度量中位数中位数是一种稳健的中心趋势度量它将数据集分成两个相等的部分。与均值不同它不受极端值的影响因此在存在异常值的情况下是一个可靠的度量。Trimmed 均值Trimmed 均值通过在计算均值之前从数据集中移除一定百分比的最低和最高值来增强稳健性。这个过程减少了异常值的影响。Winsorized 均值Winsorized 均值也旨在减少异常值的影响但它通过用数据中的最近值替换极端值来实现而不是删除它们。这种方法保持了原始数据集的大小。让我们创建一个包含异常值的合成数据集并说明这些稳健的度量与传统均值相比如何。# Creating a synthetic dataset with outliersnp.random.seed(0)datanp.random.normal(50,15,100)# Normal distributiondatanp.append(data,[200,220,250])# Adding outliers# Calculating measuresmeannp.mean(data)mediannp.median(data)trimmed_meanstats.trim_mean(data,0.1)winsorized_meanstats.mstats.winsorize(data,limits[0.1,0.1]).mean()# Plotting the histogram and measuresplt.figure(figsize(10,6))plt.hist(data,bins30,colorskyblue,alpha0.7,labelData Distribution)plt.axvline(mean,colorred,linestyle--,linewidth2,labelMean)plt.axvline(median,colorgreen,linestyle-,linewidth2,labelMedian)plt.axvline(trimmed_mean,colorblue,linestyle-.,linewidth2,labelTrimmed Mean)plt.axvline(winsorized_mean,colorpurple,linestyle:,linewidth2,labelWinsorized Mean)plt.title(Comparison of Central Tendency Measures)plt.xlabel(Value)plt.ylabel(Frequency)plt.legend()plt.show()https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/74633e46c18315589d9ceecbd44082bd.png图片由作者提供在上述示例中我们生成了一个正态分布并引入了一些极端异常值来模拟一个现实场景。然后我们计算了均值、中位数、截尾均值和 Winsorized 均值。数据的直方图以及代表每个度量的垂直线说明了中位数、截尾均值和 Winsorized 均值相对于传统均值受异常值影响较小。中位数保持在数据的中心而截尾和 Winsorized 均值调整以提供更准确的中心趋势表示比受异常值扭曲的均值更接近中位数。稳健分散度度量稳健分散度度量如中位数绝对偏差MAD和四分位数范围IQR在理解数据集中的变异性方面至关重要尤其是在数据包含异常值时。中位数绝对偏差 (MAD)MAD 是一个稳健的单变量样本变异性的度量。它被计算为数据集中位数与绝对偏差的中位数。这一度量给出了数据分布范围的概念并且由于它依赖于中位数而不是均值因此受异常值的影响较小。# Generating a dataset with outliersnp.random.seed(0)datanp.random.normal(0,1,100)# Normal distributiondatanp.append(data,[5,5,-5,-5])# Adding outliers# Calculating the MADmadmedian_abs_deviation(data)# Plotting the data and MADplt.figure(figsize(10,6))plt.hist(data,bins30,colorskyblue,alpha0.7,labelData Distribution)plt.axvline(np.median(data),colorgreen,linestyle-,linewidth2,labelMedian)plt.axvline(np.median(data)mad,colorred,linestyle--,linewidth2,labelMAD)plt.axvline(np.median(data)-mad,colorred,linestyle--,linewidth2)plt.title(Median Absolute Deviation (MAD))plt.xlabel(Value)plt.ylabel(Frequency)plt.legend()plt.show()https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/0a02d2c0c4169544039971f1398f9d55.png作者图片在这里中位数由实线标记MAD 由中位数两侧的虚线表示指示数据围绕中位数的分布范围。四分位数范围 (IQR)IQR 衡量数据集中第一四分位数25 百分位数和第三四分位数75 百分位数之间的范围本质上覆盖了数据点的中间 50%。由于它不受极端值或异常值的影响IQR 是一个稳健的分散度度量。# Calculating the IQRq1,q3np.percentile(data,[25,75])iqrq3-q1# Plotting the data and IQRplt.figure(figsize(10,6))plt.hist(data,bins30,colorskyblue,alpha0.7,labelData Distribution)plt.axvline(q1,colorblue,linestyle--,linewidth2,labelQ1)plt.axvline(q3,colorred,linestyle--,linewidth2,labelQ3)plt.title(Interquartile Range (IQR))plt.xlabel(Value)plt.ylabel(Frequency)plt.legend()plt.show()https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c1f819b6e0679d4c1fb99fbc6a83459d.png作者图片在这个直方图中第一四分位数Q1和第三四分位数Q3由虚线标记。这些线之间的区域代表 IQR覆盖了数据的中心 50%突出了受异常值影响较小的分布范围。总结来说MAD 和 IQR 都提供了在存在异常值的情况下对数据变异性的弹性估计使它们成为稳健统计分析不可或缺的工具。选择正确工具的挑战和考虑因素https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/0cb3ced026eebe4bdf1ceb52c1fbe5ad.png由 Barn Images 在 Unsplash 提供的照片虽然稳健统计提供了强大的解决方案但它们并不适用于所有场景。数据分布的性质和具体的研究目标需要定制化的方法。以下是一个简明的指南以帮助您进行这一选择过程。中位数使用时机适用于偏斜分布或数据包含异常值的情况。在有序数据或当测量中心位置比平均值更重要时很有用。极限不利用所有数据点这可能导致信息丢失尤其是在无异常值的对称分布中。对于需要均值值的进一步统计分析如计算方差来说不太有用。截尾均值何时使用适用于存在异常值的数据但在此情况下均值仍比中位数更受青睐以保留更多数据集的信息。在几乎对称的分布且有极端异常值时有效。极限截尾百分比的选取可能是主观的并显著影响结果。如果截尾百分比选择不当仍可能受异常值的影响。Winsorized Mean何时使用适用于存在异常值的分布尤其是当数据点不应丢弃但需要控制极端值时。当样本量小且保留每个数据点很重要时很有用。极限与截尾均值类似Winsorization 的极限选择可以是任意的并会影响结果。如果 Winsorization 百分比过高可能会引入偏差尤其是在偏斜分布中。一般建议对称分布且无异常值通常均值和标准差就足够了。偏斜分布或存在异常值中位数、截尾均值或 Winsorized 均值更可靠。中位数非常稳健但对数据的小变化不太敏感使其适合高度偏斜的分布。截尾和 Winsorized 均值提供了一个折衷方案减少了异常值的影响同时比中位数保留了更多数据信息。探索性数据分析从中位数和 M 范数开始可以提供一个快速、对异常值有抵抗力的数据概览。如果数据看起来主要是对称且无异常值则可以使用均值和标准差进行更详细的分析。最终分析考虑分布和异常值的存在。在许多情况下结合多种指标可以提供最全面的理解例如报告均值和中位数或在使用传统指标进行比较的同时使用稳健估计量。总结选择指标应基于数据的特征和分析的具体目标。通常探索多个指标以全面了解数据的中心趋势和离散程度是有益的。前瞻性稳健的相关性、回归和高级稳健方法。本介绍为数据科学中的稳健统计实践奠定了基础。在下一教程中我们将探讨分析变量之间关系的方法即使在存在异常值的情况下。那里见

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…