MATLAB**Bootstrap------2019/7/30

Bootstrap 方法

  • 非参数Bootstrap法
    (1) 估计量的标准误差的Bootstrap估计

将估计量 θ ^ \widehat{\theta} θ 的标准差 σ θ ^ = D ( θ ^ ) \sigma_{\widehat{\theta}}=\sqrt{D(\widehat{\theta})} σθ =D(θ ) 称为估计量 θ ^ \widehat{\theta} θ 的标准误差。

D ( θ ^ ) \sqrt{D(\widehat{\theta})} D(θ ) 的Bootstrap估计的步骤:

1)将原始数据样本 x 1 , x 2 , ⋯   , x n x_{1},x_{2},\cdots,x_{n} x1,x2,,xn按放回抽样的方法,抽得容量为 n n n的样本 x 1 ∗ , x 2 ∗ , ⋯   , x n ∗ x_{1}^{*},x_{2}^{*},\cdots,x_{n}^{*} x1,x2,,xn(称为Bootstrap样本)
2)相继地,独立地求出 B ( B ≥ 1000 ) B(B \geq 1000) B(B1000)个容量为 n n n的样本 x 1 ∗ i , x 2 ∗ i , ⋯   , x n ∗ i , i = 1 , 2 , ⋯   , B x_{1}^{*i},x_{2}^{*i},\cdots,x_{n}^{*i},i=1,2,\cdots,B x1i,x2i,,xni,i=1,2,,B对于第 i i i个Bootstrap样本,计算 θ ^ i ∗ = θ ^ ( x 1 ∗ i , x 2 ∗ i , ⋯   , x n ∗ i ) , i = 1 , 2 , ⋯   , B 。 θ ^ i ∗ \widehat{\theta}_{i}^{*}=\widehat{\theta}(x_{1}^{*i},x_{2}^{*i},\cdots,x_{n}^{*i}),i=1,2,\cdots,B。\widehat{\theta}_{i}^{*} θ i=θ (x1i,x2i,,xni),i=1,2,,Bθ i称为 θ \theta θ的第 i i i个Bootstrap估计
3)计算
σ θ ^ = 1 B − 1 ∑ i = 1 B ( θ ^ i ∗ − θ ^ ∗ ) 2 \sigma_{\widehat{\theta}}=\sqrt{\frac{1}{B-1}\sum_{i=1}^{B}{(\widehat{\theta}_{i}^{*}-\widehat{\theta}^{*})^{2}}} σθ =B11i=1B(θ iθ )2
式中: θ ∗ ‾ = 1 B ∑ i = 1 B θ ^ i ∗ \overline{\theta^{*}}=\frac{1}{B}\sum_{i=1}^{B}{\widehat{\theta}_{i}^{*}} θ=B1i=1Bθ i

例 7.13

a=[18.2 9.5 12.0 21.1 10.2]; %原始样本
b=bootstrp(1000,@(x)quantile(x,0.5),a)
%求各个Bootstrap样本的中位数
%bootstat = bootstrp(nboot,bootfun,d1,...) nboot为样本总数,使用bootfun计算每个样本的统计信息,并在矩阵bootstat器 中返回结果。nboot必须为正整数。bootfun是使用@指定的函数句柄。每行bootstat包含将bootfun应用于一个引导示例的结果。如果bootfun返回矩阵或数组,则此输出将转换为行矢量以存储在bootstat中.

c=std(b)  
%计算b数据的标准差

(2) 估计量的均方差误差的Bootstrap估计
X = ( X 1 , X 2 , ⋯   , X n ) X=(X_{1},X_{2},\cdots,X_{n}) X=(X1,X2,,Xn)为来自总体 F F F的样本, R = R ( X ) R=R(X) R=R(X)是感兴趣的随机变量,依赖于样本 X X X,假设我们希望去估计 R R R的分布的某些特征。例如 R R R的数学期望 E F ( R ) E_{F}(R) EF(R),就可以按照上述三个步骤进行,只是在第二步中对于第 i i i个Bootstrap样本 x i ∗ = ( x 1 ∗ i , x 2 ∗ i , ⋯   , x n ∗ i ) x_{i}^{*}=(x_{1}^{*i},x_{2}^{*i},\cdots,x_{n}^{*i}) xi=(x1i,x2i,,xni),计算 R i ∗ = R i ∗ ( x i ∗ ) R_{i}^{*}=R_{i}^{*}(x_{i}^{*}) Ri=Ri(xi)代替 θ i ∗ \theta^{*}_{i} θi,且在第(3)不中计算感兴趣的 R R R的特征。例如希望估计 E F ( R ) E_{F}(R) EF(R)就计算 E ∗ ( R ∗ ) = 1 B ∑ i = 1 B R i ∗ E_{*}(R^{*})=\frac{1}{B}\sum_{i=1}^{B}{R_{i}^{*}} E(R)=B1i=1BRi
例7.14

a=[136.3 136.6 135.8 135.4 134.7 135.0 134.1 143.3 147.8 148.8 134.8 135.2 134.9 149.5 141.2 135.4 134.8 135.8 135.0 133.7 134.4 134.9 134.5 135.2];
b=bootstrp(1000,@(x) quantile(x,0.5),a)
%求各个Bootstrap样本的中位数

c=mean((b-quantile(a,0.5)).^2) 
%计算均方误差MSE=E[(M-θ)]

(3)求未知参数 θ \theta θ的Bootstrap置信区间
X = ( X 1 , X 2 , ⋯   , X n ) X=(X_{1},X_{2},\cdots,X_{n}) X=(X1,X2,,Xn)为来自总体 F F F容量为 n n n的样本, x = ( x 1 , x 2 , ⋯   , x n ) x=(x_{1},x_{2},\cdots,x_{n}) x=(x1,x2,,xn)是一个已知的样本值。 F F F中含有未知参数 θ \theta θ , θ ^ = θ ^ ( X 1 , X 2 , ⋯   , X n ) \widehat{\theta}=\widehat{\theta}(X_{1},X_{2},\cdots,X_{n}) θ =θ (X1,X2,,Xn) θ \theta θ的估计量。求 θ \theta θ的置信水平为 1 − α 1-\alpha 1α的置信区间

1) 相继地,独立地从样本 x = ( x 1 , x 2 , ⋯   , x n ) x=(x_{1},x_{2},\cdots,x_{n}) x=(x1,x2,,xn)中求出 B ( B ≥ 1000 ) B(B \geq 1000) B(B1000)个容量为 n n n的样本,对于每个样本求出 θ \theta θ的Bootstrap估计: θ ^ 1 ∗ , θ ^ 2 ∗ , ⋯   , θ ^ B ∗ \widehat{\theta}_{1}^{*},\widehat{\theta}_{2}^{*},\cdots,\widehat{\theta}_{B}^{*} θ 1,θ 2,,θ B,将它们自大到小排序得:
θ ^ ( 1 ) ∗ ≤ θ ^ ( 2 ) ∗ , ⋯   , ≤ θ ^ ( B ) ∗ \widehat{\theta}_{(1)}^{*}\leq \widehat{\theta}_{(2)}^{*},\cdots,\leq \widehat{\theta}_{(B)}^{*} θ (1)θ (2),,θ (B)
2)  取 R ( X ) = θ ^ , R(X)=\widehat{\theta}, R(X)=θ ,用对应的 R ( X ∗ ) = θ ^ ∗ R(X^{*})=\widehat{\theta}^{*} R(X)=θ 的分布作为 R ( X ) R(X) R(X)分布的近似,求出 R ( X ∗ ) R(X^{*}) R(X)的分布的近似分位数 θ ^ α / 2 ∗ \widehat{\theta}^{*}_{\alpha/2} θ α/2 θ ^ 1 − α / 2 ∗ \widehat{\theta}^{*}_{1-\alpha/2} θ 1α/2使
P { θ ^ α / 2 ∗ < θ ^ ∗ < θ ^ 1 − α / 2 ∗ } = 1 − α P\{\widehat{\theta}^{*}_{\alpha/2}<\widehat{\theta}^{*}<\widehat{\theta}^{*}_{1-\alpha/2}\}=1-\alpha P{θ α/2<θ <θ 1α/2}=1α
近似有:
P { θ ^ α / 2 ∗ < θ ^ < θ ^ 1 − α / 2 ∗ } = 1 − α P\{\widehat{\theta}^{*}_{\alpha/2}<\widehat{\theta}<\widehat{\theta}^{*}_{1-\alpha/2}\}=1-\alpha P{θ α/2<θ <θ 1α/2}=1α
k 1 = [ B × α 2 ] , k 1 = [ B × ( 1 − α 2 ) ] k_{1}=[B×\frac{\alpha}{2}],k_{1}=[B×(1-\frac{\alpha}{2})] k1=[B×2α],k1=[B×(12α)],以 θ ^ ( k 1 ) ∗ , θ ^ ( k 2 ) ∗ \widehat{\theta}^{*}_{(k_{1})},\widehat{\theta}^{*}_{(k_{2})} θ (k1),θ (k2)分别作为 θ ^ α / 2 ∗ , θ ^ 1 − α / 2 ∗ \widehat{\theta}^{*}_{\alpha/2},\widehat{\theta}^{*}_{1-\alpha/2} θ α/2,θ 1α/2的估计,得:
P { θ ^ ( k 1 ) ∗ < θ ^ < θ ^ ( k 2 ) ∗ } = 1 − α P\{\widehat{\theta}^{*}_{(k_{1})}<\widehat{\theta}<\widehat{\theta}^{*}_{(k_{2})}\}=1-\alpha P{θ (k1)<θ <θ (k2)}=1α
故, θ \theta θ的置信水平为 1 − α 1-\alpha 1α的置信区间为 ( θ ^ ( k 1 ) ∗ , θ ^ ( k 2 ) ∗ ) (\widehat{\theta}^{*}_{(k_{1})},\widehat{\theta}^{*}_{(k_{2})}) (θ (k1),θ (k2)),这种求置信区间的方法为分位数法

例7.15(用分位数法求总体均值 μ \mu μ 和总体标准差 σ \sigma σ 的置信水平为0.9的Bootstrap置信区间)

a=[9 8 10 12 11 12 7 9 22 8 9 7 7 8 9 7 9 9 10 9 9 9 12 10 10 9 13 11 13 9];
b=bootci(10000,{@(x)[mean(x),std(x)],a},'alpha',0.1)
%返回值b的第一列为均值的置信区间;第二列为标准差的置信区间
%ci=bootci(nboot,{bootfun,...},'alpha',alpha)命令是计算有函数bootfun定义的统计信息100*(1-alpha)启动置信区间
%nboot是一个正整数,指示计算中使用的引导样本数。bootfun是使用@指定的函数句柄。
  • 参数Bootstrap法
     假设所研究的总体的分布函数 F ( x ; β ) F(x;\beta) F(x;β)的形式已知,但其中包含的未知参数 β \beta β( β \beta β可以是向量)。现在已知有一个来自 F ( x , β ) F(x,\beta) F(x,β)的样本
    X 1 , X 2 , ⋯   , X n X_{1},X_{2},\cdots,X_{n} X1,X2,,Xn
    利用此样本求出 β \beta β 的最大似然估计 β ^ \widehat{\beta} β 。在 F ( x , β ) F(x,\beta) F(x,β)中以 β ^ \widehat{\beta} β 代替 β \beta β得到 F ( x , β ^ ) F(x,\widehat{\beta}) F(x,β ),接着在 F ( x , β ^ ) F(x,\widehat{\beta}) F(x,β )中产生容量为 n n n的样本
    X 1 ∗ , X 2 ∗ , ⋯   , X n ∗ ∼ F ( x , β ^ ) X_{1}^{*},X_{2}^{*},\cdots,X_{n}^{*} \sim F(x,\widehat{\beta}) X1,X2,,XnF(x,β )
    这种样本可以产生很多个,可产生 B ( B ≥ 1000 ) B(B \geq 1000) B(B1000)个样本,利用这些样本对总体进行统计推断,其做法与非参数Bootstrap法相同。
    例7,16
a=[142.84 97.04 32.46 69.14 85.67 114.43 41.76 163.07 108.22 63.28];
eta=sqrt(mean(a.^2)) 
%求最大似然估计,先笔算出最大似然估计的函数方程,然后在MATLAB中写出这个函数。
%也可以用mle命令

beta=2;
B=500;
alpha=0.05;
b=wblrnd(eta,beta,[B,10]); 
%产生服从威布尔分布的随机数参数为eta,beta.B为指定随机数的个数,10为返回值b的列数

etahat=sqrt(mean(b.^2,2));
%计算每个样本对应的最大似然估计,返回每一行中元素均值的列向量

seta=sort(etahat); 
%将每个样本对应的最大似然估计按从小到大的顺序排列

k=floor(B*alpha);
 %求k1

se=seta(k)  
%找出第K位的最大似然估计值
rt0=exp(-(50/se)^2) 
%求对应的置信下限

例7.17

x0=[342 500 187];
theta=(x0(2)+2*x0(3))/2/sum(x0);   
%求最大似然估计量

fb=[(1-theta)^2,2*theta*(1-theta),theta^2];   
%求x0中各值的分布概率(题中已给概率的公式)

cf=cumsum(fb);                                 
%求fb的累计和,cumsum(2)=fb(1)+fb(2);cumsum(3)=fb(1)+fb(2)+fb(3)

a=rand(1029,1000);  
%产生一个1029*1000的随机数矩阵,每一列为1029个数,对应一个Bootstrap样本

jx1=(a<=cf(1));
%若样本的概率<cf(1)即有血型M的概率,则样本可能是M型,令其在jx1矩阵中为1

jx2=(a>cf(1)&a<=cf(2)); 
%同上理

jx3=(a>=cf(2));   
%同上理

x1=sum(jx1)      
%求和,即每一样本中血型为M型的人数
x2=sum(jx2)      
x3=sum(jx3)
theta2=(x2+2*x3)/1029/2;
stheta=sort(theta2);   
%将统计量按从小到大的顺序排列

qj=[stheta(50),stheta(950)] 
%提出置信区间的取值

你可能感兴趣的:(MATLAB)