我正在尝试引导和引导(引导聚合),因此我一直在尝试执行一些实验。我加载了sample dataset from Kaggle并尝试使用引导方法:

X = pd.read_csv("dataset.csv")
true_median = np.median(X["Impressions"])
B = 500
    errors = []
    variances = []
    for b in range(1, B):
        sample_medians = [np.median(X.sample(len(X), replace=True)["Impressions"]) for i in range(b)]
        error = np.mean(sample_medians) - true_median
        variances.append(np.std(sample_medians) ** 2)
        errors.append(error)


然后我可视化了errorsvariances

fig, ax1 = plt.subplots()

color = 'tab:red'
ax1.set_xlabel('Number of Bootstrap Samples (B)')
ax1.set_ylabel('Bootstrap Estimate Error', color=color)
ax1.plot(errors, color=color, alpha=0.7)
ax1.tick_params(axis='y', labelcolor=color)

ax2 = ax1.twinx()

color = 'tab:blue'
ax2.set_ylabel('Bootstrap Estimate Variance', color=color)
ax2.plot(variances, color=color, alpha=0.7)
ax2.tick_params(axis='y', labelcolor=color)

fig.tight_layout()
plt.title("Relationship Between Bootstrap Error, Variance \nand Number of Bootstrap Iterations")
plt.show()


这是该图的输出:
python - 自举估计方差为何减小的数学解释-LMLPHP

您可以看到,误差和方差都随B的增加而减小。
我正在尝试找到某种数学上的理由-是否有一种方法可以得出或证明为什么当B增加时,引导估计的方差会减小?

最佳答案

我认为您正在看到的是中央极限定理。循环开始时,来自被替换群体的样本数量很小,中位数的平均值(您称此错误)不能代表达到真实的中位数。随着生成更多样本,中位数的平均值渐近收敛于真实中位数。当收敛趋于真实均值时,来自该分布的样本不足以产生大方差,并且也达到收敛。

澄清了吗?如果没有,请详细说明您在绘制它们时期望看到的内容,我们可以讨论如何到达那里。

关于python - 自举估计方差为何减小的数学解释,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56102520/

10-12 22:43