精华内容
下载资源
问答
  • 信号去极值

    2018-08-23 21:45:58
    异常值是指那些分布明显异于普通分布...正态分布去极值 这种想法的思路来自于正态分布,假设X?N(μ,σ2),那么: P(|X?μ|>k?σ)=?????0.317,0.046, 0.003,k=1k=2k=3通常把三倍标准差之外的值都视为异常值...

    异常值是指那些分布明显异于普通分布的数值,会极大的干扰因子的研究,特别是对回归模型的研究。所以在对因子进行分析之前,除了要检查数据本身的正确性之外,数据的异常值的处理也十分重要。

    正态分布去极值
    这种想法的思路来自于正态分布,假设X?N(μ,σ2),那么:

    P(|X?μ|>k?σ)=?????0.317,0.046, 0.003,k=1k=2k=3通常把三倍标准差之外的值都视为异常值,不过要注意的是样本均值和样本标准差都不是稳健统计量,其计算本身受极值的影响就非常大,所以可能会出现一种情况,那就是我们从数据分布图上能非常明显的看到异常点,但按照上面的计算方法,这个异常点可能仍在均值三倍标准差的范围内。因此按照这种方法剔除掉异常值后,需要重新观察数据的分布情况,看是否仍然存在显著异常点,若存在则继续重复上述步骤寻找异常点。winsorize函数默认使用正态分布法去极值,重复观察次数为5次。

    分位数去极值(固定比例法)
    将那些上下pvalue%/2的值进行拉回,认为其不可信。winsorize函数默认pvalue为0.05,这时候会将那些高于第97.5百分位数的值以及低于第2.5百分位数的值认为是异常值。

    标准化
    在对因子进行合成之前,我们还需要对每个因子进行标准化的处理,消除量纲的影响。常见的归一化方法就是zscore法。简单来讲对于一个截面的因子数据,就是(因子值 - 因子均值)/ 因子标准差。

    展开全文
  • 量化交易 因子数据处理之去极值

    千次阅读 多人点赞 2021-03-18 09:49:47
    因子数据处理之去极值概述因子 Panel 结构分析截面数据序列数据因子去极值分位数去极值中位数四分位数百分位数 概述 在我们构建策略之前首先要对得到的数据进行预处理. 去极值就是排除一些极端值的干扰. 如图: 因子...

    概述

    在我们构建策略之前首先要对得到的数据进行预处理. 去极值就是排除一些极端值的干扰. 如图:
    在这里插入图片描述

    因子 Panel 结构分析

    Pandas 当中面板数据结构是三维的结构. 由截面数据和序列数据组成.
    在这里插入图片描述

    代码:

    get_price("000001.XSHE", start_date="2020-01-01", end_date="2020-01-06")
    

    输出结果:
    在这里插入图片描述

    price = get_price(["000024.XSHE","000001.XSHE","000002.XSHE"], start_date="2015-04-01",end_date="2015-04-12")
    price
    

    输出结果:
    在这里插入图片描述

    截面数据

    截面数据: 在同一时间, 不同统计单位相同统计指标组成的数据列.

    # 获取个别财务数据
    q = query(
        fundamentals.income_statement.revenue,
        fundamentals.income_statement.cost_of_goods_sold
    ).filter(
        fundamentals.stockcode.in_(["000024.XSHE","000001.XSHE"])
    )
    
    fund = get_fundamentals(q, entry_date="2020-01-03")
    
    # 换成截面
    fund.iloc[:,0,:]
    

    输出结果:
    在这里插入图片描述

    # 获取所有财务数据
    q = query(
        fundamentals.income_statement.revenue,
        fundamentals.income_statement.cost_of_goods_sold
    )
    
    fund = get_fundamentals(q, entry_date="2020-01-03")
    
    # 换成截面
    fund.iloc[:,0,:]
    

    输出结果:
    在这里插入图片描述

    序列数据

    序列数据: 在不同时间点上收集到的数据. 这类数据反映了某一事物, 现象等随时间变的化状态或程度.
    在这里插入图片描述
    注: 多因子分析使用的是截面数据而不是序列数据.

    因子去极值

    首先我们需要明白, 去极值不是删除 “异常数据”, 而是将这些数据 “拉回” 到正常的值.

    去极值分为三种方法:

    • 分位数去极值
    • 中位数绝对偏差去极值
    • 正态分布去极值

    分位数去极值

    首先我们来了解几个概念:

    1. 中位数
    2. 四分位数
    3. 百分位数

    中位数

    中位数是指将数据按大小顺序排列起来, 形成一个数列. 中位数就是居于数列中间位置的那个数. 中位数用 Me (Median 简写) 表示.
    在这里插入图片描述
    从上图我们可以看出中位数相较于平均数受极大值 / 极小值的影响较小. 所以我们选择中位数而不是平均数.

    四分位数

    四分位数即把所有数值由小到大排列并分成四等分. 处于三个分割点位置的数值就是四分位数.
    在这里插入图片描述

    • 第一四分位数 (Q1), 又称 “较小四分位数”, 等于该样本中所有数值由小到大排列后第 25% 的数字
    • 第二四分位数 (Q2), 又称 “中位数”, 等于该样本中所有的数值由小到大排序后第 50% 的数字
    • 第三四分位数 (Q3), 又称 “较大四分位数”, 等于该样本中所有的数值由小到大排序后第 75% 的数字

    百分位数

    百分位数即数据所处位置为整体的某个 % 位数. 关于百分位数有两种称呼, quantile 和 percentile.

    原理

    分位数去极值的原理是将指定分位数区间以外的极值用分位点的值替换掉.

    分析

    • 获取指定某个日期或者区间段的 pe_ratio 截面数据
    • 分位数去极值
    • 去极值结果与极值前结果比较

    代码实现

    函数:

    import numpy as np
    
    # 求出两个分位数的点的值
    def quantile(factor, up, down):
        """分位数去极值"""
        up_scale = np.percentile(factor, up)
        down_scale = np.percentile(factor, down)
        
        factor = np.where(factor > up_scale, up_scale, factor)
        factor = np.where(factor < down_scale, down_scale, factor)
        return factor
    

    代码:

    # 筛选条件
    q = query(
        fundamentals.eod_derivative_indicator.pe_ratio
    )
    
    # 获取数据
    fund = get_fundamentals(q, entry_date="20200102").iloc[:, 0, :]
    
    # 上下 2.5% 处理
    fund["pe_ratio_fixed"] = quantile(fund["pe_ratio"], 97.5, 2.5)
    
    # 画图
    plt.figure(figsize=(15, 10))
    plt.bar(fund.index[:500],fund['pe_ratio'][:500])
    plt.bar(fund.index[:500],fund['pe_ratio_fixed'][:500])
    plt.xticks(fund.index[:501:50])
    plt.title("pe_ratio vs pe_ratio_fixed")
    plt.show()
    

    输出结果:
    在这里插入图片描述

    中位数绝对偏差去极值

    绝对偏差法 (MAD: Median Absolute Deviation) 是一种先需计算所有因子与中位数之间的距离综合来检测离群值的方法.

    计算方法

    1. 找出因子的中位数 median
    2. 得到每个因子值与中位数的绝对偏差 |x - median|
    3. 得到绝对偏差值的中位数, MAD, median(|x - median|)
    4. 计算 MAD_e = 1.4826*MAD. 然后确定参数 n, 做出调整

    去极值判断:
    在这里插入图片描述
    注: 通常把偏移中位数三倍设为 MAD_e. 如果样本满足正态分布且足够大, 我们可以证明超过上下限的值为异常值.

    代码实现

    函数:

    def mad(factor):
        """3倍中位数去极值"""
        
        # 求出因子值的中位数
        median = np.median(factor)
        
        # 求出因子值与中位数的差值, 进行绝对值
        mad = np.median(abs(factor - median))
        
        # 定义几倍的中位数上下限
        high = median + (3 * 1.4826 * mad)
        low = median - (3 * 1.4826 * mad)
        
        # 替换上下限
        factor = np.where(factor > high, high, factor)
        factor = np.where(factor < low, low, factor)
        return factor
    

    代码:

    # 筛选条件
    q = query(
        fundamentals.eod_derivative_indicator.pe_ratio
    )
    # 获取数据
    fund = get_fundamentals(q, entry_date="20200102").iloc[:, 0, :]
    
    # 中位数绝对偏差法
    fund["pe_ratio_fixed"] = mad(fund["pe_ratio"])
    
    # 画图
    plt.figure(figsize=(15, 10))
    plt.bar(fund.index[:500],fund['pe_ratio'][:500], color="green")
    plt.bar(fund.index[:500],fund['pe_ratio_fixed'][:500])
    plt.xticks(fund.index[:501:50])
    plt.title("pe_ratio vs pe_ratio_fixed")
    plt.show()
    

    输出结果:
    在这里插入图片描述

    正态分布去极值

    正态分布 (Normal Distribution):
    在这里插入图片描述
    在这里插入图片描述

    • 1σ: 68.27% 的数据落在一个标准差之内
    • 2σ: 95.45% 的数据落在两个标准差之内
    • 3σ: 99.73% 的数据落在三个标准差之内
    • 4σ: 99.99% 的数据落在四个标准差之内

    代码实现

    def three_sigma(factor):
        """3 sigma 去极值"""
        
        # 求出因子数据的平均数和标准差
        mean = factor.mean()
        std = factor.std()
        
        # 左右的数据加减 3 个标准差
        high = mean + (3 * std)
        low = mean - (3 * std)
        
        # 替换极值数据
        factor = np.where(factor > high, high, factor)
        factor = np.where(factor <low, low, factor)
        
        return factor
    
    # 筛选条件
    q = query(
        fundamentals.eod_derivative_indicator.pe_ratio
    )
    # 获取数据
    fund = get_fundamentals(q, entry_date="20200102").iloc[:, 0, :]
    
    # 3 sigma 去极值
    fund["pe_ratio_fixed"] = three_sigma(fund["pe_ratio"])
    
    # 画图
    plt.figure(figsize=(15, 10))
    plt.bar(fund.index[:500],fund['pe_ratio'][:500], color="orange")
    plt.bar(fund.index[:500],fund['pe_ratio_fixed'][:500], color= "red")
    plt.xticks(fund.index[:501:50])
    plt.title("pe_ratio vs pe_ratio_fixed")
    plt.show()
    

    输出结果:
    在这里插入图片描述

    总结

    在做去极值的时候最好不要用正态分布去极值法, 推荐使用分位数和中位数绝对偏差去极值.

    展开全文
  • 数据处理:去极值、标准化

    千次阅读 2019-09-09 23:22:57
    1. 数据处理专题:去极值、标准化 导语:一般的数据预处理中常提及到的处理:去极值、标准化。我们将向大家讲述这常见的数据处理操作。 注意: 该笔记只能在mindgo网站的notebook中实现。 1.1 去极值 在分析上市公司...

    1. 数据处理专题:去极值、标准化

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

    注意: 该笔记只能在mindgo网站的notebook中实现。

    1.1 去极值

    在分析上市公司当季净利润同比增长率数据时,我们往往会被其中一些公司的数据干扰,如图中江西长运,2017三季度净利润同比增长率高达32836.04%!而实际上大部分公司的当季净利润同比增长率的数值都远远达到这个值的百分之一。那么数据去极值操作就显得尤为关键,可以剔除掉数据干扰项,提高数据结论的准确性。
    在这里插入图片描述

    一般去极值的处理方法就是确定该项指标的上下限,然后超过或者低于限值的数据统统即为限值。其中上下限数值判断标准有三种,分别为 MAD、 3σ、百分位法。

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

    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))
    print(type(q))
    

    在这里插入图片描述

    
    data = get_fundamentals(q,date=date)
    print(type(data))
    print(data.head())
    

    在这里插入图片描述

    # 修改索引名字 
    data.columns = [['symbol','pe_ratio','market_cap']]
    print(data.keys())
    

    [外链图片转存失败(img-KD1tNeef-1568042563137)(C:\Users\76147\AppData\Roaming\Typora\typora-user-images\1568040996603.png)]

    data = data.set_index(data.symbol.values)
    print(data.keys())
    del data['symbol']
    data['1/PE'] = 1/data['pe_ratio']
    data.head()
    

    在这里插入图片描述
    1/PE的数据分布,运用绘图函数展示出来:

    1/PE就市盈率的倒数,即每股收益相对你付出每股价格的投资回报率。20倍PE则说明如果不增长的前提下,每股收益相对于你付出的价格的回报率是5%,20年回本。所以,1/PE是从投资回报率以及投资回收年限的角度来分析。一般来说,如果单纯的每年5%的回报率,大家是不满意的,更多人还是因为公司会不断发展,利润会不断增加,那么回报率也会增加,投资回收年限减少。

    fig = plt.figure(figsize = (20, 8))
    ax = data['1/PE'].plot.kde(label = 'Original_PE')
    ax.legend()
    

    在这里插入图片描述

    1.1.1 MAD法

    MAD(mean absolute deviation)又称为绝对值差中位数法,是一种先需计算所有因子与平均值之间的距离总和来检测离群值的方法,处理的逻辑:

    第一步,找出所有因子的中位数 Xmedian
       第二步:得到每个因子与中位数的绝对偏差值 Xi−Xmedian
       第三步:得到绝对偏差值的中位数 MAD
       第四步:确定参数 n,从而确定合理的范围为 [Xmedian−nMAD,Xmedian+nMAD],并针对超出合理范围的因子值做如下的调整:
    在这里插入图片描述

    MAD法代码实现:

    def filter_extreme_MAD(series,n): #MAD:中位数去极值
      median = series.quantile(0.5)
      new_median = ((series - median).abs()).quantile(0.50)
      max_range = median + n*new_median
      min_range = median - n*new_median
      return np.clip(series,min_range,max_range)
    

    对原始数据进行MAD处理后的结果:

    fig = plt.figure(figsize = (20, 8))
    ax = data['1/PE'].plot.kde(label = 'Original_PE')
    ax = filter_extreme_MAD(data['1/PE'],5).plot.kde(label = 'MAD')
    ax.legend()
    

    在这里插入图片描述

    1.1.2 3σ法

    3σ法又称为标准差法。标准差本身可以体现因子的离散程度,是基于因子的平均值 Xmean而定的。在离群值处理过程中,可通过用 Xmean±nσ来衡量因子与平均值的距离。

    标准差法处理的逻辑与MAD法类似:
       第一步:计算出因子的平均值与标准差
       第二步:确认参数 n(这里选定 n = 3)
       第三步:确认因子值的合理范围为 [Xmean−nσ,Xmean nσ],并对因子值作如下的调整:

    在这里插入图片描述

    3σ代码实现:

    def filter_extreme_3sigma(series,n=3): #3 sigma
      mean = series.mean()
      std = series.std()
      max_range = mean + n*std
      min_range = mean - n*std
      return np.clip(series,min_range,max_range)
    

    对原始数据进行3σ处理后的结果:

    fig = plt.figure(figsize = (20, 8))
    ax = data['1/PE'].plot.kde(label = 'Original_PE')
    ax = filter_extreme_3sigma(data['1/PE']).plot.kde(label = '3sigma')
    ax.legend()
    

    在这里插入图片描述

    1.1.3 百分位法:

    将因子值进行升序的排序,对排位百分位高于97.5%或排位百分位低于2.5%的因子值,进行类似于 MAD 、 3σ 的方法进行调整。

    百分位法代码实现:

    def filter_extreme_percentile(series,min = 0.10,max = 0.90): #百分位法
      series = series.sort_values()
      q = series.quantile([min,max])
      return np.clip(series,q.iloc[0],q.iloc[1])
    
    fig = plt.figure(figsize = (20, 8))
    ax = data['1/PE'].plot.kde(label = 'Original_PE')
    ax = filter_extreme_percentile(data['1/PE']).plot.kde(label = 'Percentile')
    ax.legend()
    

    在这里插入图片描述

    1.2 标准化

    继续深入的做股票数据分析,假设我们需买入当季净利润同比增长率较高和股息率较高的股票,如果单纯的将两个指标相加,然后取最终值较大的那些股票,那么会面临一个非常严重的问题:两个指标的数值意义不同。上市公司达到股息率10%难于净利润同比增长率10%,一般股息率都小于5%,而净利润增长率则远远超过5%的数值,因此简单的相加,然后选股会淡化股息率指标。

    那么这种情况下,数据标准化处理可以解决问题。

    标准化在统计学中有一系列含义,一般使用z-score的方法。处理后的数据从有量纲转化为无量纲,使得不同的指标能够进行比较和回归。

    z-score的方法介绍

    标准化后的数值 = (原始值-单个指标内所有值的均值)/单个指标内所有值的标准差

    z-score的方法代码实现:

    def standardize_series(series): #原始值法
      std = series.std()
      mean = series.mean()
      return (series-mean)/std
    
    
    fig = plt.figure(figsize = (20, 8))
    
    
    new = filter_extreme_3sigma(data['1/PE'])
    
    ax = standardize_series(new).plot.kde(label = 'standard_1')
    ax.legend()
    

    在这里插入图片描述

    展开全文
  • 一、去极值 百分位去极值:直接以上下百分位为边界,将边界外数据归为边界上数据,目前行业内一般不使用。 标准化去极值:又称为标准差法。标准差本身可以体现因子的离散程度,是基于因子的平均值 Xmean而定的。在...

    一、去极值

    1. 百分位去极值:直接以上下百分位为边界,将边界外数据归为边界上数据,目前行业内一般不使用。
    2. 标准化去极值:又称为标准差法。标准差本身可以体现因子的离散程度,是基于因子的平均值 Xmean而定的。在离群值处理过程中,可通过用 Xmean±nσ来衡量因子与平均值的距离。 标准差法处理的逻辑与MAD法类似,首先计算出因子的平均值与标准差,其次确认参数 n(这里选定 n = 3,3个标准差以内概率为99.73%),从而确认因子值的合理范围为 [Xmean−nσ,Xmean nσ]
    3. MAD中位数去极值:由于常见的3σ去极值法是基于样本服从正态分布这个假设的,但往往我们发现大部分因子值的分布都并不服从正态分布,厚尾分布的情况较为普遍。因此我们采用更加稳健的MAD(Median Absolute Deviation 绝对中位数法)首先计算因子值的中位数𝑀𝑒𝑑𝑖𝑎𝑛𝑓,并定义绝对中位值为:采取与3σ法等价的方法,我们将大于𝑀𝑒𝑑𝑖𝑎𝑛𝑓 + 3 ∗ 𝑀𝐴𝐷的值或小于𝑀𝑒𝑑𝑖𝑎𝑛𝑓 − 3 ∗ 𝑀𝐴𝐷的值定义为异常值。在对异常值做处理时,需要根据因子的具体情况来决定是直接剔除异常值,还是将异常值设为上下限的数值,常用的方法是后者。 操作步骤:
    • Step1.找出所有因子的中位数median
    • Step2.计算所有因子与1中的median的差值绝对值的中位数MAD
    • Step3.确定边界[median−nMAD,median+nMAD]            

    4、相关代码(MAD中位数去极值

    def winsorize_med(data, scale=1, inclusive=True, inf2nan=True, axis=1):
        '''
        参数
        ------------
        data: pd.Series/pd.DataFrame, 待缩尾的序列
        scale: 倍数,默认为 1.0。会将位于 [med - scale * distance, med + scale * distance] 边界之外的值替换为边界值/np.nan
        inclusive bool 是否将位于边界之外的值替换为边界值,默认为 True。 如果为 True,则将边界之外的值替换为边界值,否则则替换为 np.nan
        inf2nan: 是否将 np.inf 和 -np.inf 替换成 np.nan,默认为 True。如果为 True,在缩尾之前会先将 np.inf 和 -np.inf 替换成 np.nan,缩尾的时候不会考虑 np.nan,否则 inf 被认为是在上界之上,-inf 被认为在下界之下
        axis: 在 data 为 pd.DataFrame 时使用,沿哪个方向做标准化,默认为 1。0 为对每列做缩尾,1 为对每行做缩尾
    
        返回
        ------------
        中位数去极值之后的因子数据
        '''
        if isinstance(data,pd.DataFrame):
            value = data.copy()        
            if axis==1:
                long = value.shape[0]
                for i in range(long):
                    s = value.iloc[i,:]
                    if inf2nan==True:
                        s[np.isinf(s)]=np.nan
                        med = np.median(s.dropna())
                        distance = np.median(np.abs(s-med).dropna())
                        up = med+scale*distance
                        down = med-scale*distance            
                        if inclusive==True:
                            s[s>up]=up
                            s[s<down]=down
                        else:
                            s[s>up]=np.nan
                            s[s<down]=np.nan            
                    else:
                        med = np.median(s.dropna())
                        distance = np.median(np.abs(s-med).dropna())
                        up = med+scale*distance
                        down = med-scale*distance
                        if inclusive==True:
                            s[s>up]=up
                            s[s<down]=down
                        else:
                            s[s>up]=np.nan
                            s[s<down]=np.nan
                return value
            elif axis==0:
                width = value.shape[1]
                for j in range(width):
                    s = value.iloc[:,j]
                    if inf2nan==True:
                        s[np.isinf(s)]=np.nan
                        med = np.median(s.dropna())
                        distance = np.median(np.abs(s-med).dropna())
                        up = med+scale*distance
                        down = med-scale*distance            
                        if inclusive==True:
                            s[s>up]=up
                            s[s<down]=down
                        else:
                            s[s>up]=np.nan
                            s[s<down]=np.nan                
                    else:
                        med = np.median(s.dropna())
                        distance = np.median(np.abs(s-med).dropna())
                        up = med+scale*distance
                        down = med-scale*distance
                        if inclusive==True:
                            s[s>up]=up
                            s[s<down]=down
                        else:
                            s[s>up]=np.nan
                            s[s<down]=np.nan
                return value
            else:
                return('axis值有误')
        elif isinstance(data,pd.Series):
            value = data.copy()
            if inf2nan==True:
                value[np.isinf(value)]=np.nan
                med = np.median(value.dropna())
                distance = np.median(np.abs(value-med).dropna())
                up = med+scale*distance
                down = med-scale*distance            
                if inclusive==True:
                    value[value>up]=up
                    value[value<down]=down
                else:
                    value[value>up]=np.nan
                    value[value<down]=np.nan  
                return value
            else:
                med = np.median(value.dropna())
                distance = np.median(np.abs(value-med).dropna())
                up = med+scale*distance
                down = med-scale*distance
                if inclusive==True:
                    value[value>up]=up
                    value[value<down]=down
                else:
                    value[value>up]=np.nan
                    value[value<down]=np.nan  
                return value
        else:
            print('不是pd.Series和pd.DataFrame类型')
            return

     

    展开全文
  • #为什么要做去极值的工作(Why) 在做回归分析的时候,因为过大或过小的数据可能会影响到分析结果,离群值会严重影响因子和收益率之间的相关性估计结果,因此需要对那些离群值进行处理 ## 有哪些去极值的方法...
  • 去极值的方法,可以用均值加n倍的方差,来过滤,也可以用中位数加上下范围来过滤。如聚宽就提供了winsorize和winsorize_med等方法。 但我总觉得不合心意,第一,这个过程本来就是需要不断调整参数的,最好能够按照...
  • 对于量化研究而言,拿到一份基础数据,首先需要对数据做预处理,以便于更好的探究数据规律,基于不同目标有不同处理环节,其中去极值、标准化、中性化这三点经常被放在一起讨论。整理网络资料,理解如下。 去极值 ...
  • def filter_extreme_MAD(series,n): #MAD:中位数去极值 median = series.quantile(0.5) new_median = ((series - median).abs()).quantile(0.50) max_range = median + n*new_median min_range = median - n*new_...
  • Python去极值方法

    2021-01-11 16:18:52
    #MAD:中位数去极值 def filter_extreme_MAD(series,n=5): median = series.quantile(0.5) new_median = ((series - median).abs()).quantile(0.50) max_range = median + n*new_median min_range = median - n*new_...
  • 根据不同类型的数据有不同的数据预处理方法,其中,针对因子研究,最常用的预处理方法就是:去极值、标准化和中心化。本期将分别对上述三种常用的因子预处理方法的含义进行介绍,并使用优矿数据预处理函数对市盈率...
  • #因子去极值及标准化 def normal(a): Func = lambda a:(a-a.mean())/a.std() norm = a.apply(Func) return norm def winsorize(a,limit=3): def func(a): a[a<a.mean()-a.std()*limit] = a.mean() - a.std...
  • 根据不同类型的数据有不同的数据预处理方法,其中,针对因子研究,最常用的预处理方法就是:去极值、标准化和中心化。本期将分别对上述三种常用的因子预处理方法的含义进行介绍,并使用优矿数据预处理函数对市盈率...
  • 根据不同类型的数据有不同的数据预处理方法,其中,针对因子研究,最常用的预处理方法就是:去极值、标准化和中心化。本期将分别对上述三种常用的因子预处理方法的含义进行介绍,并使用优矿数据预处理函数对市盈率...
  • 1. MAD #MAD(mean absolute deviation)又称为绝对值差中位数法,是一种先需计算所有因子与平均值之间的距离总和来检测离群值的方法. #处理的逻辑: #第一步,找出所有因子的中位数 Xmedian #第二步:得到每个因子...
  • 导语:一般的数据预处理中常提及到三类处理:去极值、标准化、中性化。我们将向大家讲述这常见的 三种数据处理操作。 一、去极值 在分析上市公司当季净利润同比增长率数据时,我们往往会被其中一些公司的数据干扰...
  • python求极值点主要用到scipy库。1. 首先可先选择一个函数或者拟合一个函数,这里选择拟合数据:np.polyfitimport pandas as pdimport matplotlib.pyplot as pltimport numpy as npfrom scipy import signal #滤波等...
  • 导语:一般的数据预处理中常提及到三类处理:去极值、标准化、中性化。我们将向大家讲述这常见的 三种数据处理操作。 一、去极值 在分析上市公司当季净利润同比增长率数据时,我们往往会被其中一些公司的数据干扰,...
  • ] 迭代次数为: 1994 近似最优解为: [ 0.99735222 0.99469882] 所得图像为 以上这篇用Python实现最速下降法求极值的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 452
精华内容 180
关键字:

去极值