【问题标题】:Sampling methods抽样方法
【发布时间】:2013-02-19 09:08:50
【问题描述】:

你能帮我解决这些问题吗?我正在使用 Python

抽样方法

抽样(或蒙特卡洛)方法构成了一组通用且有用的技术,这些技术使用随机数来提取有关(多变量)分布和函数的信息。在统计机器学习的背景下,我们最关心的是从分布中抽取样本以获得汇总统计的估计值,例如相关分布的平均值。

当我们可以访问单位间隔上的统一(伪)随机数生成器(Matlab 中的 rand 或 R 中的 runif)时,我们可以使用 Bishop Sec. 中描述的变换采样方法。 11.1.1 从更复杂的分布中抽取样本。实现指数分布的变换方法

$$p(y) = \lambda \exp(−\lambda y) , y \geq 0$$

使用 Bishop 中第 526 页底部给出的表达式:切片采样涉及用附加变量 u 增加 z,然后从联合 (z,u) 空间中抽取样本

抽样方法的关键是需要多少样本才能获得对感兴趣数量的可靠估计。假设我们有兴趣估计平均值,即

$$\mu_y = 1/\lambda$$

在上面的分布中,我们再使用样本均值

$$b_y = \frac1L \sum^L_{\ell=1} y(\ell)$$

L 个样本作为我们的估计量。由于我们可以根据需要生成任意数量的大小为 L 的样本,因此我们可以研究该估计值如何平均收敛到真实均值。为了正确地做到这一点,我们需要采取绝对差异

$$|\mu_y - b_y|$$

在真实平均值 $µ_y$ 和估计 $b_y$ 之间 对多个 $L$ 值(例如 10、100、1000)的多次重复(例如 1000 次)进行平均。 将预期绝对偏差绘制为 $L$ 的函数。 您能否绘制一些预期绝对偏差的转换值以获得或多或少的直线?这是什么意思?

我是这种统计机器学习的新手,真的不知道如何在 Python 中实现它。你能帮帮我吗?

【问题讨论】:

  • 一些评论:(1)这听起来像是直接从作业中获取的。如果是这样,我们应该添加homework 标签。 (2) 切片采样以生成指数随机变量似乎是一种奇怪的方法,除非在您的机器上计算对数特别麻烦! (可以以非常直接的方式从标准均匀获得指数。) (3) 均值 $b_y$ 是均匀最小方差无偏且具有已知分布。 $b_y / \mu_y$ 是一个关键量,所以推断很容易,这里留下了为什么蒙特卡洛特征如此突出的问题。
  • 作业标签去年被淘汰了。
  • @chepner:我之前的评论是在迁移之前发表的。该标签在stats.SE 上仍然存在(并且经常使用)。干杯。 :)
  • 啊,我应该看看时间戳 :)

标签: python sampling


【解决方案1】:

您可以采取一些捷径。 Python 有一些内置的采样方法,主要在Scipy 库中。我可以推荐一个用 Python 实现这个想法的手稿(免责声明:我是作者),位于 here

这是一本更大的书的一部分,但这一孤立的章节涉及更一般的大数定律 + 收敛,这就是你所描述的。本文处理的是泊松随机变量,但您应该能够根据自己的情况调整代码。

【讨论】:

  • 非常感谢,它确实对一些代码而不是方程式很有帮助:-)
  • 笔记本链接无效。
猜你喜欢
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 2017-04-13
  • 1970-01-01
  • 2012-09-21
  • 2013-09-12
  • 2020-05-31
相关资源
最近更新 更多