R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据

特别是在经济学/计量经济学中,建模者不相信他们的模型能反映现实。比如:收益率曲线并不遵循三因素的Nelson-Siegel模型,股票与其相关因素之间的关系并不是线性的,波动率也不遵循Garch(1,1)过程,或者Garch(?,?)。我们只是试图为我们看到的现象找到一个合适的描述。

模型的发展往往不是由我们的理解决定的,而是由新的数据的到来决定的,这些数据并不适合现有的看法。有些人甚至可以说,现实没有基本的模型(或数据生成过程)。正如汉森在《计量经济学模型选择的挑战》中写道。

“模型应该被视为近似值,计量经济学理论应该认真对待这一点”

所有的理论都自然而然地遵循 "如果这是一个过程,那么我们就显示出对真实参数的收敛性 "的思路。收敛性很重要,但这是一个很大的假设。无论是否存在这样的过程,这样的真实模型,我们都不知道它是什么。同样,特别是在社会科学领域,即使有一个真正的GDP,你可以认为它是可变的。

这种讨论引起了模型的组合,或者预测未来的组合。如果我们不知道潜在的真相,结合不同的选择,或不同的建模方法可能会产生更好的结果。

模型平均

让我们使用 3 种不同的模型对时间序列数据进行预测。简单回归 (OLS)、提升树和随机森林。一旦获得了三个预测,我们就可以对它们进行平均。

# 加载代码运行所需的软件包。如果你缺少任何软件包,先安装。
tem <- lappy(c("randomoest", "gb", "quanteg"), librry, charter.oly=T)
# 回归模型。
 
moelm <- lm(y~x1+x2, data=f)
molrf <- ranmFrst(y~x1+x2, dta=df)
mogm <- gb(ata=df, g.x=1:2, b.y=4
faiy = "gssian", tre.comle = 5, eain.rate = 0.01, bg.fratn = 0.5)
# 现在我们对样本外的预测。
#-------------------------------
Tt_ofsamp <- 500
boosf <- pbot(df\_new$x1, df\_new$x2)
rfft <- pf(df\_new$x1, df\_new$x2)
lmt <- pm(df\_new$x1, df\_new$x2)
# 绑定预测
mtfht <- cbind(bo\_hat, f\_fat, lm_at)
# 命名这些列
c("Boosting", "Random Forest", "OLS")
# 定义一个预测组合方案。
# 为结果留出空间。
resls <- st()
# 最初的30个观测值作为初始窗口
# 重新估计新的观测值到达
it_inw = 30
for(i in 1:leth(A_shes)){
A\_nw$y, mt\_fht,Aeng\_hee= A\_scmes\[i, n_wiow = intwdow )
}
# 该函数输出每个预测平均方案的MSE。
# 让我们检查一下各个方法的MSE是多少。
atr <- apy(ma\_ht, 2, fucon(x) (df\_wy - x)^2 )
apy(ma\_ernitnow:Tou_osaple,
nitnow:Tou\_o_saple, , 2, fncon(x) 100*( man(x) ) )

在这种情况下,最准确的方法是提升。但是,在其他一些情况下,根据情况,随机森林会比提升更好。如果我们使用约束最小二乘法,我们可以获得几乎最准确的结果,但这不需要事先选择 Boosting 、Random Forest 方法。继续介绍性讨论,我们只是不知道哪种模型会提供最佳结果以及何时会这样做。

加权平均模型融合预测

是你的预测变量, 是时间预测 ,从方法 , 和 例如OLS, 提升树和 是随机森林。您可以只取预测的平均值:

通常,这个简单的平均值表现非常好。

在 OLS 平均中,我们简单地将预测投影到目标上,所得系数用作权重:

这是相当不稳定的。所有预测都有相同的目标,因此它们很可能是相关的,这使得估计系数变得困难。稳定系数的一个不错的方法是使用约束优化,即您解决最小二乘问题,但在以下约束下:

另一种方法是根据预测的准确程度对预测进行平均化,直到基于一些指标如根MSE。我们反转权重,使更准确的(低RMSE)获得更多权重。

您可以绘制各个方法的权重:





这是预测平均方法。

## 需要的子程序。
er <- funcion(os, red){ man( (os - ped)^2 ) }
## 不同的预测平均方案
##简单
  rd <- aply(a_at, 1, an)
  wehs <- trx( 1/p, now = TT, ncl = p)
  ## OLS权重
   wgs <- marx( nol=(p+1)T)  
for (i in in_wnow:TT) {
  wghsi,
i, <- lm $oef
pd <- t(eigsi,
i,)%*%c(1, ahti,
i, )
## 稳健的权重
   for (i in iitnow:T) {
    whsi,
i, <- q(bs1:(i−1)
1:(i-1)~ aft1:(i−1),
1:(i-1), )$cef
   prdi
i <- t(wihsi,
i, )*c(1, atfhai,
i,)
   ##基于误差的方差。MSE的倒数
  for (i in n_no:TT) {
   mp =aply(aerr1:(i−1),
1:(i-1),^2,2,ean)/um(aply(mter1:(i−1),
1:(i-1),^2,2,man))
  wigsi,
i, <- (1/tmp)/sum(1/tep)
  pedi
i <- t(witsi,
i, )%*%c(maati,
i, )
  ##使用约束最小二乘法
for (i in itd:wTT) {
  wehti,
i, <- s1(bs1:(i−1)
1:(i-1), a_fat1:(i−1),
1:(i-1), )$wigts
  redi
i <- t(wehsi,
i,)%*%c(ahti,
i, )
  ##根据损失的平方函数,挑选出迄今为止表现最好的模型
    tmp <- apy(mt\_fat−c(1:iit_wdow),
-c(1:iit\_wdow),, 2, ser, obs= obs−c(1:ntwiow)
-c(1:ntwiow) )
    for (i in it_idw:TT) {
    wghsi,
i, <- rp(0,p)
    wihts\[i, min(tep)\] <- 1
    pedi
i <- t(wihti,
i, )*c(mhti,
i, )
    } }
MSE <- sr(obs= os(:)−c(1:intiow)
-c(1:intiow), red= red(:)−c(1:itwiow)
-c(1:itwiow))

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
3月前
|
Java 关系型数据库 MySQL
SpringBoot 通过集成 Flink CDC 来实时追踪 MySql 数据变动
通过详细的步骤和示例代码,您可以在 SpringBoot 项目中成功集成 Flink CDC,并实时追踪 MySQL 数据库的变动。
717 43
|
4月前
|
人工智能 安全 Dubbo
Spring AI 智能体通过 MCP 集成本地文件数据
MCP 作为一款开放协议,直接规范了应用程序如何向 LLM 提供上下文。MCP 就像是面向 AI 应用程序的 USB-C 端口,正如 USB-C 提供了一种将设备连接到各种外围设备和配件的标准化方式一样,MCP 提供了一个将 AI 模型连接到不同数据源和工具的标准化方法。
2450 34
|
3月前
|
存储 人工智能 NoSQL
Airweave:快速集成应用数据打造AI知识库的开源平台,支持多源整合和自动同步数据
Airweave 是一个开源工具,能够将应用程序的数据同步到图数据库和向量数据库中,实现智能代理检索。它支持无代码集成、多租户支持和自动同步等功能。
204 14
|
4月前
|
机器学习/深度学习 PyTorch 测试技术
LossVal:一种集成于损失函数的高效数据价值评估方法
LossVal是一种创新的机器学习方法,通过在损失函数中引入实例级权重,直接在训练过程中评估数据点的重要性,避免了传统方法中反复重训练模型的高计算成本。该方法适用于回归和分类任务,利用最优传输距离优化权重,确保模型更多地从高质量数据中学习。实验表明,LossVal在噪声样本检测和高价值数据点移除等任务上表现优异,具有更低的时间复杂度和更稳定的性能。论文及代码已开源,为数据价值评估提供了高效的新途径。
118 13
LossVal:一种集成于损失函数的高效数据价值评估方法
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
探索大数据分析的无限可能:R语言的应用与实践
探索大数据分析的无限可能:R语言的应用与实践
119 9
|
8月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
7月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
145 3