利用Python进行描述统计

引言:在数据分析时,对大量信息进行归纳是最基本的任务,而这就需要用到描述统计方法。

变量

变量的概念

变量(Variable):指在研究对象中某种令人感兴趣的、取值会有变化的特征,比如研究对象是全体大学生,那么变量可以是身高、体重等特征。

变量的分类

首先变量可以分为:

1.定性型(分类)变量 分类变量的取值可能是数值型或是非数值型的。比如,对于某产品的满意度调查,那么可以得到“满意-不满意”的非数值型结果,也可以得到“5-1”的数值型结果,而且这两者是可以人为进行转换的,并无本质上的区别。

2.定量型变量 定量型变量的取值一定是数值型的。既然是数值型的,那就可以分为:

  • 连续性变量:在某个区间内,取值不断变化的量;
  • 离散型变量:变量的可能取值构成的是一个不相连的数字集合。

实际中,因测量方法的限制,连续和离散的界限有时是模糊的。统计分析时所讲的离散,一般是指定量型变量只能取很少几个值的情况。

描述统计方法

描述统计的目标是总结、提炼数据,一共有3种方法:制表法、绘图法和数值法,根据变量类型的不同,描述方法也会有所不同。

制表法

制表法其实就是基于频数分布表的方法,对于定性型变量和定量型变量都有效。

  • 频数,就是该观测值的数量;
  • 相对频数,就是该类别数量占总体数量的比例。

定性型变量

下图是关于是否同意“男性的能力天生比女性强”的说法的频数分布表。

定量型变量

定量型变量一般都会先把原始数据进行分组,然后再绘制成频数分布表,下图是一个学生成绩的频数分布表。 分组原则:不重不漏。 不重指的是每个数值都只能出现在一个分组中,不漏指的是分组应该包含所有数值,不能漏了任何一个。

绘图法

定性型变量

定性型变量在绘图时,基本上只有两种常用的图形,分别是条形图饼图

定量型变量

绘图时需要关注的主要特征

  • 集中趋势
  • 离散程度
  • 分布形状
  • 异常值

直方图

直方图适用于大量的数据,其形状和分组有很大的关系。

直方图v.s.柱状图 条形图和直方图看起来十分类似,但实际上存在很大的区别,直方图不同的组别之间是没有间隙的,所以适用于连续型变量

箱线图

说明:

  • 四分位差IQR = Q3 - Q1
  • 上边缘 = Q3 + 1.5IQR
  • 下边缘 = Q1 - 1.5IQR
  • 注意:上下边缘并非最大最小值,一般超过上下边缘的称为异常值

数值法

注意:数值法一般只用于定量型变量。

数值法需要关注的主要特征

  • 集中趋势
  • 离散程度
  • 相对位置

集中趋势的度量

集中趋势是指一组数据向某一中心值靠拢的程度,反映了一组数据中心点的位置所在。

均值

与总体相关的描述统计量一般用希腊字母表示,而与样本相关的一般用英文字母表示。

均值容易受异常值的影响,所以一般跟财富相关的指标,都不适合采用均值,因为财务情况一般都是符合二八定律的。

二八定律:20%的人掌握着80%的财富,剩下20%的人掌握着20%的财富。 二八定律中的“二”表示的是少数,而非精确的20%,“八”也同理,该定律同样适用于其他很多领域。

均值计算公式

中位数

中位数不易受到异常值的影响。

相对位置的度量

百分位数

百分位数 百分位数将所有观测值分成100份,反映的是一个数据在所有观测值中的相对位置。

第p百分位数:表明有p%的数据小于或等于这个数,有(100-p)%的数据大于或等于这个值。

比如,在某次考试中,某位考生取得了70分,他的成绩如何并不容易知道,但是如果知道70分对应的是第90百分位数,我们就能知道大约90%的学生的考分比他低,而约10%的学生考分比他高。

如何计算第p百分位数? Step1:将所有观测值从小到大排列。

Step2:计算i = (p/100)n p是所求的百分位数的位置,n是项数。

Step3:

  • 若i不是整数,则将i向上取整,所得的数字即为第p百分位数的位置;
  • 若i是整数,则第p百分位数是第i项和第(i+1)项数据的平均值。

四分位数

四分位数其实就是特殊的百分位数,将数据划分为4个部分,每一个部分大约包含有1/4即25%的数据项。

Q1 = 第1四分位数,即第25百分位数 Q2 = 第2四分位数,即第50百分位数 Q3 = 第3四分位数,即第75百分位数 注意:要把四分位数的上下限,和箱线图的上下限区分开。

如何求四分位数? 四分位数是特殊的百分位数,因此,计算百分位数的方法可以直接用来计算四分位数。 注:四分位数位置的确定方法有几种,每种方法得到的结果会略有差异,但不会很大。而且不同的计算方法其本质都是将数据大概分为4个部分。

本计算方法参考:《商务与经济统计(第11版)》

注:i的结果同样存在整数和非整数两种情况,具体参考计算百分位数的方法。

计算四分位数的例子 题目:

答案:

离散程度的度量

离散程度在有的书里也叫变异性,波动大小,其实都是表达同一个意思,反映的是各变量值远离其中心值的程度。

极差(全距)

极差 = 最大值 - 最小值 极差非常简单,但容易受到极端值的影响。

四分位差(四分位矩)

四分位差 IQR = Q3 - Q1 四分位差反映了中间50%的数据的离散程度,较难受到极端值的影响。

标准差和方差

标准差计算公式

注:如果只是单纯的想要计算样本的标准差,那么应该使用公式(2);如果是想通过样本标准差推断总体标准差,那么就应该使用公式(1)。

方差就是标准差的平方。

Z分数(标准计分)

上面的所有指标度量的都是所有观测值的离散程度,而Z分数能够度量单独一个数据的离散程度,常用来比较来自于不同分布(不同总体)或不同量级的观测值。

Z分数计算公式

Z分数应用例子

从Z分数的大小即可判断这个温度在North Bend更奇怪。

利用Python进行统计描述

绘图法:Matplotlib

用Python绘制条形图

# 导入需要用到的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 准备数据
x = ['Cat1', 'Cat2', 'Cat3', 'Cat4', 'Cat5']
y = [5, 4, 8, 12, 7]

# 用 Matplotlib 画条形图
plt.bar(x, y)
plt.show()

用Python绘制饼图

# 导入需要用到的库(代码同条形图)

# 数据准备
nums = [25, 37, 33, 37, 6]
labels = ['High-school', 'Bachelor', 'Master', 'Ph.d', 'Others']

# 用 Matplotlib 画饼图
plt.pie(x=nums, labels=labels)
plt.show()

用Python绘制直方图

# 数据准备
a = np.random.randn(100)    # 从标准正态分布中随机抽取了100个数值
s = pd.Series(a)

# 用 Matplotlib 画直方图
plt.hist(s)
plt.show()

用Python绘制箱线图

# 数据准备
data = np.random.normal(size=(10,4))    # 生成 0-1 之间的 10*4 维度数据
labels = ['A', 'B', 'C', 'D']

# 用 Matplotlib 画箱线图
plt.boxplot(data, labels=labels)
plt.show()

数值法:pandas

用Python计算和中位数

import pandas as pd

# 准备数据
s = pd.Series([3, 3, 6, 7, 7, 10, 10, 10, 11, 13, 30])

s.mean()    # 求均值
s.median()    # 求中位数

用Python计算四分位数

import pandas as pd

# 准备数据
s = pd.Series([3, 3, 6, 7, 7, 10, 10, 10, 11, 13, 30])

s.quantile([0.25, 0.5, 0.75])    # Q1,Q2,Q3

如果觉得上面一个一个函数的调用太麻烦,那么可以使用describe( )函数,一次性输出多个统计指标。

df = pd.DataFrame([3, 3, 6, 7, 7, 10, 10, 10, 11, 13, 30])
df.describe()    # 一次性输出多个统计指标

参考资料:

  • 基于R语言的社会统计学分析
  • 《深入浅出统计学》
  • 《统计学》
  • 《商务与经济统计(第11版)》

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券