描述统计:统计量
在描述行统计中,除了统计图表,统计量可以定量的描述数据。本章介绍常见的统计量:均值、方差、标准差、中位数、四分位数、变异系数、IQR、极差、偏度、峰度、Q-Q 图。以及分类汇总函数 aggregate 。
代码和笔记存储在 GitHub 库 【持续更新中,建议 star!】
1 描述统计:统计量
定性变量:频数、比例
定量变量:集中信息、波动信息、形状信息
1.1 集中信息
1.1.1 样本均值
对于数据 x1, x2, ⋯, xn 的样本均值为:
xˉ=nx1+x2+⋯+xn=n1i=1∑n xi
缺点:均值容易受到极端值影响。
1.1.2 中位数
样本中位数是对原始数据排序,位于数据中心的数据。
xMED=x(2n+1)or(x(2n)+x(2n+1))/2
假设有定量数据 x1, x2, ⋯, xn ,定义排序后的数据 x(1)≤x(2)≤⋯≤x(n) 。
优点:稳健,不容易受到极端值影响。
1.1.3 示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| finalgrades <- read.csv("finalgrades.csv") mydata <- finalgrades[, c(6:9)]
grade.mean <- apply(mydata, 2, mean) grade.mean
grade.median <- apply(mydata, 2, median) grade.median
grade.mean > grade.median
|

1.2 波动信息
1.2.1 方差/标准差
样本方差:反映了所有数据离中心的平均的平方距离
s2=n−11i=1∑n (xi−xˉ)2
样本标准差:近似反映了所有数据离中心的平均距离
s=s2=n−11i=1∑n (xi−xˉ)2
1.2.2 变异系数
变异系数 Coefficient of Variation (CV) :比较不同单位的数据的离散程度;比较单位相同而平均数相差较大的数据组资料的差异程度。
CV=xˉs×100
1.2.3 四分位间距/极差
四分位差 (Inter - Quartile Range, IQR) :中间 50% 数据的范围。
IQP=Q3−Q1
极差 :所有数据的范围
range=x(n)−x(1)
1.3 形状信息
1.3.1 偏度
总体偏度的定义
Skewness=E (σX−μ)3
样本偏度的定义
g1=(n−1)(n−2)⋅s3ni=1∑n (xi−xˉ)3
偏度判断:
- 对称:Skewness = 0
- 右偏:Skewness > 0
- 左偏:Skewness < 0
1.3.2 峰度
峰度反应了峰部的尖度,总体峰度的定义:
Kurtosis=E (σX−μ)4−3
样本峰度:
g2=(n−1)(n−2)(n−3)⋅s4n(n+1)i=1∑n (xi−xˉ)4−3⋅(n−2)(n−3)(n−1)2
峰度判断:
1.3.3 R 语言实现
调用 moments
包:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| library("moments") grade.skewness <- apply(mydata, 2, skewness) grade.kurtosis <- apply(mydata, 2, kurtosis)
grade.skewness
grade.kurtosis
grade.kurtosis <- apply(mydata, 2, kurtosis) - 3 grade.kurtosis
|
【注意】:R 语言的 kurtosis()
函数没有进行 - 3
操作。
1.3.4 Q-Q 图
Q-Q Plot :对于观测数据 x1, x2, ⋯, xn 对其排序后得到 x(1)≤x(2)≤⋯≤x(n) ,它们的概率为:
P(X≤x(j))=nj≈n+0.25j−0.375
然后取出标准正态分布的分位数点 F−1(n+0.25j−0.375) 。绘制散点图:
(F−1(n+0.25j−0.375), x(j))
若大致为线性关系/直线,则可以认为 xi 满足近似正态。
R 语言实现:
1 2 3
| x <- mydata[, 1] qqnorm(x, main = "Q-Q Plot") qqline(x)
|
对于非正态的 Q-Q 图,有如下的例子:左边为右偏,右边为左偏

1.4 其他
1 2 3
| fivenum(x) summary(x) quantile(x)
|
1 2 3 4 5 6 7 8 9 10
| > fivenum(x) [1] 14 42 51 59 79
> summary(x) Min. 1st Qu. Median Mean 3rd Qu. Max. 14.00 42.00 51.00 50.31 59.00 79.00
> quantile(x) 0% 25% 50% 75% 100% 14 42 51 59 79
|
2 描述统计:分类汇总
2.1 aggregate 函数
格式
1
| aggregate(x ~ by, FUN, na.rm = T, data)
|
参数
1 2 3 4 5
| x : 列名,或是列序号,多个使用 cbind() 组合 by : 分类依据的列名,多个使用 + 组合 FUN : 表示整合的方式,传入函数 na.rm : 如果为 NA 则直接删去行数据 data : 操作的数据框
|
2.2 示例
例:按照 city
和 R
计算 minimumpay, maximumpay, logmeanpay
列的均值
1 2 3 4 5
| mydata <- read.csv("jobinfor201xE.csv", encoding = "utf-8") head(mydata) str(mydata)
aggregate(cbind(minimumpay, maximumpay, logmeanpay) ~ city + R, FUN = mean, na.rm = T, data = mydata)
|
结果:
1 2 3 4 5 6 7 8 9 10 11 12 13
| city R minimumpay maximumpay logmeanpay 1 北京 0 8245.586 12548.425 9.035330 2 河北 0 4536.095 6748.496 8.521607 3 山西 0 6045.913 8798.888 8.678785 4 陕西 0 5225.994 7964.530 8.610160 5 上海 0 7733.406 11325.135 9.018670 6 深圳 0 7430.474 11419.152 9.001751 7 北京 1 9533.537 14261.561 9.245172 8 河北 1 4500.000 5999.000 8.565888 9 山西 1 3500.000 5499.500 8.301702 10 陕西 1 8318.182 11226.455 9.007055 11 上海 1 10665.874 16020.449 9.388033 12 深圳 1 10682.540 16854.706 9.418756
|