Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
data8-textbook-zh
提交
77190615
D
data8-textbook-zh
项目概览
OpenDocCN
/
data8-textbook-zh
9 个月 前同步成功
通知
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 搜索 >>
提交
77190615
编写于
1月 01, 2018
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ch11.
上级
833d4aa6
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
142 addition
and
0 deletion
+142
-0
11.md
11.md
+142
-0
未找到文件。
11.md
浏览文件 @
77190615
...
...
@@ -496,4 +496,146 @@ intervals.where('Left', are.below(pop_median)).where('Right', are.above(pop_medi
你可以用一个不同的值代替 95%,只要它不是 100。假设你用 80% 代替了 95%,并保持样本大小为 500。那么你的估计量的区间将比我们这里的模拟要短,因为“中间 80%”是比“中间 95%”更小的范围。只有大约 80% 的区间将包含参数。
## 置信区间
我们已经开发了一种方法,通过使用随机抽样和自举来估计参数。我们的方法产生一个估计区间,来解释随机样本的机会变异。通过提供一个估计区间而不是一个估计量,我们给自己一些回旋的余地。
在前面的例子中,我们看到我们的估计过程在 95% 的时间内产生了一个良好的区间,一个“良好”的区间就是包含这个参数的区间。对于这个过程的结果很好,我们说我们有 95% 的置信度(信心)。我们的估计区间称为参数的 95% 置信区间,95% 称为区间的置信度。
前一个例子中的情况有点不寻常。因为我们碰巧知道参数的值,所以我们能够检查一个区间是好还是不好,这反过来又帮助我们看到,我们的估计过程每 100 次中有 95 次捕获了参数。
但通常情况下,数据科学家不知道参数的值。这就是他们首先想要估计的原因。在这种情况下,他们通过使用一些方法,类似我们开发的方法,获得未知参数的估计区间。由于统计理论,和我们所看到的演示,数据科学家可以确信,他们产生区间的过程,会以已知百分比的几率,产生一个良好的区间。
### 总体中位数的置信区间:自举百分位数方法
现在我们使用自举法来估计未知总体的中位数。 数据来自大型医院系统中的新生儿样本; 我们将把它看作是一个简单的随机样本,虽然抽样分多个阶段完成。 Deborah Nolan 和 Terry Speed 的 Stat Labs 拥有一个大数据集的详细信息,这个样本是从中抽取的。
`baby`
表中包含以下母婴偶对的数量:婴儿的出生体重(盎司),孕期天数,母亲的年龄,母亲身高(英寸),孕期体重(磅),母亲是否在孕期吸烟。
```
py
baby
=
Table
.
read_table
(
'baby.csv'
)
baby
```
| Birth Weight | Gestational Days | Maternal Age | Maternal Height | Maternal Pregnancy Weight | Maternal Smoker |
| --- | --- |
| 120 | 284 | 27 | 62 | 100 | False |
| 113 | 282 | 33 | 64 | 135 | False |
| 128 | 279 | 28 | 64 | 115 | True |
| 108 | 282 | 23 | 67 | 125 | True |
| 136 | 286 | 25 | 62 | 93 | False |
| 138 | 244 | 33 | 62 | 178 | False |
| 132 | 245 | 23 | 65 | 140 | False |
| 120 | 289 | 25 | 62 | 125 | False |
| 143 | 299 | 30 | 66 | 136 | True |
| 140 | 351 | 27 | 68 | 120 | False |
(省略了 1164 行)
出生体重是新生儿健康的一个重要因素 - 较小的婴儿比较大的婴儿在初期需要更多的医疗护理。 因此,在婴儿出生前估计出生体重是有帮助的。 一种方法是检查出生体重和怀孕天数之间的关系。
这种关系的一个简单的衡量标准是出生体重与怀孕天数的比值。
`ratios`
表包含
`baby`
的前两列,以及一列
`ratios`
。 这一列的第一个条目按以下方式计算:
![](
http://latex.codecogs.com/gif.latex?%5Cfrac%7B120%7E%5Cmbox%7Bounces%7D%7D%7B284%7E%5Cmbox%7Bdays%7D%7D%20%7E%5Capprox%20%7E%200.4225%7E%20%5Cmbox%7Bounces%20per%20day%7D
)
```
py
ratios
=
baby
.
select
(
'Birth Weight'
,
'Gestational Days'
).
with_column
(
'Ratio BW/GD'
,
baby
.
column
(
'Birth Weight'
)
/
baby
.
column
(
'Gestational Days'
)
)
ratios
```
| Birth Weight | Gestational Days | Ratio BW/GD |
| --- | --- |
| 120 | 284 | 0.422535 |
| 113 | 282 | 0.400709 |
| 128 | 279 | 0.458781 |
| 108 | 282 | 0.382979 |
| 136 | 286 | 0.475524 |
| 138 | 244 | 0.565574 |
| 132 | 245 | 0.538776 |
| 120 | 289 | 0.415225 |
| 143 | 299 | 0.478261 |
| 140 | 351 | 0.39886 |
(省略了 1164 行)
```
py
ratios
.
select
(
'Ratio BW/GD'
).
hist
()
```
一眼望去,直方图看起来相当对称,密度在 4opd 到 4.5opd 的区间内是最大的。 但仔细一看,就可以看出一些比例相当大。 比率的最大值刚好超过 0.78opd,几乎是通常值的两倍。
```
py
ratios
.
sort
(
'Ratio BW/GD'
,
descending
=
True
).
take
(
0
)
```
| Birth Weight | Gestational Days | Ratio BW/GD |
| --- | --- |
| 116 | 148 | 0.783784 |
中位数提供了通常比例的感觉,因为它不受非常大或非常小的比例的影响。 样本(比例)的中位数约为 0.429opd。
```
py
np
.
median
(
ratios
.
column
(
2
))
0.42907801418439717
```
但是总体中位数是多少? 我们不知道,所以我们会估计它。
我们的方法将与前一节完全相同。 我们将自举样本 5000 次,结果是 5000 个中位数的估计量。 我们 95% 的置信区间将是我们所有估计量的“中间 95%”。
回忆前一节定义的
`bootstrap_median`
函数。 我们将调用这个函数,并构造总体(比例)中位数的 95% 置信区间。请记住,
`ratios`
表包含来自我们的原始样本的相关数据。
```
py
def
bootstrap_median
(
original_sample
,
label
,
replications
):
"""Returns an array of bootstrapped sample medians:
original_sample: table containing the original sample
label: label of column containing the variable
replications: number of bootstrap samples
"""
just_one_column
=
original_sample
.
select
(
label
)
medians
=
make_array
()
for
i
in
np
.
arange
(
replications
):
bootstrap_sample
=
just_one_column
.
sample
()
resampled_median
=
percentile
(
50
,
bootstrap_sample
.
column
(
0
))
medians
=
np
.
append
(
medians
,
resampled_median
)
return
medians
# Generate the medians from 5000 bootstrap samples
bstrap_medians
=
bootstrap_median
(
ratios
,
'Ratio BW/GD'
,
5000
)
# Get the endpoints of the 95% confidence interval
left
=
percentile
(
2.5
,
bstrap_medians
)
right
=
percentile
(
97.5
,
bstrap_medians
)
make_array
(
left
,
right
)
array
([
0.42545455
,
0.43262411
])
```
95% 置信区间是 0.425opd 到 0.433opd。 我们估计的总体(出生重量与怀孕天数的比值)中位数,在 0.425opd 到 0.433opd 的范围内。
基于原始样本的估计量 0.429 恰好在区间两端的中间,尽管这通常不是真的。
为了使我们的结果可视化,让我们画出我们自举的中位数的经验直方图,并将置信区间置于横轴上。
```
py
resampled_medians
=
Table
().
with_column
(
'Bootstrap Sample Median'
,
bstrap_medians
)
resampled_medians
.
hist
(
bins
=
15
)
plots
.
plot
(
make_array
(
left
,
right
),
make_array
(
0
,
0
),
color
=
'yellow'
,
lw
=
8
);
```
这个直方图和区间就像我们在前一节中绘制的直方图和区间,只有一个很大的区别 - 没有显示参数的红点。 我们不知道这个点应该在哪里,或者它是否在区间中。
我们只是有一个估计区间。 这是估计量的 95% 置信区间,因为生成它的过程在 95% 的时间中产生了良好的区间。 那肯定是在随机猜测!
请记住,这个区间是一个大约 95% 的置信区间。 计算中涉及到很多近似值。 近似值并不差,但并不准确。
### 总体均值的置信区间:自举百分位数方法
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录