摘要:数理统计概念、描述性统计の学习笔记
涉及概念:总体,个体,样本,容量,样本均值,样本方差,k阶样本原点矩,k阶样本中心矩,数据集中趋势的度量(均值、中位数、众数、百分位数),数据离散趋势的度量(方差,标准差,极差,变异系数,四分位差),离散和连续变量分布特征,偏度,峰度
一、数理统计概念
1. 基本概念:
i. 总体:研究对象的全体,对总体的研究就是对一个随机变量的研究。
数理统计学中总体是指与总体相联系的某个或某几个数量指标
取值的全体。
ii. 个体:组成总体的每个基本单元。
iii. 容量:总体中所包含的个体的个数。(分为有限总体和无限总体)
iv. 样本:从总体中抽取的一部分个体,以获得对总体分布的判断。
样本的概率分布取决于总体和样本的性质。
v. 统计量:根据样本计算出的一些量,是样本的某种函数。
设是总体的一个简单随机样本,
为一个 元连续函数,且中不包含
任何关于总体的未知参数,则称是一个
统计量,称统计量的分布为抽样分布。
2. 常用统计量
i. 样本均值()
ii. 样本方差 ()
🍭 此处除以是因为:当样本中的值较小时,样本方差会
远小于总体方差,除以后与总体方差数值更接近
iii. 阶样本原点矩()
原点矩:随机变量到原点(零点)的矩离,此处矩离是由k次方
(k阶)构建出来的。(可以想象成是空间中的距离)
时, = 样本均值
iv. 阶样本中心矩(moment)
中心矩类似于方差,二阶中心矩也叫做方差,表示一个随机变量在
它均值附近波动的大小,方差越大波动越大。三阶中心矩表示一个
随机密度函数向左或向右偏斜的程度。
🍭 此处使用因为当样本足够大时,与近似相等
v. 顺序统计量
将样本观测值()从小到大排序,定义
取值,则
为样本观测值的顺序统计量。
其中,,
二、 描述性统计
1. 数据集中趋势的度量(measuring central tendency)
i. 平均数(mean)
表示一组数据集中趋势的量数。
🍗 均值充分利用所有数据,但是容易受异常值影响导致偏态分布。
ii. 中位数(median)
一组数按顺序排列后位于中间位置的数。
🍗 中位数不受异常值的影响,但缺乏敏感性。
一组数据中出现的次数。
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. 概率函数:用函数的方式表达概率:
大量试验中可以用事件出现频数/试验次数来估计概率。
3. 分布函数:概率累积函数
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. 正态分布:偏度为,两侧尾部长度对称
ii. 左偏:偏度,数据左边有长尾巴,异常值集中在左侧而向左偏斜
iii. 右偏:偏度,数据右边有长尾巴,异常值集中在右侧而向右偏斜
5. 峰度(peakedness / kurtosis)
说明的是分布曲线在平均值处峰值高低的特征数,反映峰部的尖度。
正态分布的峰度为3,所以如果峰度大于3,分布比正态分布要陡峭,
反之亦然。峰度高意味着方差增大,是由低频度的大于或小于平均值
的极端差值引起的。
最后贴一个分布特征的代码实现,此处我随机生成了一组正态分布的数和
一组左偏分布的数:
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.) 著
网友评论