使用bootstrapping增加样本数是否有意义?那么,怎么能实现呢?

时间:2017-11-05 08:18:10

标签: python scikit-learn statistics regression

我有15个样本,并且进行回归分析有点小。

有人告诉我,使用自举技术增加样本数将使我的数据更具统计意义。所以我试过了。

我首先尝试的是让我的样本数从15到1000通过'重新采样'来自Python的scikit-learn的功能。

http://scikit-learn.org/stable/modules/generated/sklearn.utils.resample.html

但是当我看到' resample'的源代码时函数,似乎没有关于bootstrapping的东西。

所以,这是我的问题。

Q1:使用Bootstrapping技术将15个样本重新采样到1000个具有统计意义吗?

Q2:如果是,如何在Python环境中实现它?

感谢。

1 个答案:

答案 0 :(得分:3)

Q1。虽然bootstrap本身是一种广泛使用且统计上有效的技术,但15个样本可能太小而无法做任何有用的事情。

可能存在特定于域的原因,您认为15个样本代表您感兴趣的人群。在这种情况下,您可以使用引导程序。您可能想要考虑的一件事是将引导程序与数据中的变体相结合。即,每次数据重新采样时,都会向新数据添加一些噪声,然后将其附加到原始数据集。

这是了解bootstrap技术及其变体的绝佳资源: http://www.stat.cmu.edu/~cshalizi/402/lectures/08-bootstrap/lecture-08.pdf

Q2。您使用sklearn功能进入了正确的轨道。正如在提到的那样 文档,resample函数实现了bootstrap的一个步骤。

基本上你需要做的是运行一个循环,在原始数据上调用resample函数并将其附加到新的DataFrame,直到新DataFrame的大小为1000.注意:新的DataFrame也应该包含原始数据数据

重新取样功能将返回随机选择的数据子集。随机子集中的观察数等于n_samples的值。例如,如果设置n_samples = 10,则replace函数将返回10个数据点。如果设置n_samples = 15,则resample将每次返回整个数据集。

您需要考虑的另一个参数是替换。如果replace为True,则可以在replace返回的子集中重复原始数据中的数据点。如果replace为False,则原始数据中的每个数据点只能在子集中出现一次。

这些参数的选择将取决于您拥有的数据,但合理的方法可能是设置n_samples< 15和replace = True以增加resample返回的数据的变化。