提交 a51c29c1 编写于 作者: W wizardforcel

ch14pic

上级 77b3625d
......@@ -46,6 +46,8 @@
draw_and_compare(4, -5, 10)
```
![](img/14-1.png)
实际上,我们当然不会看到真实直线。 模拟结果表明,如果回归模型看起来合理,并且如果我们拥有大型样本,那么回归线就是真实直线的一个良好近似。
## 真实斜率的推断
......@@ -80,6 +82,8 @@ slope(baby, 'Gestational Days', 'Birth Weight')
这里是来自样本的原始散点图,以及自举重采样过程的四个复制品。 请注意,重采样散点图通常比原始图稀疏一点。 这是因为一些原始的点没有在样本中被选中。
![](img/14-3.png)
### 估计真实斜率
我们可以多次自举散点图,并绘制穿过每个自举图的回归线。 每条线都有一个斜率。 我们可以简单收集所有的斜率并绘制经验直方图。 回想一下,在默认情况下,`sample`方法带放回地随机抽取,次数与表中的行数相同。 也就是说,`sample`默认生成一个自举样本。
......@@ -93,6 +97,8 @@ for i in np.arange(5000):
Table().with_column('Bootstrap Slopes', slopes).hist(bins=20)
```
![](img/14-4.png)
然后,我们可以使用`percentile `方法,为真实直线的斜率构建约 95% 置信区间。 置信区间从 5000 个自举斜率的第 2.5 百分位数,延伸到第 97.5 百分位数。
```py
......@@ -142,6 +148,8 @@ Approximate 95%-confidence interval for the true slope:
0.378663152966 0.555005146304
```
![](img/14-5.png)
现在我们有一个函数,可以自动完成估计在回归模型中展示斜率的过程,我们也可以在其他变量上使用它。
例如,我们来看看出生体重与母亲身高的关系。 更高的女性往往有更重的婴儿吗?
......@@ -152,6 +160,8 @@ Approximate 95%-confidence interval for the true slope:
scatter_fit(baby, 'Maternal Height', 'Birth Weight')
```
![](img/14-6.png)
```py
correlation(baby, 'Maternal Height', 'Birth Weight')
0.20370417718968034
......@@ -166,6 +176,8 @@ Approximate 95%-confidence interval for the true slope:
1.0403083964 1.91576886223
```
![](img/14-7.png)
真实斜率的 95% 置信区间,从约 1 延伸到约 1.9 盎司每英寸。
### 真实斜率可能为 0 嘛?
......@@ -182,6 +194,8 @@ Approximate 95%-confidence interval for the true slope:
draw_and_compare(0, 10, 25)
```
![](img/14-8.png)
运行模拟几次,每次保持真实直线的斜率为 0 。你会注意到,虽然真实直线的斜率为 0,但回归线的斜率通常不为 0。回归线有时会向上倾斜,有时会向下倾斜,每次都给我们错误的印象,即这两个变量是相关的。
为了确定我们所看到的斜率是否真实,我们想测试以下假设:
......@@ -209,6 +223,8 @@ slope(baby, 'Maternal Age', 'Birth Weight')
scatter_fit(baby, 'Maternal Age', 'Birth Weight')
```
![](img/14-9.png)
我们可以使用`bootstrap_slope`来估计真实直线的斜率。 计算表明,真实斜率的约 95% 的自举置信区间左端为负,右端为正 - 换句话说,区间包含 0。
```py
......@@ -218,6 +234,8 @@ Approximate 95%-confidence interval for the true slope:
-0.104335243815 0.272791852339
```
![](img/14-10.png)
因为区间包含 0,所以我们不能拒绝原假设,母亲年龄与新生儿出生体重之间的真实线性关系的斜率为 0。基于此分析,使用母亲年龄作为预测变量,基于回归模型预测出生体重是不明智的。
## 预测区间
......@@ -232,6 +250,7 @@ Approximate 95%-confidence interval for the true slope:
下图显示了预测位于回归线上的位置。红线是`x = 300`
![](img/14-11.png)
红线与回归线的相交点的高度是孕期天数 300 的拟合值。
......@@ -258,6 +277,8 @@ fit_300
为此,我们必须生成新的样本。 我们可以像上一节那样,通过自举散点图来实现。 然后,我们为每个散点图的复制品拟合回归线,并根据每一行进行预测。 下图显示了 10 条这样的线,以及孕期天数 300 对应的出生体重预测。
![](img/14-12.png)
```py
lines
```
......@@ -330,6 +351,8 @@ Approximate 95%-confidence interval:
127.300774171 131.361729528
```
![](img/14-13.png)
上图显示了基于 5000 次重复的自举过程,孕期天数 300 的预测出生体重的自举经验直方图。经验分布大致是正泰的。
我们已经通过预测的“中间 95%”,即预测的第 2.5 百分位数到第 97.5 百分位数的区间,构建了分数的约 95% 的预测区间。 区间范围从大约 127 到大约 131。基于原始样本的预测是大约 129,接近区间的中心。
......@@ -345,6 +368,8 @@ Approximate 95%-confidence interval:
121.177089926 123.291373304
```
![](img/14-14.png)
请注意,这个区间比孕妇天数 300 的预测区间更窄。 让我们来调查其原因。
孕妇天数均值约为 279 天:
......@@ -358,6 +383,8 @@ np.mean(baby.column('Gestational Days'))
你可以在下面的图中看到这一点,它显示了 10 个自举复制品中每一个的`x = 285``x = 300`的预测值。 通常情况下,直线在`x = 300`处比`x = 285`处相距更远,因此`x = 300`的预测更加可变。
![](img/14-15.png)
### 注意事项
我们在本章中进行的所有预测和测试,都假设回归模型是成立的。 具体来说,这些方法假设,散点图中的点由直线上的点产生,然后通过添加随机正态噪声将它们推离直线。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册