diff --git a/13.md b/13.md index 01cc1f0a873491eb392d58a47c6a50edb9bfee02..54f8a90658acbc1575f89f90ffac098d43d64a77 100644 --- a/13.md +++ b/13.md @@ -44,6 +44,8 @@ heights heights.scatter('MidParent') ``` +![](img/13-1.png) + 收集数据的主要原因是能够预测成年子女的身高,他们的父母与数据集中相似。 在注意到两个变量之间的正相关之后,我们在第 7.1 节中做了这些预测。 我们的方法是,基于新人的双亲身高周围的所有点来做预测。 为此,我们编写了一个名为`predict_child`的函数,该函数以双亲身高作为参数,并返回双亲身高在半英寸之内的,所有子女的平均身高。 @@ -74,6 +76,8 @@ heights_with_predictions = heights.with_column( heights_with_predictions.scatter('MidParent') ``` +![](img/13-2.png) + 给定双亲身高的预测值,大致位于给定身高处的垂直条形的中心。这种预测方法称为回归。 本章后面我们会看到这个术语的来源。 我们也会看到,我们是否可以避免将“接近”任意定义为“在半英寸之内”。 但是首先我们要开发一个可用于很多环境的方法,来决定一个变量作为另一个变量的预测值有多好。 ## 相关性 @@ -97,6 +101,8 @@ heights_with_predictions.scatter('MidParent') hybrid.scatter('acceleration', 'msrp') ``` +![](img/13-3.png) + 注意正相关。 散点图倾斜向上,表明加速度较大的车辆通常成本更高;相反,价格更高的汽车通常具有更大的加速。 `msrp`与`mpg`的散点图表明了负相关。 `mpg`较高的混合动力车往往成本较低。 这似乎令人惊讶,直到你明白了,加速更快的汽车往往燃油效率更低,行驶里程更低。 之前的散点图显示,这些也是价格更高的车型。 @@ -105,6 +111,8 @@ hybrid.scatter('acceleration', 'msrp') hybrid.scatter('mpg', 'msrp') ``` +![](img/13-4.png) + 除了负相关,价格与效率的散点图显示了两个变量之间的非线性关系。 这些点似乎围绕在一条曲线周围,而不是一条直线。 但是,如果我们只将数据限制在 SUV 类别中,价格和效率之间仍然负相关的,但是这种关系似乎更为线性。 SUV 价格与加速度之间的关系也呈线性趋势,但是斜率是正的。 @@ -114,10 +122,14 @@ suv = hybrid.where('class', 'SUV') suv.scatter('mpg', 'msrp') ``` +![](img/13-5.png) + ```py suv.scatter('acceleration', 'msrp') ``` +![](img/13-6.png) + 你会注意到,即使不关注变量被测量的单位,我们也可以从散点图的大体方向和形状中得到有用的信息。 事实上,我们可以将所有的变量绘制成标准单位,并且绘图看起来是一样的。 这给了我们一个方法,来比较两个散点图中的线性程度。 @@ -141,6 +153,8 @@ plots.xlim(-3, 3) plots.ylim(-3, 3); ``` +![](img/13-7.png) + ```py Table().with_columns( 'acceleration (standard units)', standard_units(suv.column('acceleration')), @@ -150,6 +164,8 @@ plots.xlim(-3, 3) plots.ylim(-3, 3); ``` +![](img/13-8.png) + 我们在这些数字中看到的关联与我们之前看到的一样。 另外,由于现在两张散点图的刻度完全相同,我们可以看到,第二张图中的线性关系比第一张图中的线性关系更加模糊。 我们现在将定义一个度量,使用标准单位来量化我们看到的这种关联。 @@ -176,18 +192,26 @@ plots.ylim(-3, 3); r_scatter(0.9) ``` +![](img/13-9.png) + ```py r_scatter(0.25) ``` +![](img/13-10.png) + ```py r_scatter(0) ``` +![](img/13-11.png) + ```py r_scatter(-0.55) ``` +![](img/13-12.png) + ### 计算`r` 目前为止,`r`的公式还不清楚。 它拥有超出本课程范围的数学基础。 然而,你将会看到,这个计算很简单,可以帮助我们理解`r`的几个属性。 @@ -223,6 +247,8 @@ t t.scatter(0, 1, s=30, color='red') ``` +![](img/13-13.png) + 第一步:将每个变量转换为标准单位。 ```py @@ -282,6 +308,8 @@ r t.scatter('y', 'x', s=30, color='red') ``` +![](img/13-14.png) + ### `correlation `函数 @@ -338,6 +366,8 @@ nonlinear = Table().with_columns( nonlinear.scatter('x', 'y', s=30, color='r') ``` +![](img/13-15.png) + ```py correlation(nonlinear, 'x', 'y') 0.0 @@ -355,6 +385,8 @@ line = Table().with_columns( line.scatter('x', 'y', s=30, color='r') ``` +![](img/13-16.png) + ```py correlation(line, 'x', 'y') 1.0 @@ -365,6 +397,8 @@ outlier = Table().with_columns( outlier.scatter('x', 'y', s=30, color='r') ``` +![](img/13-17.png) + ```py correlation(outlier, 'x', 'y') 0.0 @@ -401,6 +435,8 @@ sat2014 sat2014.scatter('Critical Reading', 'Math') ``` +![](img/13-18.png) + ```py correlation(sat2014, 'Critical Reading', 'Math') 0.98475584110674341 @@ -416,6 +452,8 @@ correlation(sat2014, 'Critical Reading', 'Math') 2012 年,在著名的《新英格兰医学杂志》(New England Journal of Medicine)上发表的一篇论文,研究了一组国家巧克力消费与的诺贝尔奖之间的关系。《科学美国人》(Scientific American)严肃地做出回应,而其他人更加轻松。 欢迎你自行决定!下面的图表应该让你有兴趣去看看。 +![](img/13-19.png) + ## 回归直线 相关系数`r`并不只是测量散点图中的点聚集在一条直线上的程度。 它也有助于确定点聚集的直线。 在这一节中,我们将追溯高尔顿和皮尔逊发现这条直线的路线。 @@ -445,6 +483,8 @@ heights_with_predictions = heights.with_column( heights_with_predictions.scatter('MidParent') ``` +![](img/13-20.png) + ### 标准单位下的度量 让我们看看,我们是否能找到一个方法来确定这条线。 首先,注意到线性关联不依赖于度量单位 - 我们也可以用标准单位来衡量这两个变量。 @@ -504,6 +544,8 @@ heights_with_su_predictions = heights_SU.with_column( heights_with_su_predictions.scatter('MidParent SU') ``` +![](img/13-21.png) + 这个绘图看起来就像在原始刻度上绘图。 只改变了轴上的数字。 这证实了我们可以通过在标准单位下工作,来理解预测过程。 ### 确定标准单位下的直线 @@ -512,12 +554,15 @@ heights_with_su_predictions.scatter('MidParent SU') 这里是一个橄榄形散点图,两个变量以标准单位测量。 45 度线显示为红色。 +![](img/13-22.png) 但是 45 度线不是经过垂直条形的中心的线。你可以看到在下图中,1.5 个标准单位的垂直线显示为黑色。蓝线附近的散点图上的点的高度都大致在 -2 到 3 的范围内。红线太高,无法命中中心。 +![](img/13-23.png) 所以 45 度线不是“均值图”。该线是下面显示的绿线。 +![](img/13-24.png) 两条线都经过原点`(0,0)`。绿线穿过垂直条形的中心(至少大概),比红色的 45 度线平坦。 @@ -535,10 +580,14 @@ heights_with_su_predictions.scatter('MidParent SU') regression_line(0.95) ``` +![](img/13-25.png) + ```py regression_line(0.6) ``` +![](img/13-26.png) + 当`r`接近于 1 时,散点图,45 度线和回归线都非常接近。 但是对于`r`较低值来说,回归线显然更平坦。 ### 回归效应 @@ -656,6 +705,8 @@ heights_with_predictions heights_with_predictions.scatter('MidParent') ``` +![](img/13-27.png) + 灰色圆点显示回归预测,全部在回归线上。 注意这条线与均值的金色图非常接近。 对于这些数据,回归线很好地逼近垂直条形的中心。 ### 拟合值 @@ -676,12 +727,16 @@ def fit(table, x, y): heights.with_column('Fitted', fit(heights, 'MidParent', 'Child')).scatter('MidParent') ``` +![](img/13-28.png) + 另一个绘制直线的方式是在表方法`scatter`中,使用选项`fit_line=True`。 ```py heights.scatter('MidParent', fit_line=True) ``` +![](img/13-29.png) + ### 斜率的测量单位 斜率是一个比值,值得花点时间来研究它的测量单位。 我们的例子来自熟悉的医院系统中产妇的数据集。 孕期体重与高度的散点图看起来像是一个橄榄球,已经在一场比赛中使用了很多次,但足够接近橄榄球,我们可以让我们的拟合直线穿过它来证明。 在后面的章节中,我们将看到如何使这种证明更正式。 @@ -691,6 +746,8 @@ baby = Table.read_table('baby.csv') baby.scatter('Maternal Height', 'Maternal Pregnancy Weight', fit_line=True) ``` +![](img/13-30.png) + ```py slope(baby, 'Maternal Height', 'Maternal Pregnancy Weight') 3.5728462592750558 @@ -757,6 +814,8 @@ little_women.show(3) little_women.scatter('Periods', 'Characters') ``` +![](img/13-31.png) + 为了探索数据,我们将需要使用上一节定义的函数`correlation`,`slope`,`intercept`和`fit `。 ```py @@ -775,6 +834,8 @@ lw_with_predictions = little_women.with_column('Linear Prediction', fit(little_w lw_with_predictions.scatter('Periods') ``` +![](img/13-32.png) + 对应于散点图上的每个点,预测的误差是计算为实际值减去预测值。 它是点与直线之间的垂直距离,如果点在线之下,则为负值。 ```py @@ -812,16 +873,22 @@ Slope of Regression Line: 87.0 characters per period Intercept of Regression Line: 4745.0 characters ``` +![](img/13-33.png) + 如果我们用不同的线来创建我们的估计,误差将会不同。 下面的图表显示了如果我们使用另一条线进行估算,误差会有多大。 第二张图显示了通过使用完全愚蠢的线获得了较大误差。 ```py lw_errors(50, 10000) ``` +![](img/13-34.png) + ```py lw_errors(-100, 50000) ``` +![](img/13-35.png) + ### 均方根误差(RMSE) 我们现在需要的是误差大小的一个总体衡量。 你会认识到创建它的方法 - 这正是我们开发标准差的方式。 @@ -854,11 +921,15 @@ lw_rmse(50, 10000) Root mean squared error: 4322.16783177 ``` +![](img/13-36.png) + ```py lw_rmse(-100, 50000) Root mean squared error: 16710.1198374 ``` +![](img/13-37.png) + 正如预期的那样,不好的直线 RMSE 很大。 但是如果我们选择接近于回归线的斜率和截距,则 RMSE 要小得多。 ```py @@ -866,6 +937,8 @@ lw_rmse(90, 4000) Root mean squared error: 2715.53910638 ``` +![](img/13-38.png) + 这是对应于回归线的均方根误差。 通过显着的数学事实,没有其他线路能击败这一条。 回归线是所有直线之间的唯一直线,使估计的均方误差最小。 @@ -875,6 +948,8 @@ lw_rmse(lw_reg_slope, lw_reg_intercept) Root mean squared error: 2701.69078531 ``` +![](img/13-39.png) + 这个声明的证明需要超出本课程范围的抽象数学。 另一方面,我们有一个强大的工具 -- Python,它可以轻松执行大量的数值计算。 所以我们可以使用 Python 来确认回归线最小化的均方误差。 ### 数值优化 @@ -898,6 +973,8 @@ lw_mse(lw_reg_slope, lw_reg_intercept)**0.5 2701.690785311856 ``` +![](img/13-40.png) + 它和我们之前使用`lw_rmse `得到的值相同。 ```py @@ -982,6 +1059,8 @@ shotput shotput.scatter('Weight Lifted') ``` +![](img/13-41.png) + 这不是橄榄形的散点图。 事实上,它似乎有一点非线性成分。 但是,如果我们坚持用一条直线来做出预测,那么所有直线之中仍然有一条最好的直线。 我们为回归线的斜率和截距建立公式,它来源于橄榄形的散点图,并给出了下列值: @@ -1022,6 +1101,8 @@ fitted = fit(shotput, 'Weight Lifted', 'Shot Put Distance') shotput.with_column('Best Straight Line', fitted).scatter('Weight Lifted') ``` +![](img/13-42.png) + ### 非线性回归 上面的图表强化了我们之前的观察,即散点图有点弯曲。 因此,最好拟合曲线而不是直线。 研究假设举起的重量与铅球距离之间是二次关系。 所以让我们使用二次函数来预测,看看我们能否找到最好的曲线。 @@ -1073,6 +1154,8 @@ shotput_fit = best.item(0)*(x**2) + best.item(1)*x + best.item(2) shotput.with_column('Best Quadratic Curve', shotput_fit).scatter(0) ``` +![](img/13-43.png) + ## 视觉诊断 假设数据科学家已经决定使用线性回归,基于预测变量估计响应变量的值。 为了了解这种估计方法的效果如何,数据科学家必须知道估计值距离实际值多远。 这些差异被称为残差。 @@ -1129,6 +1212,8 @@ def scatter_fit(table, x, y): scatter_fit(heights, 'MidParent', 'Child') ``` +![](img/13-44.png) + 通过绘制残差和预测变量来绘制残差图。函数`residual_plot`就是这样做的。 ```py @@ -1145,6 +1230,8 @@ def residual_plot(table, x, y): residual_plot(heights, 'MidParent', 'Child') ``` +![](img/13-45.png) + 双亲身高在横轴上,就像原始散点图中一样。 但是现在纵轴显示了残差。 请注意,该图看上去以`y=0`的横线为中心(以深蓝色显示)。 还要注意,绘图没有显示上升或下降的趋势。 我们稍后会观察到所有的回归都是如此。 ### 回归诊断 @@ -1158,6 +1245,10 @@ def regression_diagnostic_plots(table, x, y): regression_diagnostic_plots(heights, 'MidParent', 'Child') ``` +![](img/13-46.png) + +![](img/13-47.png) + 这个残差图表明,线性回归是合理的估计方法。 注意残差关于`y=0`的横线上下对称分布,相当于原始散点图大致上下对称。 还要注意,绘图的垂直延伸,在子女身高最常见的值上相当均匀。 换句话说,除了一些离群点之外,绘图并不是一些地方窄。另一些地方宽。 换句话说,在预测变量的观察范围内,回归的准确性似乎是相同的。 @@ -1168,6 +1259,8 @@ regression_diagnostic_plots(heights, 'MidParent', 'Child') 绘制数据的散点图,通常表明了两个变量之间的关系是否是非线性的。 然而,通常情况下,残差图中比原始散点图中更容易发现非线性。 这通常是因为这两个图的规模:残差图允许我们放大错误,从而更容易找出规律。 +![](img/13-48.png) + 我们的数据是海牛的年龄和长度的数据集,这是一种海洋哺乳动物(维基共享资源图)。 数据在一个名为`dugong`的表中。 年龄以年为单位,长度以米为单位。 因为海牛通常不跟踪他们的生日,年龄是根据他们的牙齿状况等变量来估计的。 ```py @@ -1204,6 +1297,10 @@ correlation(dugong, 'Length', 'Age') regression_diagnostic_plots(dugong, 'Length', 'Age') ``` +![](img/13-49.png) + +![](img/13-50.png) + 虽然你可以发现原始散点图中的非线性,但在残差图中更明显。 在长度的较低一端,残差几乎都是正的;然后他们几乎都是负的;然后在较高一端,残差再次为正。 换句话说,回归估计值过高,然后过低,然后过高。 这意味着使用曲线而不是直线来估计年龄会更好。 @@ -1220,6 +1317,10 @@ regression_diagnostic_plots(dugong, 'Length', 'Age') regression_diagnostic_plots(hybrid, 'acceleration', 'mpg') ``` +![](img/13-51.png) + +![](img/13-52.png) + 注意残差图在加速度的较低一端变得发散。 换句话说,对于较低的加速度,误差的大小的变化比较高值更大。 残差图中比原始的散点图中更容易注意到不均匀的变化。 如果残差图显示`y=0`的横线处的不均匀变化,则在预测变量的范围内,回归的估计不是同等准确的。 @@ -1337,6 +1438,8 @@ np.std(hybrid.column('residual')), np.sqrt(1 - r**2)*np.std(hybrid.column('mpg') scatter_fit(heights, 'MidParent', 'Child') ``` +![](img/13-53.png) + 拟合值的范围在 64 到 71 之间,而所有子女的身高则变化很大,大约在 55 到 80 之间。 为了在数值上验证结果,我们只需要计算双方的一致性。 diff --git a/img/13-1.png b/img/13-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f28a3dc256cf6eb84c2bea0bef50490da4f60ece Binary files /dev/null and b/img/13-1.png differ diff --git a/img/13-10.png b/img/13-10.png new file mode 100644 index 0000000000000000000000000000000000000000..bc411ebdd9eac3c93e0618e5731003c100682754 Binary files /dev/null and b/img/13-10.png differ diff --git a/img/13-11.png b/img/13-11.png new file mode 100644 index 0000000000000000000000000000000000000000..cbf772e2c07d7b95723fb0d4666cac2d3e304d68 Binary files /dev/null and b/img/13-11.png differ diff --git a/img/13-12.png b/img/13-12.png new file mode 100644 index 0000000000000000000000000000000000000000..c270143cec0a6f84e94c83d14cdfc97e1e8bfe95 Binary files /dev/null and b/img/13-12.png differ diff --git a/img/13-13.png b/img/13-13.png new file mode 100644 index 0000000000000000000000000000000000000000..99ff25b3928fd6da820cd9bffbfa322bbf04bbb4 Binary files /dev/null and b/img/13-13.png differ diff --git a/img/13-14.png b/img/13-14.png new file mode 100644 index 0000000000000000000000000000000000000000..4df5ebbb0b2d8975deebeff89e51732e14abc163 Binary files /dev/null and b/img/13-14.png differ diff --git a/img/13-15.png b/img/13-15.png new file mode 100644 index 0000000000000000000000000000000000000000..60b34369631f66dc7cac6de0d1c02e948ccaeb5b Binary files /dev/null and b/img/13-15.png differ diff --git a/img/13-16.png b/img/13-16.png new file mode 100644 index 0000000000000000000000000000000000000000..bd6c856e6ee986055408ca5edfa43aa976100e2b Binary files /dev/null and b/img/13-16.png differ diff --git a/img/13-17.png b/img/13-17.png new file mode 100644 index 0000000000000000000000000000000000000000..e9f23e966beb27b7d66e0d11381f7ce265b80e84 Binary files /dev/null and b/img/13-17.png differ diff --git a/img/13-18.png b/img/13-18.png new file mode 100644 index 0000000000000000000000000000000000000000..bf9bde7ada88590bde35b80ae4ec650d0eb217e8 Binary files /dev/null and b/img/13-18.png differ diff --git a/img/13-19.png b/img/13-19.png new file mode 100644 index 0000000000000000000000000000000000000000..bf9a1c99d9a9bdf01162dcd4486e66b538c30349 Binary files /dev/null and b/img/13-19.png differ diff --git a/img/13-2.png b/img/13-2.png new file mode 100644 index 0000000000000000000000000000000000000000..b4b7e47080e7c35522fa9e9e752d0bc6c55e4dd9 Binary files /dev/null and b/img/13-2.png differ diff --git a/img/13-20.png b/img/13-20.png new file mode 100644 index 0000000000000000000000000000000000000000..b4b7e47080e7c35522fa9e9e752d0bc6c55e4dd9 Binary files /dev/null and b/img/13-20.png differ diff --git a/img/13-21.png b/img/13-21.png new file mode 100644 index 0000000000000000000000000000000000000000..6f201491817771d31d0977f309c50ffc4e1efefa Binary files /dev/null and b/img/13-21.png differ diff --git a/img/13-22.png b/img/13-22.png new file mode 100644 index 0000000000000000000000000000000000000000..f0c3d7df1befaee7ebf0d7945ae79faf5386bbba Binary files /dev/null and b/img/13-22.png differ diff --git a/img/13-23.png b/img/13-23.png new file mode 100644 index 0000000000000000000000000000000000000000..098cb1f637e0093b8dc0251a39f4519dbdd9f4a4 Binary files /dev/null and b/img/13-23.png differ diff --git a/img/13-24.png b/img/13-24.png new file mode 100644 index 0000000000000000000000000000000000000000..1d777ae2b035ba57d1abc36c4565a7a8111a9c51 Binary files /dev/null and b/img/13-24.png differ diff --git a/img/13-25.png b/img/13-25.png new file mode 100644 index 0000000000000000000000000000000000000000..55b5bf067dfeaf3b85f232c1840322c24e13476e Binary files /dev/null and b/img/13-25.png differ diff --git a/img/13-26.png b/img/13-26.png new file mode 100644 index 0000000000000000000000000000000000000000..866f37b7d942e589f0a715203db6d9d26521b0d3 Binary files /dev/null and b/img/13-26.png differ diff --git a/img/13-27.png b/img/13-27.png new file mode 100644 index 0000000000000000000000000000000000000000..e6273af0f7eccc2c58b90243826b6ca8fa35be45 Binary files /dev/null and b/img/13-27.png differ diff --git a/img/13-28.png b/img/13-28.png new file mode 100644 index 0000000000000000000000000000000000000000..56a47751c01e69eb19add5894ff1af49951e4daa Binary files /dev/null and b/img/13-28.png differ diff --git a/img/13-29.png b/img/13-29.png new file mode 100644 index 0000000000000000000000000000000000000000..f893b436da08facd2ea5b1064fcb7a5ec4f3bcad Binary files /dev/null and b/img/13-29.png differ diff --git a/img/13-3.png b/img/13-3.png new file mode 100644 index 0000000000000000000000000000000000000000..174e95593a332dd49f6116e523911c4f9dd4c49a Binary files /dev/null and b/img/13-3.png differ diff --git a/img/13-30.png b/img/13-30.png new file mode 100644 index 0000000000000000000000000000000000000000..23d8b7bcbe27c92100db36b9850421fc21e285ad Binary files /dev/null and b/img/13-30.png differ diff --git a/img/13-31.png b/img/13-31.png new file mode 100644 index 0000000000000000000000000000000000000000..1da558c7b1e1d0f53e23ee9042924dd429f69a6b Binary files /dev/null and b/img/13-31.png differ diff --git a/img/13-32.png b/img/13-32.png new file mode 100644 index 0000000000000000000000000000000000000000..0c48c8f78a1e3b313d5c6118475fb2780f675d14 Binary files /dev/null and b/img/13-32.png differ diff --git a/img/13-33.png b/img/13-33.png new file mode 100644 index 0000000000000000000000000000000000000000..83dd8974ca42f739eec4f7a07b0fea0c9a41f9bf Binary files /dev/null and b/img/13-33.png differ diff --git a/img/13-34.png b/img/13-34.png new file mode 100644 index 0000000000000000000000000000000000000000..fc6cb9188ac6ff1f096791c89336c3e34ae5cb5d Binary files /dev/null and b/img/13-34.png differ diff --git a/img/13-35.png b/img/13-35.png new file mode 100644 index 0000000000000000000000000000000000000000..8fa6630d057d0511510a1087c85006ec22090f9f Binary files /dev/null and b/img/13-35.png differ diff --git a/img/13-36.png b/img/13-36.png new file mode 100644 index 0000000000000000000000000000000000000000..fc6cb9188ac6ff1f096791c89336c3e34ae5cb5d Binary files /dev/null and b/img/13-36.png differ diff --git a/img/13-37.png b/img/13-37.png new file mode 100644 index 0000000000000000000000000000000000000000..8fa6630d057d0511510a1087c85006ec22090f9f Binary files /dev/null and b/img/13-37.png differ diff --git a/img/13-38.png b/img/13-38.png new file mode 100644 index 0000000000000000000000000000000000000000..57e62d349ec7a4c858969213b662fdb3d94ecfb3 Binary files /dev/null and b/img/13-38.png differ diff --git a/img/13-39.png b/img/13-39.png new file mode 100644 index 0000000000000000000000000000000000000000..83dd8974ca42f739eec4f7a07b0fea0c9a41f9bf Binary files /dev/null and b/img/13-39.png differ diff --git a/img/13-4.png b/img/13-4.png new file mode 100644 index 0000000000000000000000000000000000000000..3227908d74c25788791b604a230ac5e31657dd98 Binary files /dev/null and b/img/13-4.png differ diff --git a/img/13-40.png b/img/13-40.png new file mode 100644 index 0000000000000000000000000000000000000000..83dd8974ca42f739eec4f7a07b0fea0c9a41f9bf Binary files /dev/null and b/img/13-40.png differ diff --git a/img/13-41.png b/img/13-41.png new file mode 100644 index 0000000000000000000000000000000000000000..b324237ce41ef0f9cc1e992032df61256ac9a12b Binary files /dev/null and b/img/13-41.png differ diff --git a/img/13-42.png b/img/13-42.png new file mode 100644 index 0000000000000000000000000000000000000000..9af34ac8197c3ac267041bbf13b1d926bc193643 Binary files /dev/null and b/img/13-42.png differ diff --git a/img/13-43.png b/img/13-43.png new file mode 100644 index 0000000000000000000000000000000000000000..64d9c41529f53cb7df2f61db6a69504ee5d7e66b Binary files /dev/null and b/img/13-43.png differ diff --git a/img/13-44.png b/img/13-44.png new file mode 100644 index 0000000000000000000000000000000000000000..74c8706fc626d3136980c4f616f6be4b8fe288e2 Binary files /dev/null and b/img/13-44.png differ diff --git a/img/13-45.png b/img/13-45.png new file mode 100644 index 0000000000000000000000000000000000000000..4f3ef94af73d461a7075549d1f14598325b63687 Binary files /dev/null and b/img/13-45.png differ diff --git a/img/13-46.png b/img/13-46.png new file mode 100644 index 0000000000000000000000000000000000000000..74c8706fc626d3136980c4f616f6be4b8fe288e2 Binary files /dev/null and b/img/13-46.png differ diff --git a/img/13-47.png b/img/13-47.png new file mode 100644 index 0000000000000000000000000000000000000000..4f3ef94af73d461a7075549d1f14598325b63687 Binary files /dev/null and b/img/13-47.png differ diff --git a/img/13-48.jpg b/img/13-48.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7ed374907d195a0ea0b5ef91d43e37acdf3c2b1c Binary files /dev/null and b/img/13-48.jpg differ diff --git a/img/13-49.png b/img/13-49.png new file mode 100644 index 0000000000000000000000000000000000000000..0c917023896415267c01d352e9f8a9f84cbdd3c0 Binary files /dev/null and b/img/13-49.png differ diff --git a/img/13-5.png b/img/13-5.png new file mode 100644 index 0000000000000000000000000000000000000000..221ea2dc66dfa70944cb5dd203a50195937ac2e1 Binary files /dev/null and b/img/13-5.png differ diff --git a/img/13-50.png b/img/13-50.png new file mode 100644 index 0000000000000000000000000000000000000000..95014a636265d436da3fe069e240367e65bb2363 Binary files /dev/null and b/img/13-50.png differ diff --git a/img/13-51.png b/img/13-51.png new file mode 100644 index 0000000000000000000000000000000000000000..94569578d4e69cdfab958f3fd904f3a528e9a6cd Binary files /dev/null and b/img/13-51.png differ diff --git a/img/13-52.png b/img/13-52.png new file mode 100644 index 0000000000000000000000000000000000000000..b142cbafa872d5076ed0be007aa984440fa7ca70 Binary files /dev/null and b/img/13-52.png differ diff --git a/img/13-53.png b/img/13-53.png new file mode 100644 index 0000000000000000000000000000000000000000..74c8706fc626d3136980c4f616f6be4b8fe288e2 Binary files /dev/null and b/img/13-53.png differ diff --git a/img/13-6.png b/img/13-6.png new file mode 100644 index 0000000000000000000000000000000000000000..f5f898b88d299f73672f3363da9adc8592d8f200 Binary files /dev/null and b/img/13-6.png differ diff --git a/img/13-7.png b/img/13-7.png new file mode 100644 index 0000000000000000000000000000000000000000..f5219f92242d4d7ca8426c19f6f319cca6baf6e9 Binary files /dev/null and b/img/13-7.png differ diff --git a/img/13-8.png b/img/13-8.png new file mode 100644 index 0000000000000000000000000000000000000000..610b78ddd82e02b7e0c3b47bcb0ad80168f9c997 Binary files /dev/null and b/img/13-8.png differ diff --git a/img/13-9.png b/img/13-9.png new file mode 100644 index 0000000000000000000000000000000000000000..eeb5bc3e4d787a691bc03fb3a17538e49092395a Binary files /dev/null and b/img/13-9.png differ