异常值分析

异常值指样本中的个别值,其数值明显偏离其余的观测值,也称为离群点

  1. 简单统计量分析
    可以先对变量做一个描述性统计,进而查看那些数据是不合理的
    最常用的统计量为最大值和最小值

2.3σ原则(标准差)
如果数据服从正态分布,在3标准差原则下,异常值被定义为一组测定值中与平均值的偏差超过3倍标准差的值
在正态分布的假设下,距离平均值P(|x-μ|>3σ)≤0.003属于极小概率事件
如果数据不服从正态分布,也可以用远离平均值的多少倍标准差来描述。

3、箱型图分析
箱型图提供了识别异常值的一个标准:异常值通常被定义为小于QL-1.5IQR或大于QU+1.5IQR的值。
QL称为下四分位数,表示全部观察值中有四分之一的数据取值比它小;
QU称为上四分位数,表示全部观察值中有四分之一的数据取值比它大;
IQR称为四分位数间距,是上四分位数QU与下四分位数QL之差,其间包含了全部观察值的一半。
箱型图依据实际数据绘制,没有对数据作任何限制性要求(如服从某种特定的分布形式),它只是真实直观地表现数据分布的本来面貌;另一方面,箱型图判断异常值的标准以四分位数和四分位距为基础,四分位数具有一定的鲁棒性:多达25%的数据可以变得任意远而不会很大地扰动四分位数,所以异常值不能对这个标准施加影响。由此可见,箱型图识别异常值的结果比较客观,在识别异常值方面有一定的优越性,如图所示。

在这里插入图片描述

异常值检测代码

#-*- coding: utf-8 -*-
import pandas as pd
filename='../data/xxx.xls'
data=pd.read_excel(filename,index_col=u'日期')

improt matplotlib.pyplot as plt
plt.rcParms['font_sans-serif']=['SimHei]
plt.rcParms['axes.unicode_minus'] = False

plt.figure()
p=data.boxplot()
x=p['fliers'][0].get_xdata()
y=p['fliers'][0].get_ydata()
y.sort()

for i in range (len(x)):
if i>0:
plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.05-0.8/(y[i]-y[i-1]),y[i]))
else:
plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.08,y[i])
plt.show()


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值