提交 ea844c22 编写于 作者: W wizardforcel

ch9.

上级 a6f0e75d
# 九、经验分布
大部分数据科学都涉及来自大随机样本的数据。 在本节中,我们将研究这些样本的一些属性。
大部分数据科学都涉及来自大随机样本的数据。 在本节中,我们将研究这些样本的一些属性。
我们将从一个简单的实验开始:多次掷骰子并跟踪出现的点数。 `die `表包含骰子面上的点数。 所有的数字只出现一次,因为我们假设骰子是平等的。
......@@ -40,7 +40,7 @@ die.hist(bins = die_bins)
另一方面,经验分布是观测数据的分布。 他们可以通过经验直方图可视化。
让我们通过模拟一个骰子的投掷来获得一些数据。 这可以通过 1 到 6 的整数的带放回随机抽样来完成。为了使用 Python 来实现,我们将使用`Table``sample`方法,它带放回地随机抽取表中的行。它的参数是样本大小,它返回一个由选定的行组成的表。 `with_replacement=False`的可选参数指定了应该抽取样本而不放回,但不适用于投掷骰子。
让我们通过模拟一个骰子的投掷来获得一些数据。 这可以通过 1 到 6 的整数的带放回随机抽样来完成。为了使用 Python 来实现,我们将使用`Table``sample`方法,它带放回地随机抽取表中的行。它的参数是样本,它返回一个由选定的行组成的表。 `with_replacement=False`的可选参数指定了应该抽取样本而不放回,但不适用于投掷骰子。
这是一个十次骰子投掷的结果。
......@@ -62,7 +62,7 @@ die.sample(10)
| 6 |
| 6 |
我们可以使用相同的方法来模拟尽可能多的投掷,然后绘制结果的经验直方图。 因为我们要反复这样做,所以我们定义了一个函数`empirical_hist_die`,它以样本大小为参数;该函数根据其参数多次投掷骰子,然后绘制直方图。
我们可以使用相同的方法来模拟尽可能多的投掷,然后绘制结果的经验直方图。 因为我们要反复这样做,所以我们定义了一个函数`empirical_hist_die`,它以样本为参数;该函数根据其参数多次投掷骰子,然后绘制直方图。
```py
def empirical_hist_die(n):
......@@ -161,7 +161,7 @@ united.where('Delay', are.between(0, 10)).num_rows/united.num_rows
### 样本的经验分布
现在让我们将这 13,825 个航班看做一个总体,并从中带放回地抽取随机样本。 将我们的分析代码打包成一个函数是有帮助的。 函数`empirical_hist_delay`以样本大小为参数,绘制结果的经验直方图。
现在让我们将这 13,825 个航班看做一个总体,并从中带放回地抽取随机样本。 将我们的分析代码打包成一个函数是有帮助的。 函数`empirical_hist_delay`以样本为参数,绘制结果的经验直方图。
```py
def empirical_hist_delay(n):
......@@ -188,9 +188,9 @@ empirical_hist_delay(1000)
我们在本节中观察到的东西,可以总结如下:
对于较大的随机样本,样本的经验直方图类似于总体的直方图,概率很高。
对于大型随机样本,样本的经验直方图类似于总体的直方图,概率很高。
这证明了,在统计推断中使用大量随机样本是合理的。 这个想法是,由于较大的随机样本可能类似于从中抽取的总体,从样本中计算出的数量可能接近于总体中相应的数量。
这证明了,在统计推断中使用大型随机样本是合理的。 这个想法是,由于大型随机样本可能类似于从中抽取的总体,从样本中计算出的数量可能接近于总体中相应的数量。
## 轮盘赌
......@@ -404,7 +404,7 @@ Table().with_columns(
在两个直方图中可以看到相似之处:大型随机样本的经验直方图很可能类似于总体的直方图。
提醒一下,这里是所有美联航航班延误的直方图,以及这些航班的 1000 个随机样本的经验直方图。
提醒一下,这里是所有美联航航班延误的直方图,以及这些航班的大小为 1000 的随机样本的经验直方图。
```py
united = Table.read_table('united_summer2015.csv')
......@@ -452,3 +452,72 @@ united.where('Delay', are.equal_to(2)).num_rows
480
```
### 统计
在很多情况下,我们会感兴趣的是找出未知参数的值。 为此,我们将依赖来自总体的大型随机样本的数据。
统计量(注意是单数!)是使用样本中数据计算的任何数字。 因此,样本中位数是一个统计量。
请记住,`sample_1000`包含来自`united`的 1000 个航班的随机样本。 样本中位数的观测值是:
```py
np.median(sample_1000.column('Delay'))
2.0
```
我们的样本 - 一千个航班 - 给了我们统计量的观测值。 这提出了一个重要的推论问题:
统计量的数值可能会有所不同。 使用基于随机样本的任何统计量时,首先考虑的事情是,样本可能不同,因此统计量也可能不同。
```py
np.median(united.sample(1000).column('Delay'))
3.0
```
运行单元格几次来查看答案的变化。 通常它等于 2,与总体参数值相同。 但有时候不一样。
统计量有多么不同? 回答这个问题的一种方法是多次运行单元格,并记下这些值。 这些值的直方图将告诉我们统计量的分布。
我们将使用`for`循环来“多次运行单元格”。 在此之前,让我们注意模拟中的主要步骤。
### 模拟统计量
我们将使用以下步骤来模拟样本中位数。 您可以用任何其他样本量来替换 1000 的样本量,并将样本中位数替换为其他统计量。
第一步:生成一个统计量。 抽取大小为 1000 的随机样本,并计算样本的中位数。 注意中位数的值。
第二步:生成更多的统计值。 重复步骤 1 多次,每次重新抽样。
第三步:结果可视化。 在第二步结束时,您将会记录许多样本中位数,每个中位数来自不同的样本。 您可以在表格中显示所有的中位数。 您也可以使用直方图来显示它们 - 这是统计量的经验直方图。
我们现在执行这个计划。 正如在所有的模拟中,我们首先创建一个空数组,我们在其中收集我们的结果。
+ 上面的第一步是`for`循环的主体。
+ 第二步,重复第一步“无数次”,由循环完成。 我们“无数次”是5000次,但是你可以改变这个。
+ 第三步是显示表格,并在后面的单元格中调用`hist`
该单元格需要大量的时间来运行。 那是因为它正在执行抽取大小为 1000 的样本,并计算其中位数的过程,重复 5000 次。 这是很多抽样和重复!
```py
medians = make_array()
for i in np.arange(5000):
new_median = np.median(united.sample(1000).column('Delay'))
medians = np.append(medians, new_median)
Table().with_column('Sample Median', medians)
```
| Sample Median |
| --- |
| 3 |
| 2 |
| 2 |
| 3 |
| 2 |
| 2 |
| 2 |
| 3 |
| 1 |
| 3 |
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册