vecm模型怎么写系数_第四十三讲 R-回归预测模型的自举重采样验证(boostrap-resampling)...

本文介绍了使用R语言进行自举重采样验证(bootstrap-resampling)以评估预测模型的准确性。通过自举法,可以量化模型的不确定性并计算系数的标准误差,进而建立置信区间。文中以线性回归模型为例,展示了如何创建返回系数的函数,使用boot()函数进行计算,并解释了如何利用标准误差确定系数的置信区间。
摘要由CSDN通过智能技术生成

d49a6c8d51645b14a85e8e8a6103e76c.png

对于如何验证预测模型在新的数据集中是否有较好的拟合性能,除了第四十二讲中介绍的交叉验证外,还有一种更加复杂但稳定的方法,叫做自举重采样验证(boostrap-resampling)。

1. 自举重采样

自举重采样(bootstrap-resampling)验证可用于测量预测模型的准确性,也可用于评价模型的不确定性。该方法为从原始数据集中重复随机选择n个观察值的样本,并评估每个副本的模型性能。然后计算平均标准误差,从而衡量模型性能总体差异。

2. 加载所需的R包

  • tidyverse 便于数据操作和可视化
  • caret 用于计算交叉验证
library(tidyverse)
library(caret)

3. 数据示例

我们将使用R的内置数据集swiss。

# 加载数据
library(datasets)
data("swiss")
# 查看数据(随机选取3行数据来查看)
sample_n(swiss, 3)
Fertility Agriculture Examination Education Catholic Infant.Mortality
1      77.3        89.7           5         2   100.00             18.3
2      76.1        35.3           9         7    90.57             26.6
3      83.1        45.1           6         9    84.84             22.2

研究问题:根据社会经济相关的多个指标(Agriculture,Examination,Education,Catholic,Infant.Mortality)预测生育力得分(Fertility)。

4. 自举法(bootstrap)

自举法可用于量化评价预测模型的不确定性。

它包括从原始数据集中随机选择n个观测值的样本。然后,将这个称为自举数据集的子集用于评估模型。

重复此过程很多次,然后计算平均标准误差。结果可以显示模型性能的不确定性。

请注意,自举法的采样每次都是是通过替换运行的,即同一观察值在不同自举数据集中可能会出现多次。

4.1 评估预测模型的性能

以下示例将使用100个重采样的自举法来测试线性回归模型:

# 定义预测模型
train.control <- trainControl(method = "boot", number = 100)
# 训练模型
model <- train(Fertility ~., data = swiss, method = "lm",
               trControl = train.control)
# 输出结果
print(model)
## Linear Regression 
## 
## 47 samples
##  5 predictor
## 
## No pre-processing
## Resampling: Bootstrapped (100 reps) 
## Summary of sample sizes: 47, 47, 47, 47, 47, 47, ... 
## Resampling results:
## 
##   RMSE  Rsquared  MAE 
##   8.4   0.597     6.76
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE

结果输出的是100次重采样的平均模型性能:RMSE、R2和MAE。(详细解释请至第四十一讲,插入链接!!!)

RMSE(均方根误差)和MAE(均值绝对误差)代表模型预测误差的两种不同度量。RMSE和MAE越低,模型越好。R2代表模型中包含的预测变量对结果变化的解释百分比。R2越高,模型越好。

4.2 量化预测模型的不确定性和置信区间

自举法可用于量化预测模型各个系数的不确定性(或标准误)。

例如,您可能想使用自举法来估计线性回归beta系数的准确性。

步骤如下:

  1. 创建一个简单函数,model_coef(),该函数将获取预测函数的截距和每个预测变量的系数(回归系数)。
  2. 将函数boot()应用于完整数据集的观察值以计算系数

我们首先创建一个返回回归模型系数的函数:

model_coef <- function(data, index){
  coef(lm(Fertility ~., data = data, subset = index))
}
model_coef(swiss, 1:47)
##      (Intercept)      Agriculture      Examination        Education 
##           66.915           -0.172           -0.258           -0.871 
##         Catholic Infant.Mortality 
##            0.104            1.077

接下来,我们使用boot()函数[boot软件包中]来计算500个自举数据集的各个截距和预测变量的系数的标准误差:

library(boot)
boot(swiss, model_coef, 500)
## 
## ORDINARY NONPARAMETRIC BOOTSTRAP
## 
## 
## Call:
## boot(data = swiss, statistic = model_coef, R = 500)
## 
## 
## Bootstrap Statistics :
##     original    bias    std. error
## t1*   66.915 -2.04e-01     10.9174
## t2*   -0.172 -5.62e-03      0.0639
## t3*   -0.258 -2.27e-02      0.2524
## t4*   -0.871  3.89e-05      0.2203
## t5*    0.104 -7.77e-04      0.0319
## t6*    1.077  4.45e-02      0.4478

在上面的输出中,

  • original列对应于回归系数。列中给出了相关的标准误差std.error。
  • t1对应于截距,t2对应Agriculture以此类推...

例如,可以看出,Agriculture的回归系数的标准误差(SE)为0.06。

请注意,标准误差衡量的是β系数的变异性/准确性。它可用于计算系数的置信区间。

例如,给定系数b的95%置信区间定义为b +/- 2*SE(b),其中:

  • b的下限= b - 2*SE(b) = -0.172 - (2*0.0680) = -0.308(Agriculture的系数)
  • b的上限= b + 2*SE(b) = -0.172 + (2*0.0680) = -0.036(Agriculture的系数)

也就是说,[-0.308,-0.036]区间中包含Agriculture的系数的真实值的可能性大约为95%。

使用标准lm()函数会产生稍有不同的标准误差,因为线性模型对数据进行了一些假设:

  1. Linearity 线性:应变量和每个自变量都是线性关系。
  2. Indpendence 独立性:对于所有的观测值,它们的误差项相互之间是独立的。
  3. Normality 正态性:误差项服从正态分布。
  4. Equal-variance 等方差:所有的误差项具有同样方差。
summary(lm(Fertility ~., data = swiss))$coef
##                  Estimate Std. Error t value Pr(>|t|)
## (Intercept)        66.915    10.7060    6.25 1.91e-07
## Agriculture        -0.172     0.0703   -2.45 1.87e-02
## Examination        -0.258     0.2539   -1.02 3.15e-01
## Education          -0.871     0.1830   -4.76 2.43e-05
## Catholic            0.104     0.0353    2.95 5.19e-03
## Infant.Mortality    1.077     0.3817    2.82 7.34e-03

自举重采样验证法不依赖于线性模型做出的任何假设,因此,它可能提供比summary()函数更准确的系数标准误差估计。

参考内容:

1. Alboukadel Kassambara, Machine Learning Essentials: Practical Guide in R

今晚,9月24日21:00,我们邀请到了美国心脏病学会期刊JACC: Cardiovascular Interventions主编David J. Moliterno博士为大家带来主题为“在JACC期刊上发表论文的技巧”,从期刊编辑的角度为大家解读如何发表论文,欢迎大家来免费看直播,和主编在线交流~参与方式见下方海报~

fffe23637379f85641b39ead7b14615b.png

如果您觉得我说的对您有帮助,请点赞让我感到您的支持,您的支持是我写作最大的动力~

ijournal:高颜值的期刊检索网站,助您快速找到理想目标期刊(weixin小程序也上线了哦)

投必得:全专业中英文论文润色编辑助力您的论文快速发表,点击了解业务详情

b0e7421116c29d39fd5a9ea9df62c26a.png

专栏传送门:

投必得科研软件安装使用手册;投必得:SCI期刊介绍与选择;投必得,教你写论文;投必得统计分析大讲堂;投必得科研生活解忧杂货店

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值