统计学习二:数据的描述性统计
参加此统计学习小组主要是巩固 python 语言,故所有笔记都以 python 代码实现。
完整代码见 github : StatisticLearning
如何描述数据的分布?可以从以下三个方面来描述:
- 集中趋势
- 离散程度
- 分布的形状
一、集中趋势
集中趋势反映了各数据向其中心值靠拢或聚集的程度。
本示例为给出的 .xlsx
文件中的表格数据,数据为 9 个家庭的人均月收入数据(单位:元):
1080 750 1080 1080 850 960 2000 1250 1630
1. 众数
众数(mode):一组数据中出现次数最多的变量值。
首先读取数据:
df = pd.read_excel('data/2_table1.xlsx')
为便于计算众数,使用了 collections
模块中的 Counter
类来计数, Counter
类继承自 dict
类,返回的是按数据出现次数由多到少排序的字典:
count = Counter(df['月收入'])
得到出现次数最多的变量值:
mode = count.most_common(1)[0][0]
print(mode)
输出为 「1080」即为该数据的众数。
或者直接用 numpy
库中的函数实现:
counts = np.bincount(df['月收入'])
print(np.argmax(counts))
2. 中位数
中位数(median):一组数据排序后处于中间位置上的变量值。
计算上述数据的中位数:
# 中位数
median = np.median(df['月收入'])
print(median)
3. 四分位数
四分位数(quartile):一组数据排序后处于 25% 位置上的数值(下四分位数)和处于 75% 位置上的数值(上四分位数)。
如果计算出来的位置是整数,四分位数就是该位置对应的值;
如果是在 0.5 的位置上,则取该位置两侧值的平均数;
如果是在 0.25 或 0.75 的位置上,则四分位数等于该位置的下侧值加上按比例分摊位置两侧数值的差值;
则定义四分位数的计算函数为:
def calculateQuartile(data, index):if isinstance(index, int):quartile = data[index]elif (index*100 % 100) == 50.0:quartile = (data[int(index) - 1] + data[int(index)])/2else:quartile = data[int(index)-1] + (data[int(index)] - data[int(index)-1]) * (index*100%100) / 100return quartileif __name__ == '__main__':df = pd.read_excel('data/2_table1.xlsx')data = np.sort(df['月收入'])# 四分位数# 下四分位数index1 = len(data)/4print(calculateQuartile(data, index1))# 上四分位数index2 = 3 * len(data) / 4print(calculateQuartile(data, index2))
4. 平均数
平均数(mean)也称均值,是一组数据相加后除以数据的个数得到的结果。
平均数根据是否分组分为简单平均数和加权平均数:
简单平均数:根据未经分组数据计算的平均数,计算公式为:
加权平均数:根据分组数据计算的平均数,计算公式为:
其中,M 为各组的组中值,n 为样本量。
平均数根据计算方式又分为算数平均数和几何平均数:
算术平均数:与上面简单平均数的计算方式一样。
几何平均数:n个变量值连乘积的n次方根:
python中求平均数可以使用 numpy
库的方法:
import numpy as np
np.mean(nums)
每一种具体的平均数的计算公式已在上面列出,这里就不分别进行 python 代码的编写了。
5. 众数、中位数和平均数的比较
5.1 众数、中位数和平均数的关系
该图是贾俊平《统计学》一书中众数、中位数和平均数的关系图,其中 Mo 为众数,Me 为中位数, x 为均值。
如果数据的分布是对称的,即为正态分布(也叫对称分布),即均值 = 中位数 = 众数;
如果数据是左偏分布,即均值<中位数<众数;
如果数据是右偏分布,即众数<中位数<均值
仅仅看这个图很容易感到迷惑,这不符合我们日常认知,我们往往会认为峰值偏右为右偏分布(图二),峰值偏左为左偏分布(图三),实际刚好相反。
这是因为,在这个图中,纵坐标表示的是「频率」,众数就是图中频率最大的变量值,中位数仅与样本的总数有关,在样本的中间位置,平均数在这里计算的是「加权平均数」。
5.2 众数、中位数和平均数的比较
中位数 | 众数 | 算数平均数 | 几何平均数 | |
---|---|---|---|---|
英文名 | Median | Mode | Arithmetic mean | Geometric Mean |
别称 | 中值 | 均值 | ||
定义 | 一组数据排序后处于中间位置上的变量值 | 一组数据中出现次数最多的变量值 | n个变量的和除以n | n个变量值连乘积的n次方根 |
优点 | 一组数据中间位置上的代表值,不受极端值的影响 | 一组数据分布的峰值,不受极端值的影响 | 利用了全部数据信息,实际应用最广泛 | 不受极端值的影响 |
缺点 | 需要先排序 | 不唯一,可能有零到多个众数 | 易受极端值的影响 | 变量值不能为0或负数,仅适用于计算平均比率 |
适用场景 | 顺序数据的集中趋势测度值 | 分类数据的集中趋势测度值 | 数值型数据的集中趋势测度值 | 计算现象的平均增长率 |
二、离散程度
离散程度反映了各数据远离其中心值的趋势。
1. 分类数据:异众比率
异众比率(variation ratio):非众数组的频数占总频数的比例。
拿上面第一章中 9 个家庭的人均月收入数据来计算异众比率,python代码为:
# 众数
count = Counter(df['月收入'])
modeCount = count.most_common(1)[0][1]
# print(modeCount)
totalCount = len(df['月收入'])
nomodeCount = totalCount - modeCount
# 异众比率
ratio = nomodeCount / totalCount
print(ratio)
2. 顺序数据:四分位差
四分位差(quartile deviation):也称内距或四分间距(inter-quartile range),是上四分位数与下四分位数只差,四分位数在上面第一章第 3 节已经讲了,这里就不再赘述。
3. 数值型数据:方差和标准差
英文名 | 概念 | 公式 | |
---|---|---|---|
极差 | range | 一组数据的最大值与最小值之差 | R=max(xi)−min(xi)R=\max \left(x_{i}\right)-\min \left(x_{i}\right)R=max(xi)−min(xi) |
平均差 | mean deviation | 各变量值与其平均数离差绝对值的平均数 | $M_{d}=\frac{\sum_{i=1}^{n}\left |
方差 | variance | 各变量值与其平均数离差平方的平均数 | s2=∑i=1n(xi−xˉ)2n−1s^{2}=\frac{\sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)^{2}}{n-1}s2=n−1∑i=1n(xi−xˉ)2 |
标准差 | standard deviation | 方差的平方根 | s=∑i=1n(xi−xˉ)2n−1s=\sqrt{\frac{\sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)^{2}}{n-1}}s=n−1∑i=1n(xi−xˉ)2 |
标准分数 | standard score | 各变量值与其平均数的离差除以标准差 | zi=xi−xˉsz_{i}=\frac{x_{i}-\bar{x}}{s}zi=sxi−xˉ |
离散系数 | coefficient of variation | 数据的标准差与平均数之比 | vs=sxˉv_{s}=\frac{s}{\bar{x}}vs=xˉs |
三、分布的形状
分布的形状,反映了数据分布的偏态和峰态。
1. 偏态
偏态:对数据分布对称性的测度。
偏态系数:测度偏态的统计量。
如果偏态系数等于 0,则数据的分布是对称的;
如果偏态系数不等于 0,泽数据的分布是不对称的;
如果偏态系数大于 1 或小于 -1 ,称为高度偏态分布;
如果偏态系数在 0.5 到 1,或 -1 到 -0.5 之间,称为中等偏态分布。
公式为:
2. 峰态
峰态:对数据分布平峰或尖峰程度的测度。
峰态系数:测度峰态的统计量。
如果一组数据服从标准正态分布,则峰态系数的值等于 0;
如果峰态系数的值不等于 0,称为平峰分布或尖峰分布;
公式为:
参考资料:
《统计学(第七版)》贾俊平,所有数据都来自该书。
统计学学习小组参加自公众号「数据科学家联盟」。
统计学习二:数据的描述性统计相关推荐
- No.01统计学之数据的描述性统计
数据的描述性统计主要包括以下几部分: 数据的集中趋势: 众数.中位数.平均数.分位数 算术平均数.加权平均数.几何平均数 数据的离中趋势: 数值型数据:方差.标准差.极差.平均差 顺序数据:四分位差 ...
- 统计学之数据的描述性统计(基础)
数据的描述性统计 一篇笔记,至少我还在努力 目录: 数据的集中趋势: 众数,中位数,平均数,分位数,极差 算术平均数,加权平均数,几何平均数 数据的离中趋势: 数值型数据:方差,标准差,极差,平均差 ...
- python描述性统计工作日上班时代码_数据的描述性统计以及用Python代码实现
一.数据的描述性统计 对数据的描述性统计主要是指对结构化数据的描述分析,可从三个维度进行分析:数据的集中趋势.数据的离散程度和数据的分布形态. 描述数据集中趋势的指标有:众数.中位数.平均数(包含算数 ...
- 数据的描述性统计与python实现
数据的描述性统计与python实现 使用pandas导入数据 导入需要的包 import pandas as pd import numpy as np import matplotlib.pyplo ...
- R语言rnorm函数生成正太分布数据、使用epiDisplay包的summ函数计算向量数据的描述性统计汇总信息并可视化有序点图(名称、有效值个数、均值、中位数、标准差、最大值、最小值)
↵ R语言rnorm函数生成正太分布数据.使用epiDisplay包的summ函数计算向量数据的描述性统计汇总信息并可视化有序点图(名称.有效值个数.均值.中位数.标准差.最大值.最小值) 目录
- 如何用Stata完成(shui)一篇经济学论文(十二):描述性统计、回归与结果保存
文章目录 描述性统计 回归命令 结果保存 描述性统计 描述性统计的命令我一般使用summerize,用法为summerize加上你所想要总结的变量名称,如果summerize后什么都不加,则表示描述所 ...
- 统计学习笔记(1)——统计学习方法概论
1.统计学习 统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科,也称统计机器学习.统计学习是数据驱动的学科.统计学习是一门概率论.统计学.信息论.计算理论.最优化理 ...
- 数据科学-描述性统计
描述性统计 1 集中趋势的度量 集中趋势:指一组数据向某一中心值靠拢的程度,反应了一组数据中心点的位置所在. 1.1 分类数据:众数 众数:一组数据中出现次数最多的变量值.使用 MoM_{o}Mo ...
- lecture 3:Python数据的描述性统计
首先请大家在线下载一些数据:比如贵州茅台2010-01-01至2020-12-31区间收盘价的数据. import tushare as ts #1.先设置数据的接口# ts.set_token('2 ...
最新文章
- 2022-2028年中国轻型输送带行业市场发展规模及市场分析预测报告
- Nutch URL过滤配置规则
- Android View体系(六)从源码解析Activity的构成
- 全网独发gensim中similarities.Similarity用法
- T400的5100无线网卡在Centos下跑起来了
- 蛋疼的ElasticSearch(一)之安装ElasticSearch
- eos操作系统_如何基于EOS区块链发一个自己的币,挣它一个亿?
- OS- -I/O之I/O设备
- ajax js引用,ajax 引用js文件内容
- kafka jar包_Kafka系列文章之安装测试-第2篇
- 【python】Python的基本数据类型之数字类型与字符串类型
- CYQ.Data 轻量数据层之路 V3.0版本发布-Xml绝对杀手(三十二)
- Identity Mappings in Deep Residual Networks2016【论文理解】
- Zookeeper节点监听结合Spring
- html实现表格分页显示,js表格分页实现代码
- cs1.6修改服务器参数设置,cs1.6比赛服务器设置参数
- 机器学习在电商应用中的三个境界:爆款模型、转化率模型及个性化模型
- Linux下bochs的安装与使用
- 怎么从零开始自己做网站?
- IntelliJ IDEA 超实用使用技巧分享