美文网首页
概率统计组队学习 之 数理统计

概率统计组队学习 之 数理统计

作者: 小裙子Cheryl | 来源:发表于2020-06-24 20:46 被阅读0次

    摘要:数理统计概念、描述性统计の学习笔记

    涉及概念:总体,个体,样本,容量,样本均值,样本方差,k阶样本原点矩,k阶样本中心矩,数据集中趋势的度量(均值、中位数、众数、百分位数),数据离散趋势的度量(方差,标准差,极差,变异系数,四分位差),离散和连续变量分布特征,偏度,峰度

    一、数理统计概念

     1. 基本概念:

       i. 总体:研究对象的全体,对总体的研究就是对一个随机变量X的研究。
           数理统计学中总体是指与总体相联系的某个或某几个数量指标X
           取值的全体。
       ii. 个体:组成总体的每个基本单元。
       iii. 容量:总体中所包含的个体的个数。(分为有限总体和无限总体)
       iv. 样本:从总体中抽取的一部分个体,以获得对总体分布的判断。
            样本的概率分布取决于总体和样本的性质。
       v. 统计量:根据样本计算出的一些量,是样本的某种函数。
            设X_1,X_2,...,X_n是总体X的一个简单随机样本,
            T(X_1, X_2,...,X_n)为一个 n 元连续函数,且T中不包含
            任何关于总体的未知参数,则称T(X_1, X_2,...,X_n)是一个
            统计量,称统计量的分布为抽样分布。

     2. 常用统计量

       i. 样本均值(\overline X
           \overline X = \frac{1} {n} {\sum_{i=1}^{n}X_i}
       ii. 样本方差 (S^2
           S^2 = \frac{1} {n-1} {\sum_{i=1}^{n}(X_i-\overline X)^2}
           🍭 此处除以n-1是因为:当样本中n的值较小时,样本方差会
             远小于总体方差,除以n-1后与总体方差数值更接近

       iii. k阶样本原点矩(A_k
           原点矩:随机变量到原点(零点)的矩离,此处矩离是由k次方
           (k阶)构建出来的。(可以想象成是空间中的距离)
           A_k = \frac{1} {n} {\sum_{i=1}^{n}X_i^k}     k=1时,A_k = 样本均值
       iv. k阶样本中心矩(moment)
           中心矩类似于方差,二阶中心矩也叫做方差,表示一个随机变量在
           它均值附近波动的大小,方差越大波动越大。三阶中心矩表示一个
           随机密度函数向左或向右偏斜的程度。
           M_k = \frac{1} {n} {\sum_{i=1}^{n}(X_i-\overline X)^k}
           🍭 此处使用\frac{1} {n}因为当样本足够大时,\frac{1} {n}\frac{1} {n-1}近似相等
       v. 顺序统计量
           将样本观测值(x_1, x_2, …, x_n)从小到大排序,定义X_(k)
           取值X_(k)(k=1,2,…,n),则X_(1), X_(2), ….X_(n)
           为样本观测值的顺序统计量。
           其中,X_(1) = minX_i, X_(n) = maxX_i

    二、 描述性统计

     1. 数据集中趋势的度量(measuring central tendency)

       i. 平均数(mean)
          表示一组数据集中趋势的量数。
          🍗 均值充分利用所有数据,但是容易受异常值影响导致偏态分布。
          \overline X = \frac{1} {n} {\sum_{i=1}^{n}X_i}
       ii. 中位数(median)
          一组数按顺序排列后位于中间位置的数。
          🍗 中位数不受异常值的影响,但缺乏敏感性。

       iii. 频数
          一组数据中出现的次数。
       iv. 众数(mode)
          一组数据中出现次数最多的一个或几个数。
          🍗 适用于当数据有两个或者多个集中趋势,或者数据的类型是
            类别数据(categorical data)时,不过缺点是缺乏唯一性。
       v. 百分位数(percentile / quartiles)
          将数据一分为百的数值,对划分名次、排行比较有用。
          分位点定义:
          百分位数是中位数的推广,当时,百分位数即中位数。
     2. 数据离散趋势的度量(Measuring variability and spread)

       i. 方差(variance)
          计算每一个变量与总体平均数之间的差异。
          样本方差公式:

          🍗 方差越大说明稳定性越差,应用情景比如根据几个篮球运动员的
            得分情况挑选得分起伏最小的球员,就可以计算出每个球员得分的
            方差以及下面介绍的标准差。
       ii. 标准差(standard deviation)
          方差开平方就成为标准差,是描述典型值与均值距离的一种方法。
          相比于方差这里已经开方,所以单位就是距离而不是距离的平方。
       iii. 极差(range)
          R = x(n) – x(1) = max(X) – min(X)
       iv. 变异系数(标准离差率 / 单位风险 / coefficient of variation)
          原始数据标准差与原始数据平均数的比(一般平均值要大于零)
          🍗 用于两组数据的测量尺度相差太大或者数据量纲的不同时,消除
            测量尺度和量纲的影响
       v. 四分位差(interquartile range)
          IQR = Q3 – Q1 (中间50%的数据,排除了异常的干扰)

    摘自《深入浅出统计学》第三章       🍗 数据分析时可以用箱型图来表示四分位差 摘自《深入浅出统计学》第三章球员分数举例
      bb这么多,开始写点代码啦,顺便复习下上面提到的度量指标:
    # 导入两个库,numpy处理大型矩阵,scipy可以操控Numpy数组进行科学计算
    import numpy as np
    from scipy import stats
    import pandas as pd
    
    # 创建一组数据
    lst = [1,2,4,5,3,12,12,23,43,52,11,22,22,22]
    
    # 计算均值
    lst_mean = np.mean(lst)     # 用numpy库计算, scipy.stats中mean()方法不用了
    print('数据的均值为:', lst_mean)
    
    # 中位数
    lst_median = np.median(lst)
    print('数据的中位数为:', lst_median)
    
    # 众数
    lst_mode = stats.mode(lst)[0][0]   
    # stats.mode()返回的是 ModeResult(mode=array([22]), count=array([3]))
    print('数据的众数为:', lst_mode)
    
    counts = np.bincount(lst)               
    # bincount()会计算从0到52每个数字出现的个数,lst的数必须要是非负整数
    lst_mode_np = np.argmax(counts)
    
    lst_s = pd.Series(lst)
    lst_mode_pd = lst_s.mode()[0]    # 把list转换成series,mode()函数返回的也是一个series
    print('三种方法计算结果一致吗:', lst_mode_pd == lst_mode_np == lst_mode)
    print('-----------------------------')
    
    # n阶中心矩
    lst_moment_1 = stats.moment(lst, moment=1)    # moment()函数用来计算中心矩
    print('数据的一阶中心矩为:', lst_moment_1)
    lst_moment_2 = stats.moment(lst, moment=2)
    print('数据的二阶中心矩为:', lst_moment_2)
    print('-----------------------------')
    
    # 方差
    lst_var = np.var(lst)
    print('数据的方差为:', lst_var)
    print('二阶中心矩等于方差吗:', lst_var == lst_moment_2)
    
    # 标准差
    lst_sd = np.std(lst)
    lst_sd2 = np.sqrt(lst_var)
    print('数据的标准差为:', lst_sd)
    print('标准差是方差开方吗:', lst_sd == lst_sd2)
    
    # 极差
    lst_range = max(lst) - min(lst)
    print('数据的极差为:', lst_range)
    
    # 分位数和四分位差
    lst_Q1 = np.percentile(lst, 25)
    lst_Q2 = np.percentile(lst, 50)
    print('二分位数等于中位数吗:', lst_Q2 == lst_median)
    lst_Q3 = np.percentile(lst, 75)
    lst_IQR = lst_Q3 - lst_Q1
    print('数据的四分位差为:', lst_IQR)
    
    
    # 变异系数
    lst_cv = lst_sd / lst_mean      # 变异系数是标准差与平均数的比
    print('数据的变异系数为', lst_cv)
    

       输出结果如下:

     3. 分布特征

       i. 离散变量(discrete)
         1. 离散型随机变量:只能用整数或自然数为单位计算,一般数值用计数
                  得来。(比如班级人数,电脑数量,年龄等)
         2. 概率函数:用函数的方式表达概率:
               P_i = P(X=a_i) (i=1,2,3,4,5,6)
               大量试验中可以用事件出现频数/试验次数来估计概率。
         3. 分布函数:概率累积函数

       ii. 连续变量(continuous)
         1. 连续型随机变量:在一定区间内可以任意取值,数值连续不断。
                  (比如人的身高,体重等)
         2. 概率密度函数:连续型随机变量的概率函数就叫概率密度函数
                 🍗 某点的概率密度函数可以理解为概率在该点的
                   变化率(或导数)
    图片来源于知乎.jpg      3. 分布函数:对概率密度函数求积分就可以得到分布函数
    分布函数(F(x))与密度函数(f(x))的关系.png      4. 正态分布(normal distribution / 高斯分布)
          🍭 正态分布的一些特性:
            1. 正态分布中,平均值=众数=中位数
            2. 三西格玛准则(empirical rule):
              大约68%的数值位于距离均值1个标准差的范围内;
              大约95%的数值位于距离均值2个标准差范围内;
              大约99.7%的数值位于距离均值3个标准差范围内。
            3. 如果,是相互独立的随机变量,满足
            4. 如果正态分布的数值本身发生了改变,变成,
             则正态分布符合:         5. 特定条件下,正态分布可以近似代替二项分布或泊松分布
     4. 偏度(skewness)

       i. 正态分布:偏度为0,两侧尾部长度对称
       ii. 左偏:偏度b_s<0,数据左边有长尾巴,异常值集中在左侧而向左偏斜
       iii. 右偏:偏度b_s>0,数据右边有长尾巴,异常值集中在右侧而向右偏斜

    样本偏度系数公式.png
     5. 峰度(peakedness / kurtosis)

          说明的是分布曲线在平均值处峰值高低的特征数,反映峰部的尖度。
          正态分布的峰度为3,所以如果峰度大于3,分布比正态分布要陡峭,
          反之亦然。峰度高意味着方差增大,是由低频度的大于或小于平均值
          的极端差值引起的。

    样本峰度系数.png 偏态与峰度.png
      最后贴一个分布特征的代码实现,此处我随机生成了一组正态分布的数和
      一组左偏分布的数:
    import numpy as np
    from scipy.stats import skewnorm
    
    # 生成标准正态分布的10000个随机数
    data = list(np.random.randn(10000))
    
    #再生成一个偏态分布的10000个随机数
    data2 = skewnorm.rvs(-20, size=10000)
    
    # 直方图展示正态分布
    plt.hist(data, bins=1000, facecolor='g', alpha=0.7)
    plt.hist(data2, bins=1000, facecolor='r', alpha=0.5)
    plt.show()
    
    # 计算峰度和偏度 (正态分布情况下)
    data_series = pd.Series(data)
    data_skew = data_series.skew()
    data_kurtosis = data_series.kurt()
    print('正态分布偏度系数为:', data_skew)       
    # 此处因为是正态分布,偏度很接近0
    print('正态分布峰度系数为:', data_kurtosis) 
    # 官方文档里已经调整过使正态分布的峰度系数也为0,所以此处结果也接近0
    print('-------------------------------')
    
    # 偏态分布下的峰度和偏度
    data2_series = pd.Series(data2)
    data2_skew = data2_series.skew()
    data2_kurtosis = data2_series.kurt()
    print('偏态分布偏度系数为:', data2_skew)
    print('偏态分布峰度系数为:', data2_kurtosis)
    

      结果输出:

    Credit:
    笔记整理自:Datawhale 概率统计组队学习
    文中图片来源:知乎,《深入浅出统计学》(美)格里菲思(Griffiths, D.) 著

    相关文章

      网友评论

          本文标题:概率统计组队学习 之 数理统计

          本文链接:https://www.haomeiwen.com/subject/tvgrfktx.html