提交 77d3b63b 编写于 作者: W wizardforcel

ch12.

上级 c21f1042
......@@ -558,9 +558,257 @@ within_3_sd.num_rows/united.num_rows
0.9790235081374322
```
延误时间的直方图如下所示,横轴以标准单位表示。 从上表中可以看出,右边的尾巴一直延伸到`z = 14.27 `个标准单位(580 分钟)。 在`z = -3``z = 3`范围外的直方图区域大约是 2%,加起来非常小,在直方图中几乎不可见。
延误时间的直方图如下所示,横轴以标准单位表示。 从上表中可以看出,右边的尾巴一直延伸到`z = 14.27 `个标准单位(580 分钟)。 在`z = -3``z = 3`范围外的直方图面积大约是 2%,加起来非常小,在直方图中几乎不可见。
```py
united.hist('Delay (Standard Units)', bins=np.arange(-5, 15.5, 0.5))
plots.xticks(np.arange(-6, 17, 3));
```
## 标准差和正态曲线
我们知道均值是直方图的平衡点。 标准差与平均值不同,通常不容易通过查看直方图来识别。
然而,有一种分布形状,它的标准差与平均值几乎一样清晰可辨。 这是钟形分布。 本节将查看该形状,因为它经常出现在概率直方图中,也出现在一些数据的直方图中。
### 数据的大致钟形的直方图
让我们看看母亲的身高分布,它们在我们熟悉的 1174 对母亲和新生儿的样本中。母亲的平均身高为 64 英寸,SD 为 2.5 英寸。 与篮球运动员的身高不同,母亲身高关于钟形曲线中的平均值对称分布。
```py
baby = Table.read_table('baby.csv')
heights = baby.column('Maternal Height')
mean_height = np.round(np.mean(heights), 1)
mean_height
64.0
sd_height = np.round(np.std(heights), 1)
sd_height
2.5
baby.hist('Maternal Height', bins=np.arange(55.5, 72.5, 1), unit='inch')
positions = np.arange(-3, 3.1, 1)*sd_height + mean_height
plots.xticks(positions);
```
上面单元格中的最后两行代码更改了横轴的标签。 现在,对于`z=0, ±1, ±2, ±3`,标签对应于“标签上下`z`个标准差”。 由于分布的形状,“中心”具有明确的含义,在 64 处清晰可见。
### 如何定位钟形曲线上的 SD
要看 SD 如何与曲线相关,请从曲线顶部开始,向右看。 请注意,曲线有一个地方,从看起来像“倒扣的杯子”,变为“朝右的杯子”。 在形式上,曲线有一个拐点。 这个点高于均值一个 SD。 这是`z = 1`的点,即“均值加一个标准差”,为 66.5 英寸。
在均值的左边也对称,拐点在`z = -1`处,也就是“均值减一个标准差”,为 61.5 英寸。
一般来说,对于钟形分布,SD 是均值和任一侧的拐点之间的距离。
### 标准正态曲线
除了轴上的标签,我们所看到的所有钟形直方图,看起来基本相同。 的确,通过适当地重新标记坐标轴,从所有这些曲线中,实际上只能绘制一条曲线。
为了绘制这条基本曲线,我们将使用标准单位,我们可以将每个列表转换成它。所得到的曲线因此被称为标准正态曲线。
标准正态曲线的方程令人印象深刻。 但是现在,最好把它看作是变量直方图的平滑轮廓,变量以标准单位测量并具有钟形分布。
![](http://latex.codecogs.com/gif.latex?%5Cphi%28z%29%20%3D%20%7B%5Cfrac%7B1%7D%7B%5Csqrt%7B2%20%5Cpi%7D%7D%7D%20e%5E%7B-%5Cfrac%7B1%7D%7B2%7Dz%5E2%7D%2C%20%7E%7E%20-%5Cinfty%20%3C%20z%20%3C%20%5Cinfty)
与往常一样,当您检查新的直方图时,首先查看横轴。在标准正态曲线的横轴上,这些值是标准单位。
这里是曲线的一些属性。有些是通过观察显而易见的,有些则需要大量的数学才能建立起来。
曲线下面的总面积是1.所以你可以把它看作是绘制为密度标度的直方图。
曲线是对称的。所以如果一个变量具有这个分布,它的平均值和中位数都是 0。
曲线的拐点在 -1 和 +1 处。
如果一个变量具有这种分布,那么它的 SD 是 1。正态曲线是 SD 清晰可辨的极少数分布之一。
由于我们将曲线视为平滑的直方图,因此我们希望用曲线下方的面积来表示数据总量的比例。
平滑曲线下的面积通常是通过微积分来计算的,使用一种称为积分的方法。然而,一个数学的事实是,标准的正态曲线不能通过任何微积分方式来积分。
因此,曲线下方的面积必须近似。这就是几乎所有的统计教科书,都带有曲线下方的面积的原因。这也是所有统计系统,包括 Python 模块在内,都包含提供这些面积的优秀近似的方法的原因。
```py
from scipy import stats
```
### 标准正态的累积分布函数(CDF)
用于求出正态曲线下的面积的基本函数是`stats.norm.cdf`。 它接受一个数值参数,并返回曲线下,该数值的左侧的所有面积。 它在形式上被称为标准正态曲线的“累积分布函数”。 在口语里缩写为 CDF。
让我们使用这个函数来求出标准正态曲线下,`z=1`左侧的面积。
阴影区域的数值可以通过调用`stats.norm.cdf`来求出。
```py
stats.norm.cdf(1)
0.84134474606854293
```
这大概是 84%。 现在我们可以使用曲线的对称性,以及曲线下面的总面积为 1 事实,来求出其他面积。
`z = 1`右侧的面积大概是`100% - 84% = 16%`
```py
1 - stats.norm.cdf(1)
0.15865525393145707
```
`z = -1``z = 1`之间的面积可以用几种不同的方式来计算。 它是下面的曲线下方的金色区域。
例如,我们可以将面积计算为“`100% -`两个相等的尾巴”,结果大致是`100% - 2X16% = 68%`
或者我们可以注意到,`z = 1``z = -1`之间的区域等于`z = 1`左边的所有区域,减去`z = -1`左边的所有区域。
```py
stats.norm.cdf(1) - stats.norm.cdf(-1)
0.68268949213708585
```
通过类似的计算,我们看到`-2``2`之间的区域大约是 95%。
```py
stats.norm.cdf(2) - stats.norm.cdf(-2)
0.95449973610364158
```
换句话说,如果一个直方图大致是钟形,那么在“均值上下两个标准差”范围内的数据比例大约是 95%。
这比切比雪夫的下界 75% 还要多。 切比雪夫边界较弱,因为它必须适用于所有的分布。 如果我们知道一个分布是正态的,那么我们就有很好的比例近似,而不仅仅是边界。
下表比较了我们对所有分布和正态分布的了解。 请注意,当`z = 1`时,切比雪夫的边界是正确的,但没有启发性。
| Percent in Range | All Distributions: Bound | Normal Distribution: Approximation |
| --- | --- | --- |
| 均值上下一个标准差 | 至少 0% | 约 68% |
| 均值上下两个标准差 | 至少 75% | 约 95% |
| 均值上下三个标准差 | 至少 88.888...% | 约 99.73% |
## 中心极限定律
我们在本课程中看到的很少数据直方图是钟形的。 当我们遇到一个钟形的分布时,它几乎总是一个基于随机样本的统计量的经验直方图。
下面的例子显示了两个非常不同的情况,其中在这样的直方图中出现了近似的钟形。
### 轮盘赌的净收益
在前面的章节中,如果我们在轮盘的不同轮次上重复下相同的赌注,那么我们所花费的总金额的粗略形状就会成为钟形。
```py
wheel
```
| Pocket | Color |
| --- | --- |
| 0 | green |
| 00 | green |
| 1 | red |
| 2 | black |
| 3 | red |
| 4 | black |
| 5 | red |
| 6 | black |
| 7 | red |
| 8 | black |
(省略了 28 行)
回想一下,红色的下注返回相等的钱,1 比 1。我们定义的函数`red_winnings`返回对红色下注一美元的净收益。具体来说,该函数将颜色作为参数,如果颜色为红色,则返回 1。 对于所有其他颜色,它返回 -1。
```py
def red_winnings(color):
if color == 'red':
return 1
else:
return -1
```
`red`表展示了红色情况下,每个口袋的奖金。
```py
red = wheel.with_column(
'Winnings: Red', wheel.apply(red_winnings, 'Color')
)
red
```
| Pocket | Color | Winnings: Red |
| --- | --- | --- |
| 0 | green | -1 |
| 00 | green | -1 |
| 1 | red | 1 |
| 2 | black | -1 |
| 3 | red | 1 |
| 4 | black | -1 |
| 5 | red | 1 |
| 6 | black | -1 |
| 7 | red | 1 |
| 8 | black | -1 |
(省略了 28 行)
您在赌注上的净收益`Winnings: Red`的随机抽样。 有 1/18 的几率赚一美元,20/38 的几率损失一美元。 这个概率分布显示在下面的直方图中。
```py
red.select('Winnings: Red').hist(bins=np.arange(-1.5, 1.6, 1))
```
现在假设你多次对红色下注。 您的净收益将是来自上述分布的,多个带放回随机抽样的总和。
这将需要一些数学,来列出净收益的所有可能值,以及所有的记录。 我们不会那样做;相反,我们将通过模拟来逼近概率分布,就像我们在这个过程中一直做的那样。
下面的代码模拟你的净收益,如果你在轮盘赌的 400 个不同的轮次中,对红色下注一美元。
```py
num_bets = 400
repetitions = 10000
net_gain_red = make_array()
for i in np.arange(repetitions):
spins = red.sample(num_bets)
new_net_gain_red = spins.column('Winnings: Red').sum()
net_gain_red = np.append(net_gain_red, new_net_gain_red)
results = Table().with_column(
'Net Gain on Red', net_gain_red
)
results.hist(bins=np.arange(-80, 50, 6))
```
这是一个大致钟形的直方图,即使我们正在绘制的分布并不是钟形。
中心。分布集中在`-$20`附近。 要知道为什么,请注意,您的奖金在 18/38 左右的下注中为 1 美元,剩下的 20/38 则为负一美元。 所以每个一美元赌注的平均奖金大概是 -5.26 美分:
```py
average_per_bet = 1*(18/38) + (-1)*(20/38)
average_per_bet
-0.05263157894736842
```
因此,在 400 次下注中,你预计净收益大约是 21 美元。
```py
400 * average_per_bet
-21.052631578947366
```
为了确认,我们可以计算 10,000 次模拟净收益的平均值:
```py
np.mean(results.column(0))
-20.8992
```
延展。让你的眼睛沿着曲线从中心开始,注意到拐点在 0 附近。在钟形曲线上,SD 是中心到拐点的距离。 中心大概是 -20 美元,这意味着分布的标准差大约是 20 美元。
在下一节中,我们将看到 20 美元是怎么来的。 现在,让我们通过简单计算 10,000 个模拟净收益的 SD 来证实我们的观察:
```py
np.std(results.column(0))
20.043159415621083
```
总结。 400 次下注的净收益是每个单独赌注的 400 个奖金的总和。 这个总和的概率分布近似正态,我们可以近似它的均值和标准差。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册