Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
data8-textbook-zh
提交
827040e8
D
data8-textbook-zh
项目概览
OpenDocCN
/
data8-textbook-zh
10 个月 前同步成功
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
data8-textbook-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
827040e8
编写于
12月 30, 2017
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ch9
上级
d9ee4d44
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
88 addition
and
12 deletion
+88
-12
9.md
9.md
+88
-12
未找到文件。
9.md
浏览文件 @
827040e8
# 九、经验分布
> 原文:[Empirical Distributions](https://github.com/data-8/textbook/tree/gh-pages/chapters/09)
> 译者:[飞龙](https://github.com/wizardforcel)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
> 自豪地采用[谷歌翻译](https://translate.google.cn/)
大部分数据科学都涉及来自大型随机样本的数据。 在本节中,我们将研究这些样本的一些属性。
我们将从一个简单的实验开始:多次掷骰子并跟踪出现的点数。
`die `
表包含骰子面上的点数。 所有的数字只出现一次,因为我们假设骰子是平等的。
...
...
@@ -223,11 +231,11 @@ wheel
(省略了 28 行)
您
可以对轮盘赌桌上展示的几个预先指定的口袋下注。 如果你对“红色”下注,如果球落在红色的口袋里,你就赢了。
你
可以对轮盘赌桌上展示的几个预先指定的口袋下注。 如果你对“红色”下注,如果球落在红色的口袋里,你就赢了。
红色的下注返回相等的钱。 也就是说,它支付一比一。为了理解这是什么意思,假设你在“红色”下注一美元。 第一件事情发生之前,即使在车轮旋转之前,你必须交出你的一美元。 如果球落在绿色或黑色的口袋里,你就失去它了。 如果球落在红色的口袋里,你会把你的钱拿回来(让你不输不赢),再加上另外一美元的奖金。
函数
`red_winnings`
以一个颜色作为参数,如果颜色是红色,则返回
`1`
。 对于所有其他颜色,它返回
`-1`
。 我们将
`red_winnings`
应用于
`wheel`
的
`Color`
列,来获得新的表
`bets`
,如果
您
对红色下注一美元,它显示每个口袋的净收益。
函数
`red_winnings`
以一个颜色作为参数,如果颜色是红色,则返回
`1`
。 对于所有其他颜色,它返回
`-1`
。 我们将
`red_winnings`
应用于
`wheel`
的
`Color`
列,来获得新的表
`bets`
,如果
你
对红色下注一美元,它显示每个口袋的净收益。
```
py
def
red_winnings
(
color
):
...
...
@@ -271,7 +279,7 @@ one_spin
| --- | --- |
| 14 | red | 1 |
这轮的颜色是
`Color`
列中的值。 无论
您
的赌注如何,结果可能是红色,绿色或黑色。 要看看这些事件发生的频率,我们可以模拟许多这样的单独轮次,并绘制出我们所看到的颜色的条形图。 (我们可以称之为经验条形图。)
这轮的颜色是
`Color`
列中的值。 无论
你
的赌注如何,结果可能是红色,绿色或黑色。 要看看这些事件发生的频率,我们可以模拟许多这样的单独轮次,并绘制出我们所看到的颜色的条形图。 (我们可以称之为经验条形图。)
为了实现它,我们可以使用
`for`
循环。 我们在这里选择了重复 5000 次,但是当你运行这个单元格时,你可以改变它。
...
...
@@ -295,18 +303,18 @@ Table().with_column('Color', colors)\
38 个口袋里有 18 个是红色的,每个口袋都是等可能的。 因此,在 5000 次模拟中,我们预计大致(但可能不是完全)看到
`18/38*5000`
或者 2,368 次红色。模拟证明了这一点。
在模拟中,我们也记录了你的奖金。 这些经验直方图显示了,
您
对红色下注的不同结果的(近似)几率。
在模拟中,我们也记录了你的奖金。 这些经验直方图显示了,
你
对红色下注的不同结果的(近似)几率。
```
py
Table
().
with_column
(
'Winnings: Red'
,
winnings_on_red
)
\
.
hist
(
bins
=
np
.
arange
(
-
1.55
,
1.65
,
.
1
))
```
每个模拟的唯一可能的结果是,
您
赢了一美元或输了一美元,这反映在直方图中。 我们也可以看到,你赢的次数要比输的次数少一点。 你喜欢这个赌博策略吗?
每个模拟的唯一可能的结果是,
你
赢了一美元或输了一美元,这反映在直方图中。 我们也可以看到,你赢的次数要比输的次数少一点。 你喜欢这个赌博策略吗?
### 多次游戏
大多数轮盘赌玩家玩好几轮。 假设
您
在 200 次独立轮次反复下注一美元。 你总共会赚多少钱?
大多数轮盘赌玩家玩好几轮。 假设
你
在 200 次独立轮次反复下注一美元。 你总共会赚多少钱?
这里是一套 200 轮的模拟。
`spins`
表包括所有 200 个赌注的结果。 你的净收益是
`Winnings: Red`
列中所有 +1 和 -1 的和。
...
...
@@ -390,7 +398,7 @@ Table().with_columns(
).
hist
(
bins
=
np
.
arange
(
-
200
,
200
,
20
))
```
横轴上 0 的位置表明,无论
您选择哪种赌注,您
都更有可能赔钱而不是赚钱。在两个直方图中,不到 50% 的区域在 0 的右侧。
横轴上 0 的位置表明,无论
你选择哪种赌注,你
都更有可能赔钱而不是赚钱。在两个直方图中,不到 50% 的区域在 0 的右侧。
然而,分割的赌注赚钱几率更大,赚取超过 50 美元的机会也是如此。 金色直方图有很多区域在五十美元的右侧,而蓝色直方图几乎没有。 那么你应该对分割下注吗?
...
...
@@ -482,13 +490,13 @@ np.median(united.sample(1000).column('Delay'))
### 模拟统计量
我们将使用以下步骤来模拟样本中位数。
您
可以用任何其他样本量来替换 1000 的样本量,并将样本中位数替换为其他统计量。
我们将使用以下步骤来模拟样本中位数。
你
可以用任何其他样本量来替换 1000 的样本量,并将样本中位数替换为其他统计量。
第一步:生成一个统计量。 抽取大小为 1000 的随机样本,并计算样本的中位数。 注意中位数的值。
第二步:生成更多的统计值。 重复步骤 1 多次,每次重新抽样。
第三步:结果可视化。 在第二步结束时,
您将会记录许多样本中位数,每个中位数来自不同的样本。 您可以在表格中显示所有的中位数。 您
也可以使用直方图来显示它们 - 这是统计量的经验直方图。
第三步:结果可视化。 在第二步结束时,
你将会记录许多样本中位数,每个中位数来自不同的样本。 你可以在表格中显示所有的中位数。 你
也可以使用直方图来显示它们 - 这是统计量的经验直方图。
我们现在执行这个计划。 正如在所有的模拟中,我们首先创建一个空数组,我们在其中收集我们的结果。
...
...
@@ -558,7 +566,7 @@ Table().with_column('Sample Median', medians).hist(bins=np.arange(0.5, 5, 1))
目标是估计数字
`N`
。 这是未知的参数。
假设你观察一些飞机并记下他们的序列号。
您
如何使用这些数据来猜测
`N`
的值? 用于估计的自然和简单的统计量,就是观察到的最大的序列号。
假设你观察一些飞机并记下他们的序列号。
你
如何使用这些数据来猜测
`N`
的值? 用于估计的自然和简单的统计量,就是观察到的最大的序列号。
让我们看看这个统计量如何用于估计。 但首先是另一个简化:现在一些历史学家估计,德国的飞机制造业生产了近 10 万架不同类型的战机,但在这里我们只能想象一种。 这使得假设 1 更易于证明。
...
...
@@ -593,7 +601,7 @@ serialno.sample(30).column(0).max()
与所有涉及随机抽样的代码一样,运行该单元几次;来查看变化。你会发现,即使只有 300 个观测值,最大的序列号通常在 250-300 范围内。
原则上,最大的序列号可以像 1 那样小,如果你不幸看到了 30 次 1 号机。如果
您
至少观察到一次 300 号机,它可能会增大到 300。但通常情况下,它似乎处于非常高的 200 以上。看起来,如果你使用最大的观测序列号作为你对总数的估计,你不会有太大的错误。
原则上,最大的序列号可以像 1 那样小,如果你不幸看到了 30 次 1 号机。如果
你
至少观察到一次 300 号机,它可能会增大到 300。但通常情况下,它似乎处于非常高的 200 以上。看起来,如果你使用最大的观测序列号作为你对总数的估计,你不会有太大的错误。
### 模拟统计
...
...
@@ -644,7 +652,7 @@ Table().with_column('Max Serial Number', maxes).hist(bins = every_ten)
### 良好的近似
我们前面提到过,如果生成所有可能的样本,并计算每个样本的统计量,那么
您
将准确了解统计量可能有多么不同。事实上,你将会完整地列举统计量的所有可能值及其所有概率。
我们前面提到过,如果生成所有可能的样本,并计算每个样本的统计量,那么
你
将准确了解统计量可能有多么不同。事实上,你将会完整地列举统计量的所有可能值及其所有概率。
换句话说,你将得到统计量的概率分布和概率直方图。
...
...
@@ -661,3 +669,71 @@ Table().with_column('Max Serial Number', maxes).hist(bins = every_ten)
确实,统计量的概率分布包含比经验分布更准确的统计量信息。 但是,正如在这个例子中一样,通常经验分布所提供的近似值,足以让数据科学家了解统计量可以变化多少。 如果你有一台计算机,经验分布更容易计算。 因此,当数据科学家试图理解统计的性质时,通常使用经验分布而不是精确的概率分布。
### 参数的不同估计
这里举一个例子来说明这一点。 到目前为止,我们已经使用了最大的观测序号作为飞机总数的估计。 但还有其他可能的估计,我们现在将考虑其中之一。
这个估计的基本思想是观察到的序列号的平均值可能在1到
`N`
之间。 因此,如果
`A`
是平均值,那么:
![](
http://latex.codecogs.com/gif.latex?A%20%7E%20%5Capprox%20%7E%20%5Cfrac%7BN%7D%7B2%7D%20%7E%7E%7E%20%5Cmbox%7Band%20so%7D%20%7E%7E%7E%20N%20%5Capprox%202A
)
因此,可以使用一个新的统计量化来估计飞机总数:取观测到的平均序列号并加倍。
与使用最大的观测数据相比,这种估计方法如何? 计算新统计量的概率分布并不容易。 但是和以前一样,我们可以模拟它来近似得到概率。 我们来看看基于重复抽样的统计量的经验分布。 为了便于比较,重复次数选择为 750,与之前的模拟相同。
```
py
maxes
=
make_array
()
twice_ave
=
make_array
()
for
i
in
np
.
arange
(
repetitions
):
sampled_numbers
=
serialno
.
sample
(
sample_size
)
new_max
=
sampled_numbers
.
column
(
0
).
max
()
maxes
=
np
.
append
(
maxes
,
new_max
)
new_twice_ave
=
2
*
np
.
mean
(
sampled_numbers
.
column
(
0
))
twice_ave
=
np
.
append
(
twice_ave
,
new_twice_ave
)
results
=
Table
().
with_columns
(
'Repetition'
,
np
.
arange
(
1
,
repetitions
+
1
),
'Max'
,
maxes
,
'2*Average'
,
twice_ave
)
results
```
| Repetition | Max | 2
*
Average |
| --- | --- |
| 1 | 296 | 312.067 |
| 2 | 283 | 290.133 |
| 3 | 290 | 250.667 |
| 4 | 296 | 306.8 |
| 5 | 298 | 335.533 |
| 6 | 281 | 240 |
| 7 | 300 | 317.267 |
| 8 | 295 | 322.067 |
| 9 | 296 | 317.6 |
| 10 | 299 | 308.733 |
(省略了 740 行)
请注意,与所观察到的最大数字不同,新的估计值(“平均值的两倍”)可能会高估飞机的数量。 当观察到的序列号的平均值接近于
`N`
而不是
`1`
时,就会发生这种情况。
下面的直方图显示了两个估计的经验分布。
```
py
results
.
drop
(
0
).
hist
(
bins
=
every_ten
)
```
你可以看到,原有方法几乎总是低估; 形式上,我们说它是有偏差的。 但它的变异性很小,很可能接近真正的飞机总数。
新方法高估了它,和低估的频率一样,因此从长远来看,平均而言大致没有偏差。 然而,它比旧的估计更可变,因此容易出现较大的绝对误差。
这是一个偏差 - 变异性权衡的例子,在竞争性估计中并不罕见。 你决定使用哪种估计取决于对你最重要的误差种类。 就敌机而言,低估总数可能会造成严重的后果,在这种情况下,你可能会选择使用更加可变的方法,它一半几率都是高估的。 另一方面,如果高估导致了防范不存在的飞机的不必要的高成本,那么你可能会对低估的方法感到满意。
### 技术注解
事实上,“两倍均值”不是无偏的。平均而言,它正好高估了 1。例如,如果
`N`
等于 3,来自
`1,2,3`
的抽取结果的均值是
`2`
,
`2 x 2 = 4`
,它比
`N`
多了 1。“两倍均值”减 1 是
`N`
的无偏估计量。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录