在Python中编写自助法的最佳方式

我在编写一个在Python中对样本应用统计自助法的函数时,提出了两种解决方案,一种是完全向量化的,另一种使用列表推导式。

import seaborn as snsimport numpy as npimport matplotlib.pyplot as pltsample = np.array([80,75,91,97,88,77,94])bs_sample_1 = np.random.choice(sample,size = (10000,7)).mean(axis = 1)bs_sample_2 = np.array([np.random.choice(sample,size = 7).mean() for i in range(10000)])plt.figure()sns.distplot(sample)plt.figure()sns.distplot(bs_sample_1)plt.figure()sns.distplot(bs_sample_2)

我对随机数生成器(RNG)的了解不多,但我不确定这两个操作是否同样有效地生成自助样本。


回答:

通常自助法是在拟合过程中应用的,而不是对单个数组。另外,你调用random.choice从7个元素的数组中选择7个元素,这有点没有意义。

在曲线拟合中应用自助法的方式如下:

  1. 给定n个样本(x,y),已知y的不确定性。y的不确定性可能由仪器提供,或者通过计算y的多次连续测量的标准差来计算。
  2. 使用某个函数进行拟合,例如f(x,a,b),其中a和b是我们想要提取的参数,拟合x和y的值。保存通过拟合过程获得的a和b的结果。
  3. 生成n个y*值的样本。每个y*使用与相应y相同均值的高斯分布生成,sigma值如第1点所给。(sigma值可能对于所有点相同,也可能根据相应的x值不同)。使用第2点描述的相同过程拟合x,y*的值,并保存通过拟合程序获得的参数a和b。
  4. 重复第3点的操作,重复次数根据需要(通常1000次或更多)。你将得到许多参数a和b的值。
  5. 此时,你可以说描述函数y = f(x,a,b)的最佳a-b值是之前获得的许多参数a和b的均值,你可以说它们的uncertainty由这些值的标准差给出。你还可以查看a和b的分布,并做出进一步的考虑。

在你的代码中,你只是多次计算数组中7个元素的平均值。但由于“平均值的平均值”就是整个数据集的平均值,你最终得到的是这7个元素的平均值(希望这有意义)。

理想情况下,自助法意味着你根据每个已知分布生成模拟数据,然后使用这些数据在每次不同的生成中计算某些量。然后你可以计算所得量的均值和标准差。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注