-
Notifications
You must be signed in to change notification settings - Fork 8
/
03-descriptive.Rmd
171 lines (99 loc) · 8.94 KB
/
03-descriptive.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# Descriptive Statistics {#descriptive}
本篇是第三章,内容是描述性统计。同时在这一章会开始渗透R语言的相关内容。但整体还是以理论为主。
## 数据的预处理
本章正式进入统计学的一大分支——描述统计。很多人会疑惑做一个Project或者写一篇Paper,最难的是什么?我曾经不止一次说过,最难的是数据。数据收集完成,项目完成了50%。而数据收集完成之后,很多人就会马上开始进行数据处理和分析,事实上这是不对的。因为你不清楚你的数据是否有问题(什么问题都有可能,会导致你的分析出现各种问题)。所以你拿到数据后的第一步,应该是对数据做预处理,或者用大数据时代的话——叫数据清洗或者ETL(Extract-Transform-Load),我想预处理还会占掉Project花费时间的20%吧。
那么接下来先介绍下预处理的内容。
数据预处理:
> * 数据审核
> * 数据筛选
> * 数据排序
> * 数据透视
数据审核,包括直接数据的完整性审核以及准确性审核(是否客观),间接数据的适用性审核以及时效性审核;数据筛选,就是对于数据里面的异常值(存在错误,不符合调查要求等),在现在来说就是dirty data(脏数据),将这些数据剔除;数据排序,事实上数据排序更多的目的还是为了更方便地发现异常值,是做数据清洗的手段;数据透视,借鉴于Excel里的数据透视表,事实上就是数据的重铸,融合和汇总,从而得到我们需要的数据。
总的来说,前期预处理需要对数据进行排序、汇总和观察发现相关的数据异常值等。在这个阶段,不喜编程的同学推荐用Excel来做数据预处理(通过数据透视图、替换数据、排序、Countif等工具和Excel函数高效完成预处理),更高级的一般可以考虑用R、Python等编程语言进行清洗预处理,或者像在数据库里用SQL语句也是可以的。
响应一下本部分的标题,R语言实现,交代几个简单的语句进行数据清洗。
```{r eval=FALSE, echo = T}
#x为数据框、数组或矩阵
#通过summary可以获取平均值、中位数、四分位数等,如果有缺失数据,则会显示NAN等。
summary(x)
#表示y是按照x的第一行先升序排列,然后再按x的第二列降序排列得到的数据,-表示降序。
y <- x[order(x[1], -x[2])
#去除NA所在行和列
y <- na.omit(x)
```
## 数据的整理与展示
这部分的数据整理是在预处理完毕后,根据我们需要对数据进行整理和简单可视化(多画图,多可视化,你能发现很多事情)。那么第一步就是先把我们的数据类型搞清楚。因为不同类型数据,整理方式不同。对于分类数据和顺序数据主要是分类整理。对于数值数据主要是做分组整理。
> * 分类数据的整理核心就是计算频数、比例、百分比、比率,一般可视化用条形图(柱状图)。此外还可以考虑使用帕累托图。帕累托图(Pareto chart)是以意大利经济学家V.Pareto的名字而命名的。这是一个双坐标轴图,一侧纵坐标是频率,另一侧纵坐标是累计频率。是在条形图基础上加上一条折线图(累计频率曲线)。通常用帕累托图来表示,就是研究事物特征是否存在二八定律(20/80规律,典型案例:20%的人拥有80%的财富)。除此之外,分类型数据还可以用饼图来进行可视化。
> * 顺序数据则一般选用累计频率曲线和环状图进行可视化。
> * 数值型数据的可视化方式是最多的。主要包括了直方图、折线图(频数多边形图)、打点图、茎叶图、箱线图、线图(时间序列数据)、双变量问题(二维散点图与散点图矩阵)、三变量问题(三维散点图或气泡图)、多变量问题(雷达图)。
其中这里面有一个直方图分组使用的经验公式。
$$K=1+\frac{\lg {n}}{\lg {2}}$$,
K为组数,n为样本数。确定组数,通过极差和组数求组距即可分组。
这部分有很多可视化内容,暂时就不在这部分讲述了(第14章会重点讲解几个典型的可视化方式的R语言绘制)。最后小结下数据可视化的内容。
> * 品质数据——先制作汇总表,然后可以采用条形图、饼图、环状图可视化;
> * 数值数据中的原始数据——茎叶图、箱线图可视化;
> * 数值数据中的分组数据——直方图、折线图;
> * 数值数据中的时间序列数据——线图;
> * 数值数据中的多元数据——散点图、气泡图、雷达图。
此外对于图表可视化来说,好的图表可视化应当具有如下特征:
> * 显示数据;
> * 让读者把注意力集中在图表的内容上,而不是制作图表的程序上;
> * 强调数据之间的比较;
> * 服务于一个明确的目的;
> * 有对图表的统计描述和文字说明。
鉴别图表优劣的准则:
> * 精心设计、 有助于洞察问题的实质;
> * 使复杂的观点得到简明、 确切、 高效的阐述;
> * 能在最短的时间内以最少的笔墨给读者提供最大量的信息;
> * 表述数据的真实情况, 避免歪曲。
当然图表可视化不仅仅只有R,Excel、SPSS、Tableau都可以使用。
## 数据的概括性度量
当你面对一堆数据时,你还是不知道从何下手,因为我们不可能强行记住每个数据,然后在脑海里对各个数据的分布进行比较,所以科学家们在处理数据的时候,都希望用数据规模尽可能小的一个指标去描述数据尽可能多的信息。那么从数据的角度出发,针对数据分布的不同方面,科学家们也都找出了不相同的指标来进行描述。
简单来说,数据分布包括了集中趋势、离散程度、分布形状三个方面的内容。
> * 集中趋势:众数、中位数、平均数;
> * 离散程度:异众比率、四分位差、极差、方差或标准差、离散系数;
> * 分布形状:偏态系数、峰态系数。
集中趋势的几个指标想必大家较为清楚,就不展开详述了。而离散程度中极差、方差和标准差也是如此,同上,不过单独解释下自由度的概念(一组数据中可以自由取值的数据的个数,与附加给独立观测值的约束或限制的个数有关,比如三个数据的均值已经知道,知道其中两个数据,第三个数据是固定的,也就是说在添加了均值这个约束之后,观测数据自由取值的个数是n-1=2个)。这里重点解释异众比率,四分位差、离散系数、偏态系数和峰态系数。
> * 异众比率——从字面理解即可,非众数的比率。也就是——不是众数的组的频数占总频数的比率。
> * 四分位差——上四分位数减去下四分位数。
> * 离散系数——也就是标准差系数,即用标准差除以平均值。
> * 偏态系数——用来描述数据分布特征(分布偏斜程度)的系数,该系数>0为右偏分布,<0为左偏分布,=0为对称分布。
> * 峰态系数——用来描述数据分布特征(分布扁平程度)的系数,该系数>0为尖峰分布,<0为扁平分布,=0为扁平峰度适中。
最后单列出以上部分指标的公式(有数学恐惧症的同学请跳过)。
中位数:
$$x_{((n+1)/2)}$$(n为奇数)
$$(x_{(n/2)}+x_{(n/2)+1})/2$$(n为偶数)
四分位数:
$$Q_{L}=\frac{n}{4},Q_{U}=\frac{3n}{4}$$
$$Q_{L}=\frac{n+1}{4},Q_{U}=\frac{3(n+1)}{4}$$
$$Q=\frac{[\frac{n+1}{2}]+1}{2}$$
$$Q_{L}=\frac{n+3}{4},Q_{U}=\frac{3n+1}{4}$$
平均数:
$$\bar{x}=\frac{\sum_{i=1}^n x_{i}}{n}$$(简单平均数)
$$\bar{x}=\frac{\sum_{i=1}^k M_{i}f_{i}}{n}$$(加权平均数)
$$G_{m}=\sqrt[n] {\prod_{i=1}^n {(1+x_{i})}}-1$$(几何平均数)
异众比率:
$$v_r=1-\frac{f_m}{\sum f_i}$$
极差:
$$R=max(x_i)-min(x_i)$$
四分位差:
$$Q_d=Q_U-Q_L$$
平均差:
$$M_d=\frac{\sum_{i=1}^n \left|{x_i-\bar {x}}\right|}{n} $$ 或 $$ M_d=\frac{\sum_{i=1}^k \left|{M_i-\bar {x}}\right|f_i}{n}$$
总体方差:
$$\sigma^2=\frac{\sum_{i=1}^N (x_i-\mu)^2}{n} $$ 或 $$ \sigma^2=\frac{\sum_{i=1}^k (M_i-\mu)^2f_i}{n}$$
总体标准差:
$$\sigma=\sqrt {\frac{\sum_{i=1}^N (x_i-\mu)^2}{n}} $$ 或 $$ \sigma=\sqrt{\frac{\sum_{i=1}^k (M_i-\mu)^2f_i}{n}}$$
样本方差:
$$s^2=\frac{\sum_{i=1}^N (x_i-\bar x)^2}{n-1}$$ 或 $$s^2=\frac{\sum_{i=1}^k (M_i-\bar x)^2f_i}{n-1}$$
样本标准差:
$$s=\sqrt {\frac{\sum_{i=1}^N (x_i-\bar x)^2}{n-1}}$$ 或 $$s=\sqrt{\frac{\sum_{i=1}^k (M_i-\bar x)^2f_i}{n-1}}$$
标准分数:
$$z_i=\frac{x_i-\bar{x}}{s}$$
标准差系数:
$$v_s=\frac{s}{\bar{x}}$$
偏态系数:
$$SK=\frac{n\sum(x_i-\bar{x})^3}{(n-1)(n-2)s^3}$$
$$SK=\frac{\sum_{i=1}^k(M_i-\bar{x})^3f_i}{ns^3}$$
峰态系数:
$$K=\frac{n(n+1)\sum{(x_i-\bar{x})^4}-3[\sum{(x_i-\bar{x})^2}]^2(n-1)}{(n-1)(n-2)(n-3)s^4}$$
$$K=\frac{\sum_{i=1}^k{(M_i-\bar{x})^4f_i}}{ns^4}-3$$