第五章:量化研究专题(第五篇:数据处理专题:去极值、标准化、中性化 )

  • Post author:
  • Post category:其他


导语:一般的数据预处理中常提及到三类处理:去极值、标准化、中性化。我们将向大家讲述这常见的

三种数据处理操作。

一、去极值

在分析上市公司当季净利润同比增长率数据时,我们往往会被其中一些公司的数据干扰,如图中江

西长运,2017 三季度净利润同比增长率高达32836.04% !而实际上大部分公司的当季净利润同比增长

率的数值都远远达到这个值的百分之一。那么数据去极值操作就显得尤为关键,可以剔除掉数据干扰项,

提高数据结论的准确性。

一般去极值的处理方法就是确定该项指标的上下限,然后超过或者低于限值的数据统统即为限值。

其中上下限数值判断标准有三种,分别为 MAD 、 3σ、百分位法。

以沪深300 成分股的pe 值为原始数据,向大家阐述MAD 、 3σ、百分位法。

import numpy as np

import pandas as pd

import math

from statsmodels import regression

import statsmodels.api as sm

import matplotlib.pyplot as plt

date=’20180125′

stock=get_index_stocks(‘000300.SH’,date)

q = query(

valuation.symbol,

valuation.pe_ttm,

valuation.current_market_cap

).filter(valuation.symbol.in_(stock))

data = get_fundamentals(q,date=date)

data.columns = [[‘symbol’,’pe_ratio’,’market_cap’]]

data = data.set_index(data.symbol.values)

del data[‘symbol’]

data[‘1/PE’] = 1/data[‘pe_ratio’]

data.head()

pe_ratio    market_cap      1/PE

———————– Page 165———————–

000001.SZ     10.59  2.402355e+11  0.094429

000002.SZ     18.61  3.903084e+11  0.053735

000008.SZ     54.53  1.661121e+10  0.018339

000060.SZ     27.51  2.613508e+10  0.036350

000063.SZ   -115.27  1.237605e+11 -0.008675

将1/PE 的数据分布,运用绘图函数展示出来:

fig = plt.figure(figsize = (20, 8))

ax = data[‘1/PE’].plot.kde(label = ‘Original_PE’)

ax.legend()

下图是 20180125  的沪深300 指数成分股 1/PE 的数据分布:

1. MAD 法:

MAD 又称为绝对值差中位数法,是一种先需计算所有因子与平均值之间的距离总和来检测离群值的

方法,处理的逻辑:

第一步,找出所有因子的中位数 Xmedian

第二步:得到每个因子与中位数的绝对偏差值 Xi−Xmedian

第三步:得到绝对偏差值的中位数 MAD

第四步:确定参数 n ,从而确定合理的范围为 [Xmedian−nMAD,Xmedian nMAD],并针对超出合理

范围的因子值做如下的调整:

<



版权声明:本文为wuyusheng314原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。