R语言第八讲续 评估模型之自助法分析案例

题目

       今天来用自助法评估一下ISLR 程序包中的 Portfolio (金融资产)数据集的预测函数

相关资料

    

自助法(Bootstraping)是另一种模型验证(评估)的方法(之前已经介绍过单次验证和交叉验证)。其以自助采样(Bootstrap Sampling)为基础,即有放回的采样或重复采样。(注:这是一种样本内抽样的方法,即将样本看作总体并从中进行抽样。)

具体做法是:在含有 m 个样本的数据集中,每次随机挑选一个样本, 将其作为训练样本,再将此样本放回到数据集中,这样有放回地抽样 m 次,生成一个与原数据集大小相同的数据集,这个新数据集就是训练集。这样有些样本可能在训练集中出现多次,有些则可能从未出现。原数据集中大概有 36.8% 的样本不会出现在新数据集中。因此,我们把这些未出现在新数据集中的样本作为验证集。把前面的步骤重复进行多次,这样就可以训练出多个模型并得到它们的验证误差,然后取平均值,作为该模型的验证误差。

        如果需要在多个不同的模型中进行选择,那么事先留出测试集,然后在剩余的数据集上用自助法验证模型,选择验证误差最小的模型作为最好的模型,然后用训练集+验证集数据按最好模型的设置训练出一个新的模型,作为最终的模型,最后用测试集测试最终的模型。

实验  

       为了在这个 数据集上说明自助法的使用,首先必须创建一个函数alpha. fn ()来输入数据(X,Y) , 以 及表明用哪些观测来估计 α 的向量,然后输出由入选的观测所计算得到的 α 估计的结果。

  # The Bootstrap#自助法
  # 两个步骤:第一,创建一个计算感兴趣的统计量的函数
  # 第二,用boot库中的boot()有放回地抽取观测来执行自助法

alpha.fn=function(data,index){
  X=data$X[index]
  Y=data$Y[index]
  return((var(Y)-cov(X,Y))/(var(X)+var(Y)-2*cov(X,Y)))
}

        这个函数返回 (return) 或者说输出,对参数 index 选中的观测用自助法公式计算得到的 α 的一个估计。比如说,下面的命令让 R 用全部 100 个观测来估计 α。
   

> library(ISLR)
> alpha.fn(Portfolio,1:100)#[1] 0.5758321
[1] 0.5758321

      下面的命令用 sample ()函数来随机地从 1 到 100 中有放困地选取 100 个观测。这相当于创建 了一个新的自助法数据集,然后在新的数据集上重新计算α。

> set.seed(1)
> alpha.fn(Portfolio,sample(100,100,replace=T))#[1] 0.5963833
[1] 0.7368375

        可以通过多次运行这个命令,把所有相应的 α 估计记录下来,然后计算其标准差,来实现自助 法分析。但是. boot ()函数可以让这个方法自动进行。下商产生 R=1000 个 α 的自助法 估计。

> library(boot)
> boot(Portfolio,alpha.fn,R=1000)#可以多次自动运行这个命令

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = Portfolio, statistic = alpha.fn, R = 1000)


Bootstrap Statistics :
     original       bias    std. error
t1* 0.5758321 -0.001695873  0.09366347

 

你可能感兴趣的:(R语言,统计学习)