例解回归分析笔记(1-4章)

这本《例解回归分析第5版》属于统计学精品译丛系列,这个系列的书都非常不错,以下是该书的阅读笔记

一、回归分析的步骤

1.问题陈述
是指明确要分析研究的问题

2.选择相关变量
选择用于解释因变量的自变量

3.收集数据
收集的数据按照取值情况可以分为定量数据或定性数据,如果所有的自变量均为定性数据,此时的回归分析就是方差分析,如果自变量既有定性变量也有定量变量,此时的回归分析称为协方差分析

4.模型设定
根据专业知识假定一个模型的形式,模型可以分为线性和非线性,有些非线性模型通过变量变换可以转化为线性模型。

回归分析的分类
单变量回归:只有一个因变量,且为定量数据
多变量回归:有两个或以上的因变量,且为定量数据
简单回归:只有一个自变量
多元回归:两个或以上自变量
线性回归:方程关于所有回归系数都是线性的,或者通过变量变换之后是线性的
非线性回归:方程对于某些回归系数或某些自变量是非线性的,并且无法通过变量变换转化为线性
方差分析:所有自变量都是定性变量
协方差分析:自变量既有定量变量,也有定性变量
Logistic回归:因变量为定性变量

5.选择拟合方法
模型确定之后,需要据此选择模型系数的拟合方法,最常用的是最小二乘法和加权最小二乘法,但是最小二乘法在某些假设条件下才是最佳估计,当这些假设条件不满足时,其他估计方法会优于最小二乘法,例如极大似然法、岭回归法、主成分回归法等

6.模型拟合
根据选定的模型和拟合方法,将收集的数据进行拟合。这里有两个概念:
拟合值:用已收集的数据代入模型进行计算出的值
预测值:用任何数据代入模型进行计算出的值,但是不建议使用超过自变量取值范围的值进行计算。

7.模型的评价和选择
模型的有效性依赖于某些假设,我们需要不断地调整模型,以使模型满足这些假设达到最优效果,整个过程是一个迭代的过程。

8.回归模型的应用
在拟合最佳模型之后,我们将应用此模型进行预测、或者评估单个变量的重要性、了解变量之间的相互关系,总之,作为一种分析技术,大多数情况下确定回归方程使其主要目标,但是拟合期间产生的任何结果,也都是有用的。

================================================

二、简单线性回归

只包含一个因变量Y和一个自变量X的回归为简单线性回归

Y=β01X+ε

1.协方差与相关系数

对Y偏离其均值和X偏离其均值的乘积,可以计算二者的协方差,协方差会受到度量单位的影响,因此在计算之前,先对数据进行标准化,即Z变换,标准化之后的Z变量也称为Z分数,用该变量计算的协方差就是Y与X的相关系数,相关系数具有对称性,因此相关系数矩阵也具有对称性。

相关系数不会受到度量单位的影响,并且值在-1与+1之间,±符号代表相关方向,数值大小代表线性关系强度,注意这里是线性关系,也就是说相关系数只是表示线性相关性,相关系数为0,只是表示二者没有线性相关关系,但是有可能有非线性相关关系。

从相关系数的计算公式可以看出,它是非常容易受到离群值的影响的,因此在使用相关系数时,一定要考察散点图。

2.参数估计

线性回归一般采用最小二乘法估计参数,所得到的参数称为最小二乘估计,所得的直线称为最小二乘回归直线。最小二乘法的基本思路是:我们要寻找一条直线,使所有点到该直线的铅直距离的平方和最小,其中铅直距离代表随机误差。注意这里用到的是铅直距离,也可以用点到直线的垂直距离(即最短距离,此时得到的直线称为正交回归直线)。

由于我们总能找到使铅直距离平方和达到最小的直线,因此最小二乘回归直线总是存在的,但有时并不唯一。可以证明,最小二乘残差之和为0。

3.假设检验

线性回归的假设检验可以分为4个

(1)对回归系数β1是否为0进行检验
这是最主要的检验,如果X可以对Y进行预测,那么其回归系数必定不为0,因此我们首先需要对其回归系数是否为0进行假设检验,假设的前提是残差相互独立且服从均值为0,方差相等的正态分布,只有在这些前提下,最小二乘估计才是无偏估计
H0:β1=0
H1:β1≠0

由于是在正态分布假设下,因此我们使用t检验

(2)对回归系数β1是否为某个常数进行检验
对检验(1)进行推广之后,我们还可以对回归系数β1是否为某个常数进行检验,这个常数的含义为当自变量X改变某个值时,对应的因变量Y的改变量,假设我们估计自变量增加1时,因变量Y改变量为β10,那么样本数据是否支持这个估计,我们可以通过假设检验来进行判断
H0:β110
H1:β1≠β10
我们还是使用t检验来进行

(3)对截距β0是否为某个值进行检验
和检验(2)一样,我们也可以对模型的截距是否为某个值进行检验
H0:β000
H1:β0≠β00
我们还是使用t检验来进行

(4)对相关系数是否为0进行检验
这实际上和检验(1)等价,原理也是一样的

4.预测

预测分为两种类型
(1)对于任意给定的自变量X,因变量Y的预测值
(2)当自变量取某个值时,因变量Y的预测值的均值
我们称(1)为区间估计,预测范围为预测区间,(2)为点估计,预测范围为置信区间,点估计的标准误要小于区间估计的标准误,因为预测一个观测值比预测一个观测值的均值有更大的不确定性,而预测值的均值通过平均,减少了波动性和不确定性。

此外,关于自变量的取值也应注意,取值距离自变量均值越远,预测的标准误越大,并且自变量与因变量之间的线性关系有可能不再成立,这点也需要注意。

5.模型拟合优度判断

一个回归模型的拟合优度判断可以通过以下几种方法进行,这些方法都是相关联的,一般不会出现矛盾结果
(1)假设检验的t值,该值越大,说明Y与X的线性相关性就越强,拟合效果越好
(2)观测值和预测值的散点图,这些点
(3)决定系数R2,在简单线性回归中,其值等于相关系数的平方,这是比较重要的判断拟合优度的指标,反映的是Y的总变差中能被自变量X所解释的比例,值越大,说明拟合优度越好。

=====================================================

三、多元线性回归

这本书中认为多元线性回归是指描述一个因变量和多个自变量之间的关系。

Y=β01X12X23X3+...+βpXp

这里的β0还是表示斜率,但是β1p表示为偏回归系数,ε表示随机误差,当p=1时,多元线性回归的结果等同于简单线性回归。
多元线性回归的假定也是随机误差相互独立,服从均值为0方差为常数的正态分布

1.参数估计
仍然使用最小二乘法进行参数估计,由于有多个参数,因此需要建立方程组求解。

2.回归系数的解释
多元线性回归中回归系数可解释为:当其他自变量进行调整之后,某个自变量对因变量的贡献,因此称为偏回归系数。这种调整是由于自变量之间存在相关性,某个自变量改变时,会同时影响其他的自变量变化,如果自变量之间完全不存在相关性,那么多元线性回归和简单线性回归的回归系数是完全相同的。

3.中心化和规范化
这主要是消除量纲的影响
中心化是指每个观测值减去所有观测值的均值,中心化之后的变量均值为0
中心化之后还可以再进行规范化,规范化有两种:单位化和标准化
单位化是指每个观测值减去所有观测值的均值再除以其平方和的开方,单位化之后变量的均值为0,长度为1
标准化就是我们最为常用的规范化方法,是指每个观测值减去所有观测值的均值再除以标准差,标

准化之后变量的均值为0,标准差为1。

中心化和规范化并不影响变量间的相关性,可根据实际需要选择使用。

无截距模型不能使用中心化,因为这样会增加截距。

4.复相关系数
在多元线性回归中,我们要评价因变量Y与自变量集合的线性关系强度,使用的R2称为复相关系数,反映的是因变量Y的总变差中能由自变量集合解释的比例,该系数也成为评价多元线性模型拟合效果的指标,于此对应的还有校正的R2,由于它除以了自由度,因此可以用来比较变量个数不同的模型之间的拟合效果,但是它不能解释为因变量Y的总变差中能由自变量集合解释的比例。

5.假设检验

(1)偏回归系数的假设检验
多元线性回归中偏回归系数的假设检验和简单线性回归类似,也是使用t检验,并且不显著的自变量可以从模型中剔除,但是需要注意的是,即使截距不显著,也不应该剔除,因为它代表了因变量的基础水平或背景水平,除非有特别充分的理论依据。

(2)所有回归系数是否均为0的假设检验

H0:β123=....=βp=0
H1:至少有一个β不为0

和简单线性回归一样,当所有偏回归系数均为0时,所有自变量对因变量都没有解释能力,也就是该模型是无效的,注意这里是同时的关系,由于涉及多个自变量,因此不能使用t检验,而使用相对应的方差分析F检验。

实际上,在(1)中任何一个回归系数的t检验是显著的,那么F检验也是显著的,但是当所有回归系数的t检验均不显著,但是F检验显著时,说明自变量间可能存在严重的共线性,使得所有自变量联合起来对因变量产生影响。

(3)某些回归系数为0的假设检验
这涉及自变量筛选问题,通常我们希望模型只引入那些最重要的、最具代表性的变量,这样可以是模型简洁,容易解释,换句话说,如果少数几个变量的解释效果和大多数变量相当,那么我们在模

型中只引入这少数几个变量即可
H0:某些系数为0
H1:某些系数不为0

这里有时需要结合业务情况进行,比如在专业角度上,我们希望某些变量留在模型内,此时就可以研究这些变量的解释效果和其余变量是否一致,如果一致,则只取这几个变量即可,也是使用F检验。

(4)某些回归系数是否相等的假设检验
有时我们需要检验模型中两个或多个回归系数是否相等,也就是说,是否存在一种情况,使得某些自变量增加一个单位时,对Y的影响程度是一样的。例如,想检验自变量X1,X3的回归系数是否相同,可以拟合如下模型

Y=β01(X1+X3)+ε

(5)带有约束的回归系数的估计和检验

有时由于变量之间可能存在某种理论或客观上的联系,所以需要对回归系数增加一些约束,例如某几个回归系数之和为1,可以拟合如下模型

Y=β01X1+(1-β1)X3)+ε,整理后得

Y-X301(X1-X3)+ε

这里我们考虑约束为β13=1,可见和(4)是一样的,(4)可以看做是β13=0的情况。

==================================================

四、回归诊断:违背模型假定的检验

前面讲的无论是多元线性回归还是简单线性回归,都是默认符合线性回归假设的,只有在此前提下,计算出的结果才是有效和有意义的,如果违反的话,使用这些结果将导致严重的错误,那么如何判断是否符合假设呢?首先我们回顾一下标准的线性回归到底有哪些前提假设

1.对模型形式的假设
也称为线性假设,即假设因变量和自变量之间的关系模型对于回归系数是线性的,或者可以通过数据变换转化为线性的。

简单线性回归可以通过散点图来识别,多元线性回归由于变量较多,使用散点图比较困难,但是也可以通过其他方式进行判断

2.对残差的假设
实际上蕴含着4个假设
(1)各残差服从正态分布,称为正态性假设
(2)各残差均值为0
(3)各残差的方差相等,称为等方差假设或方差齐性假设,若假设不成立,则为异方差问题
(4)各残差相互独立,即两两协方差为0,协方差矩阵为单位矩阵,称为独立性假设,若假设不成立,则为自相关问题

3.对自变量的假设
对自变量假设分为3个,其中前两个假设在一般的数据分析书和文献中很少有介绍

(1)自变量是非随机的
具体是指自变量的取值水平是实验者预定的,也就是实验设计条件,这种假设在非观测或非实验条件下不会满足,当假设不满足时,不会对结果和结论产生影响,但是会对结果的解释产生影响。这个假设的意思实际上就是用观测的数据预测非观测的数据时,要对结果加以注释,具体体现在多元线性回归中自变量的取值范围。

(2)自变量的取值不存在测量误差
这几乎是不可能满足的,只能尽量的减小,我们通常会修正测量误差对回归系数的影响,当测量误差很小时,可以忽略不计,但是其对模型产生的作用依然存在,会降低预测的精度。

(3)自变量是互不相关的
这个假设主要是为了保证最小二乘法有唯一解,如果该假设不成立,则为多重共线性问题

以上三个假设中,(1)(2)无法验证,所以一般我们也不会刻意提起,但是他们确实会对结果的解释产生影响。

4.对观测值的假设

这里的观测值是指因变量的观测值,假设所有观测值都是可靠的,他们对回归结果的确定和对结论的影响有基本相同的作用。

++++++++++++++++++++++++++++

以上是线性回归模型的各种假设,接下来是检验这些假设的方法

1.检查残差
残差图是检验模型是否符合假设的重要方法,主要通过残差图体现,残差分为普通残差、内学生化残差、外学生化残差、标准化残差,内外学生化残差也属于标准化残差,我们主要研究的是标准化残差。

这些标准化残差之和不为0,但是方差相同,对于大样本,这些标准化残差都近似服从标准正态分布,并且近似相互独立。做残差图时,选用何种标准化残差结果不会有太大区别。

++++++++++++++++++++++++++++

2.图形方法
也就是图示法,图示法在很多方面是有用的,在考察一个具体的图形之前,先考虑一下在某些假设成立时图形是怎样的,然后检验图形是否符合预期的样子,以此来证实或否定所做的假定,图示法在回归分析中可以分为拟合模型前的图形和拟合模型后的图形

(1)拟合模型前的图形
主要用来做数据纠错、发现异常点、初步确定模型形式,通常刻画自变量和因变量之间的关系模型是建立在专业理论背景或要检验的假设之上,但是如果没有这些信息,我们可以通过作图来对数据进行全面的考察,这也是一种探索性分析,这里可能用到的图形有

·一维图
包括最常用到的直方图、茎叶图、散点图、箱线图

·二维图
对于多维变量,理论上我们应该考察和数据有相同维度的图形,但是当维度较多时,这样做出的图非常繁琐,维度较少时,我们可以将两两变量间的散点图排列成矩阵形式,也就是矩阵图,由于矩阵存在对称性,我们也可以在上半部分和下半部分提现不同的内容。

·旋转图
就是三个变量的散点图,通过旋转,我们可以从立体的角度查看变量间的关系

·动态图
可以动态的看到图形所发生的变化。

(2)拟合模型后的图形

主要用来检验回归模型的假设是否满足以及回归模型的拟合效果,主要分为

·检验线性和正态性假设的图形

主要通过检验残差来进行判断,常用的图形有:

标准化残差的正态概率图

这是一个由小到大排序后的标准化残差关于所谓正态得分的散点图,当样本容量为n时,排序后的第i个残差的正态得分就是标准正态分布的i/n分位点。如果残差服从标准正态分布,排序后的残差应该近似的与正态得分相同,在正态分布假设下,图形应类似于一条截距为0斜率为1的直线(截距和斜率分别表示标准化残差的均值和标准差)

标准化残差关于每个自变量的散点图

如果正态性假定成立,那么标准化残差与每个自变量都是不相关的,图形中的点是随机分布的,没有任何趋势可以辨别,如果散点存在某种趋势,则可能不符合正态性假设或者存在异方差,此时需要对因变量或自变量进行数据变换以修正。

标准化残差关于拟合值的散点图

在正态性假定下,标准化残差与拟合值也是不相关的,散点图中的点也是随机分布的,情况和上述相同。

·检验独立性假设的图形

标准化残差关于观测序号的散点图

如果观测顺序不重要,那么此图是不需要的,但是如果观测顺序很重要(如按照时间或空间顺序得到的观测),那么这种图可以用来检验残差的独立性假设,在该假设下,散点图应随机分布在一条过0的水平带状区域内。

·判断高杠杆值、强影响点、异常值

这三种值都属于非正常值

高杠杆值:出现在自变量中的异常值称为高杠杆值,一般大于其自身2倍值的杠杆值称为高杠杆值

异常值:过大或过小的残差所对应的因变量的值称为异常值,因为它们在Y方向上远离拟合方程,即标准化残差的绝对值大于2或3时的点。

强影响点:被删除或与其他点一起被删除时,会导致拟合模型的颠覆性变化,这样的点就是强影响点,注意这里指的是颠覆性变化,因为任何点被删除时,模型都会发生变化,但是删除强影响点所产生的变化是非常大的。

异常值和强影响点都可以通过残差图来进行辨别,但是由于高杠杆值和残差有公式关系,以及伪装和淹没问题的存在,使得残差图有时会失效。

伪装是指数据包含异常点但是我们未能检测到它们,这可能是因为一些异常点被其他异常点隐藏起来了。

淹没是指我们错误地将一些非异常点识别为异常点,这可能是因为某些异常点将回归方程拉向自身,而使其他点远离回归方程。

此时我们需要针对杠杆值做散点图以进一步判断。

此外需要注意的是,如果只是单纯的高杠杆值,一般不会引起模型的太大问题,因为它本身就是自变量,但是如果它同时又是强影响点,就要特别关注,因为它们直接引起模型拟合结果的改变。

++++++++++++++++++++++++++++

3.观测值影响的度量

一个观测值的影响,可以用把它从数据中剔除前后所拟合的结果之差来衡量,并可以据此判断该观测值是否为强影响点,基于此思想产生了很多度量方法,这里介绍三种

·Cook距离
Cook距离反映的是用全部数据和去掉第i个观测之后的数据所得到的回归系数或拟合值之间的差异,如果该值过大,则对应的观测值有可能是强影响点,但是根据所有的Cook距离值做点图进行全面考察更好。

·Welsch-Kuh度量
也称为DFITS值,和Cook距离具有换算关系,并且都是标准化残差和杠杆值的乘积函数,因此结果也和Cook距离等价。

·Hadi度量
Hadi度量提出的基本思想是:一个强影响点要么是自变量取值异常,要么是因变量取值异常,或者二者都有。因此Hadi度量并不是针对某个回归结果,而是一种整体的、一般的度量影响工具,它识别的是至少对一个回归结果有强影响的观测点。

Hadi度量也建议根据此值做散点图进行考察,同时,基于Hadi度量的公式,我们可以构造一个位势-残差图(Potential-Residual)简称P-R图,其实也就是位势和残差两个统计量的散点图,位势高而残差小的值为高杠杆值,位势低而残差大的为异常值,相对应的还有杠杆-残差图,简称L-R图

综合以上,我们可以知道,某些特别的数据可能成为杠杆值、异常点或强影响点,对于任意一种,我们都应仔细检查其准确性,如果只是单纯的高杠杆值,一般不会引起太大问题,但如果即是高杠杆值也是强影响点,就要特别关注,因为它影响了拟合结果。

++++++++++++++++++++++++++++

4.如何处理异常点

异常点或强影响点不能一味的删除或降低权重,它们不一定是坏的观测,相反,如果它们是准确的,则可能是提供信息最多的点,我们应该查清楚为什么会有异常或强影响,以便有针对性的采取措施,这些措施有:纠正数据错误、删除异常点、降低异常点的权重、数据变换等。

++++++++++++++++++++++++++++

5.添加一个自变量的效应
这涉及自变量的筛选问题,新引入一个变量后,需要关注两个问题:1.新变量的回归系数是否显著?2.新变量的引入是否会改变原有回归方程的回归系数,这会产生四种可能的结果

结果A:新变量回归系数不显著,并且原有回归方程的回归系数也没有明显变化,这种情况说明新变量不应该被引入回归方程,除非专业理论或研究主题指定将其引入

结果B:新变量回归系数显著,但是原有回归方程的回归系数也发生明显变化,这种情况下,新变量需要被暂时保留,同时要检验是否存在共线性,如果存在共线性,则需要先采取一些措施修正再决定该变量是否保留。

结果C:新变量回归系数显著,并且原有回归方程的回归系数没有明显变化,这种情况是比较理想的状态,说明新变量需要被引入回归模型

结果D:新变量回归系数不显著,但是原有回归方程的回归系数也发生明显变化,这是共线性的明确证据,必须采取修正措施,然后再对该变量进行考察。

时间: 2024-10-09 02:53:28

例解回归分析笔记(1-4章)的相关文章

TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)

TCP/IP详解学习笔记   这位仁兄写得太好了 TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器 TCP/IP详解学习笔记(12)-TCP的超时与重传TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流 TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着

o'Reill的SVG精髓(第二版)学习笔记——第十一章

第十一章:滤镜 11.1滤镜的工作原理 当SVG阅读器程序处理一个图形对象时,它会将对象呈现在位图输出设备上:在某一时刻,阅读器程序会把对象的描述信息转换为一组对应的像素,然后呈现在输出设备上.例如我们用SVG的<filter>元素指定一组操作(也称作基元,primitive),在对象的旁边显示一个模糊的投影,然后把这个滤镜附加给一个对象: <fliter id="drop-shadow"> <!-- 这是滤镜操作 --> </fliter&g

SQL Server2012 T-SQL基础教程--读书笔记(5-7章)

SQL Server2012 T-SQL基础教程--读书笔记(5-7章) SqlServer T-SQL 示例数据库:点我 Chapter 05 表表达式 5.1 派生表 5.1.1 分配列别名 5.1.2 使用参数 5.1.3 嵌套 5.1.4 多个引用 5.2 公用表表达式 5.2.1 分别列别名 5.2.2 使用参数 5.2.3 定义多个CTE 5.2.4 CTE的多次引用 5.2.5 递归CTE 5.3 视图 5.3.1 视图和ORDER BY 子句 5.3.2 视图选项 5.4 内嵌表

【转】TCP/IP详解学习笔记(二)

TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统路由表. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface192.168.11.0    *               255.

MySQL Cookbook读书笔记第三章

1,查询指定列/从指定列中查询 若需要指定每一列在查询结果中出现的先后顺序,可以在select语句中指定(dstuser在dsthost之后): 查询显示用户所关注的列: 2,指定查询行 使用where关键字可以查询符合条件限制的数据例如:查找srchost为venus或者srchost以s开头的行记录: 使用操作符like进行模式匹配,其中%表示通配符,代表一个差多为任意值的字符串. where使用操作符and可以查询多个条件: 条件并集: 3,格式化显示查询结果 当查询语句中没有重命名列名,

Shell学习笔记——第三章

第三章 /etc/passwd 文件包含一个所有系统用户账户组成的列表,以及一些关于每个用户的基本信息. 例rich:x:501:Rich Blum:/home/rich:/bin/bash 每个条目都有7个数据字段,例使用冒号分隔.系统使用这些字段中的数据向用户分配具体的特性.这些字段分别有 用户名:用户密码(如果密码存储在其他文件中,则为占位符):用户的系统用户ID编号:用户的系统组的ID编号:用户的全名:用户默认的主目录:用户的默认Shell目录: cd 命令 略过 列表命令(ls) 参数

Stealth视频教程学习笔记(第一章)

Stealth视频教程学习笔记(第一章) 本文是对Unity官方视频教程Stealth的学习笔记.在此之前,本人整理了Stealth视频的英文字幕,并放到了优酷上.本文将分别对各个视频进行学习总结,提炼出其中的知识点和思路思想. 视频地址在(http://www.youku.com/playlist_show/id_23389553.html),是一个Stealth的专辑,这里只放上第一个视频,其它的大家在上面的链接中慢慢看吧. 第二章有一个视频是FLV格式的,我没法把字幕嵌入其中,所以优酷上就

《Linux Shell脚本攻略》 笔记 第六章:打包压缩

<Linux Shell脚本攻略> 笔记 第六章:打包压缩 //1.打包.解包 [[email protected] program_test]# tar -cf output.tar 11.txt 22.txt 33.txt [[email protected] program_test]# tar -xf output.tar -C ./tar-file/  //-C指定要提取到哪个路径? //列举出归档文件中的内容 [[email protected] program_test]# ta

孙鑫视频VC++深入详解学习笔记

Lesson1: Windows程序运行原理及程序编写流程 Lesson2: 掌握C++基本语法 Lesson3: MFC框架程序剖析 Lesson4: 简单绘图 Lesson5: 文本编程 Lesson6: 菜单编程 Lesson7: 对话框编程 Lesson9: 定制应用程序的外观 Lesson10: 绘图控制 Lesson11 图形的保存和重绘 Lesson12 文件操作 Lesson 13: 文档串行化 Lesson14 网络编程 Lesson 15 多线程 Lesson 16 线程同步