How to| 进行自助抽样分析
假设您有数量有限的一组数据,从中获取对总体的统计估计. 如对这些估计的抽样分布进行近似,可以通过从原始数据中抽取新样本,然后计算每个样本的统计量来实现. 这个过程称为自助抽样(Bootstrap),在 Wolfram 语言中可以通过 RandomChoice 完成.
data = {7.05, 2.49, 16.09, 21.3, 19.21, 14.88, 16.41, 0.19, 9.71, 10.18, 8.81, 2.93, 18.11, 22.2, 9.79, 14.74, 4.54, 16.76, 8.46, 24.9}可以使用 RandomChoice 进行不放回抽样. 将 Length[data] 作为第二个参数放在 RandomChoice 中,将生成一个与原始样本同等大小的新样本:
smpl = RandomChoice[data, Length[data]]假设原始数据集代表着它所来自的较大总体,则重新抽样得到的样本值应该与从原始总体抽样得到的样本相似. 因此,从原始数据集得到的样本的统计量,能够模拟总体的样本统计量.
使用 Skewness 计算原始数据的偏度:
Skewness[data]Skewness[smpl]通过对原始数据集多次重新抽样,并计算每个样本的偏度,可以对偏度的样本分布进行近似.
这里,用 Table 对1000个重新抽样数据集的偏度值进行迭代计算:
skews = Table[Skewness[RandomChoice[data, Length[data]]], {1000}];可以使用 Histogram 直观地查看这1000个重新抽样数据集偏度值的样本分布:
Histogram[skews]重新抽样的值列表为估计量提供了一个样本空间(在这里为偏度),因此您还可计算其它的统计量.
StandardDeviation[skews]使用 Quantile 获取样本偏度的95%置信区间:
Quantile[skews, {.025, .975}]自助抽样分析还可以用于更加复杂的结果,例如最大似然拟合的参数估计.
gdata = BlockRandom[SeedRandom[1];RandomVariate[GammaDistribution[2, 3], 100]];Histogram[gdata]假定一个数据集服从某一给定分布,并从数据集中获取参数估计往往很有用. 例如,对从伽玛分布所产生的一组数据,您可能希望用最大似然法对参数 α 和 β 进行估计.
利用 FindDistributionParameters 您可以获得整个数据集的对数似然函数:
FindDistributionParameters[gdata, GammaDistribution[α, β]]现在,通过将数据用原始数据集的重新取样值代替,您可以对参数估计的统计量进行自助抽样分析. 这可以通过 RandomChoice 得到重新取样的数据集来完成:
FindDistributionParameters[RandomChoice[gdata, Length[gdata]], GammaDistribution[α, β]]params := {α, β} /. FindDistributionParameters[RandomChoice[gdata, Length[gdata]], GammaDistribution[α, β]]您可以多次计算 params 以生成 α 与 β 的大量估计,从而得到参数的一个样本空间.
将 Table 用于 params 生成 α 与 β 的100个估计:
ests = Table[params, {100}];Mean[ests]可以得到参数估计的相关矩阵,从而对 α 与 β 的估计之间的关系进行评估:
Correlation[ests]//MatrixForm