精华内容
下载资源
问答
  • 之前笔者在做一个金融数据项目时,有朋友问我,衡量股票收益率有没有什么好的...均值方差是我们见到用到最多的方法,甚至在中学课本里都有提及,那么笔者今天就讲一下偏度和峰度这两个大家不太常用的方法,并结...
    5888d4dce1e47162911e206fb12ac014.png

    之前笔者在做一个金融数据项目时,有朋友问我,衡量股票收益率有没有什么好的方法。这个问题让笔者也思索了好久,其实股票的收益率如果我们从本质来看不就是数据吗,无非就是收益率我们就想让其越高越好,也就是让这个数据增加得越多越好。而衡量数据我们经常用到的方法有均值、方差、偏度和峰度。均值和方差是我们见到和用到最多的方法,甚至在中学课本里都有提及,那么笔者今天就讲一下偏度和峰度这两个大家不太常用的方法,并结合python代码讲一下偏度和峰度在数据分析中的简单应用。

    首先还是介绍一下偏度和峰度的概念。

    2a7058e1d6c55489cc38ea92ad6b304c.png

    图1. 偏度和峰度公式

    偏度(skewness)又称偏态、偏态系数,是描述数据分布偏斜方向和程度的度量,其是衡量数据分布非对称程度的数字特征。对于随机变量X,其偏度是样本的三阶标准化矩,计算公式如图1中的式(1)所示。

    偏度的衡量是相对于正态分布来说,正态分布的偏度为0。因此我们说,若数据分布是对称的,偏度为0;若偏度>0,则可认为分布为右偏,也叫正偏,即分布有一条长尾在右;若偏度<0,则可认为分布为左偏,也叫负偏,即分布有一条长尾在左。正偏和负偏如图2所示,在图2中,左边的就是正偏,右边的是负偏。

    1ede2f200de73b12a3456f31ab9d448a.png

    图2. 偏度的示意图

    而峰度(Kurtosis)则是描述数据分布陡峭或平滑的统计量,通过对峰度的计算,我们能够判定数据分布相对于正态分布而言是更陡峭还是平缓。对于随机变量X,其峰度为样本的四阶标准中心矩,计算公式如图1中的式2所示。

    当峰度系数>0,从形态上看,它相比于正态分布要更陡峭或尾部更厚;而峰度系数<0,从形态上看,则它相比于正态分布更平缓或尾部更薄。在实际环境当中,如果一个分部是厚尾的,这个分布往往比正态分布的尾部具有更大的“质量”,即含又更多的极端值。我们常用的几个分布中,正态分布的峰度为0,均匀分布的峰度为-1.2,指数分布的峰度为6。

    峰度的示意图如图3所示,其中第一个子图就是峰度为0的情况,第二个子图是峰度大于0的情况,第三个则是峰度小于0。

    eb3be3092196fa25a44e90dfdab41db2.png

    图3. 峰度的示意图

    在说完基本概念之后,我们就再讲一下怎么基于偏度和峰度进行正态性检验。这里主要有两种方法,一是Omnibus检验,二是Jarque - Bera检验。

    8d583db30f3519f36e51569c4a4d365c.png

    图4. Omnibus和JB检验的公式

    Omnibus检验的公式如图4中公式(3)所示,式中Z1和Z2是两个正态化函数,g1和g2则分别是偏度和峰度,在Z1和Z2的作用下,K的结果就接近于卡方分布,我们就能用卡方分布来检验了。这个公式的原理比较复杂,大家如想了解可自行查找相关资料。

    Jarque - Bera检验的公式如图4中公式(4)所示,式中n是样本量,这个结果也是接近于卡方分布,其原理也不在这里赘述。这两个检验都是基于所用数据是正态分布的,即有如下假设。

    原假设H0:数据是正态分布的。

    备择假设H1:数据不是正态分布。

    下面我们用代码来说明一下偏度和峰度。

    首先看一下数据,这个数据很简单,只有15行2列。数据描述的是火灾事故的损失以及火灾发生地与最近消防站的距离,前者单位是千元,后者单位是千米,数据如图5所示。其中distance指火灾发生地与最近消防站的距离,loss指火灾事故的损失。

    3207a5cdce7a690cb45b13941f10441a.png

    图5. 数据示例

    下面是代码,首先导入需要的库。

    import pandas as pdimport matplotlib.pyplot as pltimport statsmodels.stats.api as smsimport statsmodels.formula.api as smffrom statsmodels.compat import lzipfrom statsmodels.graphics.tsaplots import plot_acf

    接下来是读取数据并作图,这些代码都非常简单,笔者不做过多的解释。

    file = r'C:甥敳獲data.xlsx'df = pd.read_excel(file)fig, ax = plt.subplots(figsize=(8,6))plt.ylabel('Loss')plt.xlabel('Distance')plt.plot(df['distance'], df['loss'], 'bo-', label='loss')plt.legend()plt.show()

    结果如图6所示,从结果中我们可以看到这些点大致在一条直线上,那么我们就用一元线性回归来拟合这些数据。

    e6df13acb1f581981de5049830b8dd61.png

    图6. 数据连线图

    下面是生成模型,并输出模型的结果。

    expr = 'loss ~ distance'results = smf.ols(expr, df).fit() #生成回归模型print(results.summary())

    结果如图7所示。从图中我们可以看到,Prob (F-statistic)的值为1.25e-08,这个值非常小,说明我们的一元线性回归模型是正确的,也就是loss和distance的线性关系是显著的。而图中还可以看到Skew=-0.003,说明这部分数据非常接近正态分布,而Kurtosis=1.706,说明我们的数据比正态分布更陡峭,是一个尖峰。此外,从图中还可以看到Omnibus=2.551,Prob(Omnibus)=0.279,Jarque-Bera (JB)=1.047,Prob(JB)=0.592,这里我们很难直接从Omnibus和Jarque-Bera的数值来判断是否支持前面的备择假设,但我们可以从Prob(Omnibus)和Prob(JB)这两个数值来判断,因为这两个数值都比较大,那么我们就无法拒绝前面的原假设,即H0是正确的,说明我们的数据是服从正态分布的。

    d890128df66a71733eb58c84a0d92517.png

    图7. 模型结果说明

    接下来我们再验证一下Skew、Kurtosis、Omnibus和Jarque-Bera (JB)这些数值,用的是statsmodels自带的方法。代码如下。

    omnibus_label = ['Omnibus K-squared test', 'Chi-squared(2) p-value']omnibus_test = sms.omni_normtest(results.resid) #omnibus检验omnibus_results = lzip(omnibus_label, omnibus_test)jb_label = ['Jarque-Bera test', 'Chi-squared(2) p-value', 'Skewness', 'Kurtosis']jb_test = sms.jarque_bera(results.resid) #jarque_bera检验jb_results = lzip(jb_label, jb_test)print(omnibus_results)print(jb_results)

    这里omnibus_label和jb_label是两个list,里面包含了我们所要检验的项目名称,sms.omni_normtest就是statsmodels自带的omnibus检验方法,sms.jarque_bera就是statsmodels自带的jarque_bera检验方法。results.resid是残差值,一共有15个值,我们的数据本身就只有15个点,这里的每个残差值就对应前面的每个数据点,sms.omni_normtest和sms.jarque_bera就是通过残差值来进行检验的。而lzip这个方法很少见,其用法和python中原生函数zip差不多,笔者在这里更多地是想让大家了解statsmodels,所以用了lzip,这里直接用zip也是可以的,至于lzip和zip的区别,留给大家自行去学习。而上面得到的结果如图8所示。从图8中可以看到,我们得到的结果和前面图7中的结果一模一样。这里用sms.omni_normtest和sms.jarque_bera来进行验证,主要是对前面图7中的结果的一个解释,帮助大家更好地学习statsmodels。

    d35383d0ca80f8b710ffbe331d8f1b01.png

    图8. omnibus和jb检验的结果

    本文主要通过statsmodels来解释一下偏度和峰度在数据分析中的一些基本应用,想要更深入了解偏度、峰度以及statsmodels的读者,可以自行查阅相关资料。

    作者简介:Mort,数据分析爱好者,擅长数据可视化,比较关注机器学习领域,希望能和业内朋友多学习交流。

    展开全文
  • 之前笔者在做一个金融数据项目时,有朋友问我,衡量股票收益率有没有什么好的...均值方差是我们见到用到最多的方法,甚至在中学课本里都有提及,那么笔者今天就讲一下偏度和峰度这两个大家不太常用的方法,并结...

    之前笔者在做一个金融数据项目时,有朋友问我,衡量股票收益率有没有什么好的方法。这个问题让笔者也思索了好久,其实股票的收益率如果我们从本质来看不就是数据吗,无非就是收益率我们就想让其越高越好,也就是让这个数据增加得越多越好。而衡量数据我们经常用到的方法有均值、方差、偏度和峰度。均值和方差是我们见到和用到最多的方法,甚至在中学课本里都有提及,那么笔者今天就讲一下偏度和峰度这两个大家不太常用的方法,并结合python代码讲一下偏度和峰度在数据分析中的简单应用。
    首先还是介绍一下偏度和峰度的概念。

    b884b77b730df082d19808269388ba94.png


    图1. 偏度和峰度公式
    偏度(skewness)又称偏态、偏态系数,是描述数据分布偏斜方向和程度的度量,其是衡量数据分布非对称程度的数字特征。对于随机变量X,其偏度是样本的三阶标准化矩,计算公式如图1中的式(1)所示。
    偏度的衡量是相对于正态分布来说,正态分布的偏度为0。因此我们说,若数据分布是对称的,偏度为0;若偏度>0,则可认为分布为右偏,也叫正偏,即分布有一条长尾在右;若偏度<0,则可认为分布为左偏,也叫负偏,即分布有一条长尾在左。正偏和负偏如图2所示,在图2中,左边的就是正偏,右边的是负偏。

    755de90b5110c578980855a948617d03.png


    图2. 偏度的示意图
    而峰度(Kurtosis)则是描述数据分布陡峭或平滑的统计量,通过对峰度的计算,我们能够判定数据分布相对于正态分布而言是更陡峭还是平缓。对于随机变量X,其峰度为样本的四阶标准中心矩,计算公式如图1中的式2所示。
    当峰度系数>0,从形态上看,它相比于正态分布要更陡峭或尾部更厚;而峰度系数<0,从形态上看,则它相比于正态分布更平缓或尾部更薄。在实际环境当中,如果一个分部是厚尾的,这个分布往往比正态分布的尾部具有更大的“质量”,即含又更多的极端值。我们常用的几个分布中,正态分布的峰度为0,均匀分布的峰度为-1.2,指数分布的峰度为6。
    峰度的示意图如图3所示,其中第一个子图就是峰度为0的情况,第二个子图是峰度大于0的情况,第三个则是峰度小于0。

    9e21de78722f6bb759117b97e78d0cb0.png


    图3. 峰度的示意图
    在说完基本概念之后,我们就再讲一下怎么基于偏度和峰度进行正态性检验。这里主要有两种方法,一是Omnibus检验,二是Jarque - Bera检验。

    1a461b6d4f773cb448f1a382545e38be.png


    图4. Omnibus和JB检验的公式
    Omnibus检验的公式如图4中公式(3)所示,式中Z1和Z2是两个正态化函数,g1和g2则分别是偏度和峰度,在Z1和Z2的作用下,K的结果就接近于卡方分布,我们就能用卡方分布来检验了。这个公式的原理比较复杂,大家如想了解可自行查找相关资料。
    Jarque - Bera检验的公式如图4中公式(4)所示,式中n是样本量,这个结果也是接近于卡方分布,其原理也不在这里赘述。这两个检验都是基于所用数据是正态分布的,即有如下假设。
    原假设H0:数据是正态分布的。
    备择假设H1:数据不是正态分布。
    下面我们用代码来说明一下偏度和峰度。
    首先看一下数据,这个数据很简单,只有15行2列。数据描述的是火灾事故的损失以及火灾发生地与最近消防站的距离,前者单位是千元,后者单位是千米,数据如图5所示。其中distance指火灾发生地与最近消防站的距离,loss指火灾事故的损失。

    469be6a33f5cdef87c3559fe14f3b62a.png


    图5. 数据示例
    下面是代码,首先导入需要的库。import pandas as pdimport matplotlib.pyplot as pltimport statsmodels.stats.api as smsimport statsmodels.formula.api as smffrom statsmodels.compat import lzipfrom statsmodels.graphics.tsaplots import plot_acf
    接下来是读取数据并作图,这些代码都非常简单,笔者不做过多的解释。
    file = r'C:Usersdata.xlsx'
    df = pd.read_excel(file)
    fig, ax = plt.subplots(figsize=(8,6))
    plt.ylabel('Loss')
    plt.xlabel('Distance')
    plt.plot(df['distance'], df['loss'], 'bo-', label='loss')
    plt.legend()
    plt.show()
    结果如图6所示,从结果中我们可以看到这些点大致在一条直线上,那么我们就用一元线性回归来拟合这些数据。


    图6. 数据连线图
    下面是生成模型,并输出模型的结果。
    expr = 'loss ~ distance'
    results = smf.ols(expr, df).fit() #生成回归模型
    print(results.summary())
    结果如图7所示。从图中我们可以看到,Prob (F-statistic)的值为1.25e-08,这个值非常小,说明我们的一元线性回归模型是正确的,也就是loss和distance的线性关系是显著的。而图中还可以看到Skew=-0.003,说明这部分数据非常接近正态分布,而Kurtosis=1.706,说明我们的数据比正态分布更陡峭,是一个尖峰。此外,从图中还可以看到Omnibus=2.551,Prob(Omnibus)=0.279Jarque-Bera (JB)=1.047Prob(JB)=0.592,这里我们很难直接从Omnibus和Jarque-Bera的数值来判断是否支持前面的备择假设,但我们可以从Prob(Omnibus)和Prob(JB)这两个数值来判断,因为这两个数值都比较大,那么我们就无法拒绝前面的原假设,即H0是正确的,说明我们的数据是服从正态分布的。

    965f90f5dbbb65989b1ec828cc799742.png


    图7. 模型结果说明
    接下来我们再验证一下Skew、Kurtosis、Omnibus和Jarque-Bera (JB)这些数值,用的是statsmodels自带的方法。代码如下。
    omnibus_label = ['Omnibus K-squared test', 'Chi-squared(2) p-value']
    omnibus_test = sms.omni_normtest(results.resid) #omnibus检验
    omnibus_results = lzip(omnibus_label, omnibus_test)
    jb_label = ['Jarque-Bera test', 'Chi-squared(2) p-value', 'Skewness', 'Kurtosis']
    jb_test = sms.jarque_bera(results.resid) #jarque_bera检验
    jb_results = lzip(jb_label, jb_test)
    print(omnibus_results)
    print(jb_results)
    这里omnibus_labeljb_label是两个list,里面包含了我们所要检验的项目名称,sms.omni_normtest就是statsmodels自带的omnibus检验方法,sms.jarque_bera就是statsmodels自带的jarque_bera检验方法。results.resid是残差值,一共有15个值,我们的数据本身就只有15个点,这里的每个残差值就对应前面的每个数据点,sms.omni_normtestsms.jarque_bera就是通过残差值来进行检验的。而lzip这个方法很少见,其用法和python中原生函数zip差不多,笔者在这里更多地是想让大家了解statsmodels,所以用了lzip,这里直接用zip也是可以的,至于lzip和zip的区别,留给大家自行去学习。而上面得到的结果如图8所示。从图8中可以看到,我们得到的结果和前面图7中的结果一模一样。这里用sms.omni_normtestsms.jarque_bera来进行验证,主要是对前面图7中的结果的一个解释,帮助大家更好地学习statsmodels。

    5ece38abea2835fbbeb3e185353c0222.png


    图8. omnibus和jb检验的结果
    本文主要通过statsmodels来解释一下偏度和峰度在数据分析中的一些基本应用,想要更深入了解偏度、峰度以及statsmodels的读者,可以自行查阅相关资料。

    展开全文
  • 均值方差是我们见到用到最多的方法,甚至在中学课本里都有提及,那么笔者今天就讲一下偏度和峰度这两个大家不太常用的方法,并结合python代码讲一下偏度和峰度在数据分析中的简单应用。 首先还是介绍一下偏度和...

    之前笔者在做一个金融数据项目时,有朋友问我,衡量股票收益率有没有什么好的方法。这个问题让笔者也思索了好久,其实股票的收益率如果我们从本质来看不就是数据吗,无非就是收益率我们就想让其越高越好,也就是让这个数据增加得越多越好。而衡量数据我们经常用到的方法有均值、方差、偏度和峰度。均值和方差是我们见到和用到最多的方法,甚至在中学课本里都有提及,那么笔者今天就讲一下偏度和峰度这两个大家不太常用的方法,并结合python代码讲一下偏度和峰度在数据分析中的简单应用。

    首先还是介绍一下偏度和峰度的概念。

    图1. 偏度和峰度公式

    偏度(skewness)又称偏态、偏态系数,是描述数据分布偏斜方向和程度的度量,其是衡量数据分布非对称程度的数字特征。对于随机变量X,其偏度是样本的三阶标准化矩,计算公式如图1中的式(1)所示。

    偏度的衡量是相对于正态分布来说,正态分布的偏度为0。因此我们说,若数据分布是对称的,偏度为0;若偏度>0,则可认为分布为右偏,也叫正偏,即分布有一条长尾在右;若偏度<0,则可认为分布为左偏,也叫负偏,即分布有一条长尾在左。正偏和负偏如图2所示,在图2中,左边的就是正偏,右边的是负偏。

    图2. 偏度的示意图

    而峰度(Kurtosis)则是描述数据分布陡峭或平滑的统计量,通过对峰度的计算,我们能够判定数据分布相对于正态分布而言是更陡峭还是平缓。对于随机变量X,其峰度为样本的四阶标准中心矩,计算公式如图1中的式2所示。

    当峰度系数>0,从形态上看,它相比于正态分布要更陡峭或尾部更厚;而峰度系数<0,从形态上看,则它相比于正态分布更平缓或尾部更薄。在实际环境当中,如果一个分部是厚尾的,这个分布往往比正态分布的尾部具有更大的“质量”,即含又更多的极端值。我们常用的几个分布中,正态分布的峰度为0,均匀分布的峰度为-1.2,指数分布的峰度为6。

    峰度的示意图如图3所示,其中第一个子图就是峰度为0的情况,第二个子图是峰度大于0的情况,第三个则是峰度小于0。

    图3. 峰度的示意图

    在说完基本概念之后,我们就再讲一下怎么基于偏度和峰度进行正态性检验。这里主要有两种方法,一是Omnibus检验,二是Jarque - Bera检验。

    图4. Omnibus和JB检验的公式

    Omnibus检验的公式如图4中公式(3)所示,式中Z1和Z2是两个正态化函数,g1和g2则分别是偏度和峰度,在Z1和Z2的作用下,K的结果就接近于卡方分布,我们就能用卡方分布来检验了。这个公式的原理比较复杂,大家如想了解可自行查找相关资料。

    Jarque - Bera检验的公式如图4中公式(4)所示,式中n是样本量,这个结果也是接近于卡方分布,其原理也不在这里赘述。这两个检验都是基于所用数据是正态分布的,即有如下假设。

    原假设H0:数据是正态分布的。

    备择假设H1:数据不是正态分布。

    下面我们用代码来说明一下偏度和峰度。

    首先看一下数据,这个数据很简单,只有15行2列。数据描述的是火灾事故的损失以及火灾发生地与最近消防站的距离,前者单位是千元,后者单位是千米,数据如图5所示。其中distance指火灾发生地与最近消防站的距离,loss指火灾事故的损失。

    图5. 数据示例

    下面是代码,首先导入需要的库。

    import pandas as pd
    import matplotlib.pyplot as plt
    import statsmodels.stats.api as sms
    import statsmodels.formula.api as smf
    from statsmodels.compat import lzip
    from statsmodels.graphics.tsaplots import plot_acf
    

    接下来是读取数据并作图,这些代码都非常简单,笔者不做过多的解释。

    file = r'C:\Users\data.xlsx'
    df = pd.read_excel(file)
    fig, ax = plt.subplots(figsize=(8,6))
    plt.ylabel('Loss')
    plt.xlabel('Distance')
    plt.plot(df['distance'], df['loss'], 'bo-', label='loss')
    plt.legend()
    plt.show()
    

    结果如图6所示,从结果中我们可以看到这些点大致在一条直线上,那么我们就用一元线性回归来拟合这些数据。

    图6. 数据连线图

    下面是生成模型,并输出模型的结果。

    expr = 'loss ~ distance'
    results = smf.ols(expr, df).fit() #生成回归模型
    print(results.summary())
    

    结果如图7所示。从图中我们可以看到,Prob (F-statistic)的值为1.25e-08,这个值非常小,说明我们的一元线性回归模型是正确的,也就是loss和distance的线性关系是显著的。而图中还可以看到Skew=-0.003,说明这部分数据非常接近正态分布,而Kurtosis=1.706,说明我们的数据比正态分布更陡峭,是一个尖峰。此外,从图中还可以看到Omnibus=2.551,Prob(Omnibus)=0.279Jarque-Bera (JB)=1.047Prob(JB)=0.592,这里我们很难直接从Omnibus和Jarque-Bera的数值来判断是否支持前面的备择假设,但我们可以从Prob(Omnibus)和Prob(JB)这两个数值来判断,因为这两个数值都比较大,那么我们就无法拒绝前面的原假设,即H0是正确的,说明我们的数据是服从正态分布的。

    图7. 模型结果说明

    接下来我们再验证一下Skew、Kurtosis、Omnibus和Jarque-Bera (JB)这些数值,用的是statsmodels自带的方法。代码如下。

    omnibus_label = ['Omnibus K-squared test', 'Chi-squared(2) p-value']
    omnibus_test = sms.omni_normtest(results.resid) #omnibus检验
    omnibus_results = lzip(omnibus_label, omnibus_test)
    jb_label = ['Jarque-Bera test', 'Chi-squared(2) p-value', 'Skewness', 'Kurtosis']
    jb_test = sms.jarque_bera(results.resid) #jarque_bera检验
    jb_results = lzip(jb_label, jb_test)
    print(omnibus_results)
    print(jb_results)
    

    这里omnibus_labeljb_label是两个list,里面包含了我们所要检验的项目名称,sms.omni_normtest就是statsmodels自带的omnibus检验方法,sms.jarque_bera就是statsmodels自带的jarque_bera检验方法。results.resid是残差值,一共有15个值,我们的数据本身就只有15个点,这里的每个残差值就对应前面的每个数据点,sms.omni_normtestsms.jarque_bera就是通过残差值来进行检验的。而lzip这个方法很少见,其用法和python中原生函数zip差不多,笔者在这里更多地是想让大家了解statsmodels,所以用了lzip,这里直接用zip也是可以的,至于lzip和zip的区别,留给大家自行去学习。而上面得到的结果如图8所示。从图8中可以看到,我们得到的结果和前面图7中的结果一模一样。这里用sms.omni_normtestsms.jarque_bera来进行验证,主要是对前面图7中的结果的一个解释,帮助大家更好地学习statsmodels。

    图8. omnibus和jb检验的结果

    本文主要通过statsmodels来解释一下偏度和峰度在数据分析中的一些基本应用,想要更深入了解偏度、峰度以及statsmodels的读者,可以自行查阅相关资料。

    作者简介:Mort,数据分析爱好者,擅长数据可视化,比较关注机器学习领域,希望能和业内朋友多学习交流。

    赞赏作者

    Python中文社区作为一个去中心化的全球技术社区,以成为全球20万Python中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、CSDN等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、BAT、谷歌、微软等为代表的政府机关、科研单位、金融机构以及海内外知名公司,全平台近20万开发者关注。

    长按扫码添加“Python小助手”

    ▼点击成为社区会员   喜欢就点个在看吧

    展开全文
  • 偏度和峰度描述什么数据科学,机器学习(Data Science, Machine Learning) In this article, we will go through two of the important concepts in descriptive statistics — Skewness and Kurtosis. At the end of...

    偏度和峰度描述什么

    数据科学机器学习(Data Science, Machine Learning)

    In this article, we will go through two of the important concepts in descriptive statistics — Skewness and Kurtosis. At the end of the article, you will have answers to the questions such as what is skewness & kurtosis, right/left skewness, how skewness & kurtosis are measured, how it is useful, etc.

    在本文中,我们将介绍描述性统计中的两个重要概念-偏度和峰度。 在本文的结尾,您将获得以下问题的答案,例如什么是偏度和峰度,右/左偏度,如何测量偏度和峰度,如何使用等等。

    偏度 (Skewness)

    ‘Skewness’ is a measure of the asymmetry of the probability distribution of a real-valued random variable.

    “偏度”是对实值随机变量的概率分布的不对称性的度量。

    负偏度 (Negative Skewness)

    The data concentrated more on the right of the figure as you can see below. So there is a long tail on the left side. It is also called as left-skewed or left-tailed.

    数据更加集中在该图的右侧,如下所示。 因此,左侧有一条长长的尾巴。 也称为左偏或左尾。

    正偏度 (Positive Skewness)

    The data concentrated more on the left of the figure as you can see below. So there is a long tail on the right side. It is also called as right-skewed or right-tailed.

    数据更加集中在图的左侧,如下所示。 因此,右侧有一条长长的尾巴。 也称为右偏或右尾。

    Image for post
    Source: Wikipedia
    资料来源:维基百科

    如何解释偏度(How to interpret skewness)

    A rule of thumb says:

    经验法则说:

    • If the skewness is between -0.5 and 0.5, the data are fairly symmetrical (normal distribution).

      如果偏度在-0.5到0.5之间,则数据是相当对称的(正态分布)。
    • If the skewness is between -1 and -0.5(negatively skewed) or between 0.5 and 1(positively skewed), the data are moderately skewed.

      如果偏斜度在-1和-0.5之间(负偏度)或0.5和1之间(正偏度),则数据偏斜。
    • If the skewness is less than -1(negatively skewed) or greater than 1(positively skewed), the data are highly skewed.

      如果偏斜度小于-1(负偏度)或大于1(正偏度),则数据高度偏斜。

    If the data follow normal distribution, its skewness will be zero. But in real world, we don’t find any data which perfectly follows normal distribution. So, for any real world data we don’t find exact zero skewness but it can be close to zero.

    如果数据遵循正态分布,则其偏斜度将为零。 但是在现实世界中,我们找不到完全符合正态分布的数据。 因此,对于任何现实世界的数据,我们都找不到精确的零偏度,但它可能接近零。

    为什么要研究偏度 (Why study skewness)

    Consider the below example. Here total_bill is positively skewed and data points are concentrated on the left side. If we were to build the model on this, the model will make better predictions where total_bill is lower compared to higher total_bill.

    考虑下面的例子。 这里total_bill正偏,数据点集中在左侧。 如果我们要以此为基础构建模型,则与更高的total_bill相比, total_bill较低的模型将做出更好的预测。

    Image for post
    Image by Author
    图片作者

    Skewness tells us about the direction of the outlier. From the above distribution, we can clearly say that outliers are present on the right side of the distribution.

    偏度告诉我们异常值的方向。 从上面的分布中,我们可以清楚地说出异常值出现在分布的右侧。

    如何处理偏斜的数据 (How to deal with skewed data)

    Many statistical tests and machine learning models depend on normality assumptions. So, significant skewness means that data is not normal and that may affect your statistical tests or machine learning prediction power. In such cases, we need to transform the data to make it normal. Some of the common techniques used for treating skewed data:

    许多统计测试和机器学习模型都依赖于正态性假设。 因此,严重偏斜意味着数据不正常,并且可能会影响您的统计测试或机器学习预测能力。 在这种情况下,我们需要转换数据以使其正常。 用于处理偏斜数据的一些常用技术:

    • Log transformation

      日志转换
    • Square root transformation

      平方根变换
    • Power transformation

      动力转换
    • Exponential transformation

      指数变换
    • Box-Cox transformation, etc

      Box-Cox转换等

    In the below example, we will look at the tips dataset from the Seaborn library. As we can see, total_bill has a skewness of 1.12 which means it is highly skewed. It is also visible from the distribution plot that data is positively skewed. After the log transformation of total_bill, skewness is reduced to -0.11 which means is fairly symmetrical.

    在下面的示例中,我们将查看Seaborn库中的tips数据集。 如我们所见, total_bill的偏斜度为1.12,这意味着高度偏斜。 从分布图中还可以看出,数据正偏。 经过total_bill对数转换后,偏斜度减小到-0.11,这意味着相当对称。

    峰度 (Kurtosis)

    ‘Kurtosis’ is a measure of ‘tailedness’ of the probability distribution of a real-valued random variable. It is generally used to identify outliers (extreme values) in the given dataset. Since it is used for identifying outliers, extreme values at both ends of tails are used for analysis.

    “峰度”是对实值随机变量的概率分布的“尾部”度量。 通常用于标识给定数据集中的异常值(极值)。 由于用于识别离群值,因此使用尾部两端的极值进行分析。

    峰态的类型以及如何解释 (Types of Kurtosis and how to interpret)

    1. Mesokurtic (Kurtosis = 3) — This distribution shows kurtosis of 3 near zero. The distribution of extreme values (outliers) is similar to that of normal distribution.

      Mesokurtic(峰度= 3)-此分布显示峰度3接近零。 极值(离群值)的分布与正态分布相似。

    2. Leptokurtic (Kurtosis > 3) — This distribution shows greater kurtosis than mesokurtic. The peak is higher and sharper than Mesokurtic. It shows heavy tails on either side that indicates large outliers. In the investment world, a leptokurtic distribution means that it is a high-risk investment.

      Leptokurtic(Kurtosis> 3)-这种分布显示出比Mekokurtic更大的峰度。 该峰比中胚层更高且更尖锐。 它的两边都有粗尾,表明离群值较大。 在投资世界中,Leptokurtic发行意味着它是高风险的投资。

    3. Platykurtic: (Kurtosis < 3) — This distribution shows lower kurtosis than mesokurtic. The peak is lower and broader than Mesokurtic. It shows flat tails on either side indicating small outliers. In the investment world, a platykurtic distribution means that it is a low-risk investment.

      侧柏:(Kurtosis <3)-此分布显示峰度比中侧偏低。 该峰比中胚层低且宽。 它的两侧均显示平坦的尾巴,表示离群值较小。 在投资世界中,platykurtic发行意味着它是一种低风险的投资。

    图片发布
    Source: tutorialspoint.com
    资料来源:tutorialspoint.com

    Below example shows how to calculate kurtosis:

    下面的示例显示如何计算峰度:

    Thank you for reading this article. You can reach me at https://www.linkedin.com/in/chetanambi/

    感谢您阅读本文。 您可以通过https://www.linkedin.com/in/chetanambi/与我联系

    翻译自: https://medium.com/towards-artificial-intelligence/what-are-skewness-and-kurtosis-3e854a01808c

    偏度和峰度描述什么

    展开全文
  • python模拟概率论中偏度和峰度计算

    千次阅读 2018-01-25 19:38:05
    在概率学中我们用偏度和峰度去刻画分布的情况:  偏度描述的是分布的对称性程度,如上面,右偏表示在u值的右侧分布占多数,左偏则反向,并且通过阴影的面积去刻画概率。而峰度是描述分布的最高值的情况,在...
  • 关于偏度和峰度的定义不再赘述,有很多文章 简单来说对于数据统计: 偏度能够反应分布的对称情况,右偏(也叫正偏),在图像上表现为数据右边脱了一个长长的尾巴,这时大多数值分布在左侧,有一小部分值分布在右侧...
  • python偏度峰度的实现

    千次阅读 2019-03-10 13:47:38
    import numpy as np from scipy import stats #scipy中的stats可以做统计推断 ...skew = stats.skew(x) #求偏度 kurtosis = stats.kurtosis(x) #求峰度 print(x,'\n') print(mu,sigma,skew,kurtosis)
  • 偏度和峰度的计算

    万次阅读 2018-11-19 17:25:58
    python使用pandas来计算偏度和峰度 正文 偏度(skewness)和峰度(kurtosis):  偏度能够反应分布的对称情况,右偏(也叫正偏),在图像上表现为数据右边脱了一个长长的尾巴,这时大多数值分布在左侧,有一小部分值...
  • 偏度峰度(附python代码)

    万次阅读 2018-12-03 11:06:22
    1 矩 对于随机变量X,X的K阶原点矩为 X的K阶中心矩为 期望实际上是随机变量X的1阶原点矩,方差实际上是随机变量X的2阶中心矩 变异系数(Coefficient of Variation):标准差与...3 利用matplotlib模拟偏度和峰度...
  • 1、偏度 1、介绍   公式定义: 2、峰度 1、介绍
  • 在R和Python中求峰度和偏度

    千次阅读 2019-03-10 20:01:15
    文章目录一、 偏度1.1 计算公式1.2 自定义函数以及调用二、峰度2.1 计算公式2.2 自定义函数以及调用三、参考资料 一、 偏度 1.1 计算公式 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&...
  • PySpark计算均值、方差、偏度和峰度

    千次阅读 2019-01-24 15:04:55
    python实现 import math import numpy as np def calc ( data ) : n = len ( data ) # 10000个数 niu = 0.0 # niu表示平均值,即期望. niu2 = 0.0 # niu2表示平方的平均值 niu3 = 0.0 # ...
  • 统计学 偏度&峰度 Python实现

    千次阅读 2018-06-17 01:50:28
    https://blog.csdn.net/OliverkingLi/article/details/79165665 df.groupby('A')['C'].agg(['skew']) # 偏度
  • 矩对于随机变量X,X的K阶原点矩为E(Xk)E(Xk)X的K阶中心矩为E([X−E(X)]k)E([X−E(X)]k)期望实际上是随机变量X的1阶原点矩,方差...记为C.V偏度Skewness(三阶)峰度Kurtosis(四阶)偏度峰度利用matplotlib模拟偏度和...
  • 偏度峰度

    2019-11-26 11:05:11
    偏度(skewness),是统计数据分布偏斜方向程度的度量,是统计数据分布非对称程度的数字特征。定义上偏度是样本的三阶标准化矩。 偏度定义中包括正态分布(偏度=0),右偏分布(也叫正偏分布,其偏度>0),左...
  • python
  • 结果一看注册时间3年,想想自己也注册了kaggle两年了,啥都没得到,虽然有一颗比赛的心,但是由于编程能力对机器学习原理的理解不深,导致一直没有动手,虽然自己现在对Python和深度学习有更熟练一些的掌握,...
  • skew 与 kurt
  • def calc_stat(data): ... skew =(niu3 -3*niu*sigma**2-niu**3)/(sigma**3) # 偏度计算公式 kurt=niu4/(sigma**4) # 峰度计算公式:下方为方差的平方即为标准差的四次方 return [niu, sigma,skew,kurt]
  • python计算峰度和偏度

    2020-12-11 17:51:37
    import pandas as pd x=[] #列表,里面是数字 s=pd.Series(x) #list转为series print(‘偏度:’,s.skew()) print(‘峰度:’,s.kurt())

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,691
精华内容 676
关键字:

python偏度和峰度

python 订阅