ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 随机变量 > 原文:[https://www.bookbookmark.ds100.org/ch/12/prob_random_vars.html](https://www.bookbookmark.ds100.org/ch/12/prob_random_vars.html) ``` # HIDDEN # Clear previously defined variables %reset -f # Set directory for data loading to work properly import os os.chdir(os.path.expanduser('~/notebooks/12')) ``` ``` # HIDDEN import warnings # Ignore numpy dtype warnings. These warnings are caused by an interaction # between numpy and Cython and can be safely ignored. # Reference: https://stackoverflow.com/a/40846742 warnings.filterwarnings("ignore", message="numpy.dtype size changed") warnings.filterwarnings("ignore", message="numpy.ufunc size changed") import numpy as np import matplotlib.pyplot as plt import pandas as pd import seaborn as sns %matplotlib inline import ipywidgets as widgets from ipywidgets import interact, interactive, fixed, interact_manual import nbinteract as nbi sns.set() sns.set_context('talk') np.set_printoptions(threshold=20, precision=2, suppress=True) pd.options.display.max_rows = 7 pd.options.display.max_columns = 8 pd.set_option('precision', 2) # This option stops scientific notation for pandas # pd.set_option('display.float_format', '{:.2f}'.format) ``` ``` # HIDDEN import scipy.stats as stats ``` 几乎所有现实世界中的现象都包含一定程度的随机性,使得数据生成和收集本身就是随机过程。由于我们将模型与这些数据相匹配,因此我们的模型也包含随机性。为了数学上表示这些随机过程,我们使用随机变量。 **随机变量**是一个代数变量,表示由概率事件确定的**数值。在本书中,我们总是使用大写字母(不是希腊字母),如$X$或$Y$来表示随机变量。尽管随机变量可以代表离散的(如 10 人样本中男性的数量)或连续的数量(如洛杉矶的平均温度),但我们将仅在本教材中使用离散随机变量。** 我们必须总是指定一个给定的随机变量代表什么。例如,我们可以写下随机变量$x$表示 10 个硬币翻转中的头数。随机变量的定义决定了它可以接受的值。在本例中,$x$只能包含 0$到 10$之间的值。 我们还必须能够确定随机变量接受每个可能值的概率。例如,$x=0$被写为$p(x=0)=(0.5)^ 10$的概率,我们同样可以计算$x$是任何以$0,1,ldots,10 为单位的值的概率。 ### 概率质量函数 随机变量$x$的**概率质量函数(pmf)**或**分布**提供$x$接受其每个可能值的概率。如果我们将$\mathbb x 设为$x$可以接受的一组值,并且$x$是$\mathbb x 中的特定值,则$x$的 PMF 必须满足以下规则: $$ 1) \sum_{x \in \mathbb{X}} P(X = x) = 1 $$$$ 2) \text{ For all } x \in \mathbb{X}, 0 \leq P(X = x) \leq 1 $$ 第一条规则规定,$x$sum 到$1$的所有可能值的概率。 第二条规则规定,给定值$x$的每个概率必须介于$0$和$1$之间。 假设我们让 x 美元代表一个公平的六面骰子的一个骰子的结果。我们知道,$x 在 1、2、3、4、5、6 中,$p(x=1)=p(x=2)=\ldots=p(x=6)=\frac 1 6 美元。我们可以绘制$x$的 PMF 作为概率分布: ``` # HIDDEN def plot_pmf(xs, probs, rv_name='X'): plt.plot(xs, probs, 'ro', ms=12, mec='b', color='b') plt.vlines(xs, 0, probs, colors='b', lw=4) plt.xlabel('$x$') plt.ylabel('$P(X = x)$') plt.ylim(0, 1) plt.title('PMF of $X$'); ``` ``` # HIDDEN xk = np.arange(1, 7) pk = (1/6, 1/6, 1/6, 1/6, 1/6, 1/6) plot_pmf(np.arange(1, 7), np.repeat(1/6, 6)) plt.yticks(np.linspace(0, 1, 7), ('0', r'$\frac{1}{6}$', r'$\frac{2}{6}$', r'$\frac{3}{6}$', r'$\frac{4}{6}$', r'$\frac{5}{6}$', '1')); ``` ![](https://img.kancloud.cn/65/c5/65c5ad9fd31ea7e9ed55b00df19cf510_404x301.jpg) ### 关节分布 单随机变量的 PMF 概念自然地扩展到多随机变量的联合分布。特别是,两个或多个随机变量的**联合分布**产生这些随机变量同时接受一组特定值的概率。 例如,让随机变量$X$表示 10 个硬币翻转中的头数,让$Y$表示同一组 10 个硬币翻转中的尾部数。我们可以注意到: $$P(X=0, Y=10) = P(X=10, Y=0) = (0.5)^{10}$$ 同时$P(x=6,y=6)=0 美元,因为我们不可能在 10 个硬币翻转中有 6 个头部和 6 个尾部。 #### 边际分布 有时,我们从两个随机变量$X$和$Y$的联合分布开始,但只想找到$X$的分布。这个分布称为**边际分布**。为了找出$x$接受某个特定值的概率,我们必须考虑所有可能的$y$值(用$\mathbb y 表示),这些值可以与$x$同时发生,并对所有这些联合概率求和: $$ \begin{aligned} \sum_{y \in \mathbb{Y}} P(X=x, Y=y) &= P(X=x) \end{aligned} $$ 我们可以证明如下身份: $$ \begin{aligned} \sum_{y \in \mathbb{Y}} P(X=x, Y=y) &= \sum_{y \in \mathbb{Y}} P(X=x) \times P(Y=y \; \vert \; X=x)\\ &= P(X=x) \times \sum_{y \in \mathbb{Y}} P(Y=y \; \vert \; X=x)\\ &= P(X=x) \times 1 \\ &= P(X=x) \end{aligned} $$ 在这个证明的最后一行中,我们将$y\;\vert\;x=x$作为一个带有未知 pmf 的随机变量。这一点很重要,因为我们使用了一个属性,即 pmf 中的概率总和为 1 美元,这意味着在 mathbb y p(y=y \ vert \ x=x)=1 美元。 #### 独立随机变量 像事件一样,两个随机变量可以是相依的或独立的。任何两个随机变量都是独立的,只要知道一个变量的结果不会改变观察另一个变量任何结果的概率。 例如,假设我们把一枚硬币掷十次,让$x$作为头的数目,让$y$作为尾的数目。显然,$x$和$y$是因变量,因为知道$x=0$意味着$y$必须等于$10$。如果我们没有观察到$X$的值,$Y$可以以非零概率在$0$和$10$之间取任何值。 我们可以做两组十次翻转。如果$x$是第一组翻转中的头数,$y$是第二组翻转中的头数,$x$和$y$是独立的,因为第一组十个翻转的结果不会影响第二组翻转的结果。 ### 年龄[¶](#An-Example-with-Ages)的例子 假设我们有一个由四个人组成的小数据集: ``` # HIDDEN data={"Name":["Carol","Bob","John","Dave"], 'Age': [50,52,51,50]} people = pd.DataFrame(data) people ``` | | 姓名 | 年龄 | | --- | --- | --- | | 零 | 颂歌 | 五十 | | --- | --- | --- | | 1 个 | 鲍勃 | 五十二 | | --- | --- | --- | | 二 | 约翰 | 五十一 | | --- | --- | --- | | 三 | 戴夫 | 50 | | --- | --- | --- | 假设我们从这个数据集中抽取两个人进行替换。如果随机变量$Z$代表样本中第一和第二个人的年龄差异,那么$Z$的 PMF 是什么? 为了解决这个问题,我们定义了两个新的随机变量。我们将$X$定义为第一个人的年龄,$Y$定义为第二个人的年龄。那么,$Z=X-Y$就可以了。然后,我们找到 x$和 y$的联合概率分布:x$和 y$可以同时接受的每个值的概率。在这种情况下,请注意$x$和$y$是独立的,分布相同;这两个随机变量表示来自同一数据集的两个独立的提取,第一个提取对第二个提取没有影响。例如,$x=51$和$y=50$的概率是$p(x=51,y=50)=\frac 1 4 \cdot\frac 2 4 frac 2 16。以类似的方式,我们得到: | | Y=50 美元 | Y=51 美元 | Y=52 美元 | | --- | --- | --- | --- | | X=50 美元 | 4/16 | 2/16 | 2/16 | | X=51 美元 | 2/16 | 1/16 | 1/16 | | X=52 美元 | 2/16 | 1/16 | 1/16 | 现在让我们考虑一下这样的情况:我们从上面相同的数据集中抽取两个人,但没有替换。如前所述,我们将$X$定义为第一个人的年龄,$Y$定义为第二个人的年龄,$Z=X-Y$。但是,现在$X$和$Y$不是独立的;例如,如果我们知道$X=51$,那么$Y\neq 51$。我们发现 X 美元和 Y 美元的联合分配如下: | | $Y=50$ | $Y=51$ | $Y=52$ | | --- | --- | --- | --- | | $X=50$ | 2/12 | 2/12 | 2/12 | | $X=51$ | 2/12 | 零 | 1/12 | | $X=52$ | 2/12 | 1/12 | 0 | 我们还可以从表中找到$Y$的边际分布。 $$ \begin{aligned} P(Y = 50) &= P(Y = 50, X = 50) + P(Y = 50, X = 51) + P(Y = 50, X = 52) \\ &= \frac{2}{12} + \frac{2}{12} + \frac{2}{12} \\ &= \frac{1}{2} \\ P(Y = 51) &= \frac{2}{12} + 0 + \frac{1}{12} = \frac{1}{4} \\ P(Y = 52) &= \frac{2}{12} + \frac{1}{12} + 0 = \frac{1}{4} \end{aligned} $$ 注意,我们对上面的联合分布表的每一列进行了汇总。我们可以想象计算每一列的总和,并将结果写在下表的空白处;这是术语边际分布的起源。 您还应该注意到,$X$和$Y$在没有替换的情况下采样时是不独立的。例如,如果 x=52 美元,$y\neq 52 美元。然而,$x$和$y$的边际分布仍然相同。 ## 摘要[¶](#Summary) 在本节中,我们将介绍随机变量,即根据随机过程获取值的数学变量。这些结果必须完全准确地定义,每个结果都必须有明确的发生概率。随机变量可以用来表示许多随机现象,包括数据收集过程。