拓端tecdat:R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据
原文链接:http://tecdat.cn/?p=24148
原文出处:拓端数据部落公众号
特别是在经济学/计量经济学中,建模者不相信他们的模型能反映现实。比如:收益率曲线并不遵循三因素的Nelson-Siegel模型,股票与其相关因素之间的关系并不是线性的,波动率也不遵循Garch(1,1)过程,或者Garch(?,?)。我们只是试图为我们看到的现象找到一个合适的描述。
相关视频:Boosting集成学习原理与R语言提升回归树BRT预测短鳍鳗分布生态学实例
Boosting集成学习原理与R语言提升回归树BRT预测短鳍鳗分布生态学实例
,时长10:25
模型的发展往往不是由我们的理解决定的,而是由新的数据的到来决定的,这些数据并不适合现有的看法。有些人甚至可以说,现实没有基本的模型(或数据生成过程)。正如汉森在《计量经济学模型选择的挑战》中写道。
“模型应该被视为近似值,计量经济学理论应该认真对待这一点”
所有的理论都自然而然地遵循 "如果这是一个过程,那么我们就显示出对真实参数的收敛性 "的思路。收敛性很重要,但这是一个很大的假设。无论是否存在这样的过程,这样的真实模型,我们都不知道它是什么。同样,特别是在社会科学领域,即使有一个真正的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 <- 500boosf <- 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 = 30for(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_er[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) {wghs[i,] <- lm $oefpd <- t(eigs[i,])%*%c(1, aht[i,] )## 稳健的权重for (i in iitnow:T) {whs[i,] <- q(bs[1:(i-1)]~ aft[1:(i-1),] )$cefprd[i] <- t(wihs[i,] )*c(1, atfha[i,])##基于误差的方差。MSE的倒数for (i in n_no:TT) {mp =aply(aerr[1:(i-1),]^2,2,ean)/um(aply(mter[1:(i-1),]^2,2,man))wigs[i,] <- (1/tmp)/sum(1/tep)ped[i] <- t(wits[i,] )%*%c(maat[i,] )##使用约束最小二乘法for (i in itd:wTT) {weht[i,] <- s1(bs[1:(i-1)], a_fat[1:(i-1),] )$wigtsred[i] <- t(wehs[i,])%*%c(aht[i,] )##根据损失的平方函数,挑选出迄今为止表现最好的模型tmp <- apy(mt_fat[-c(1:iit_wdow),], 2, ser, obs= obs[-c(1:ntwiow)] )for (i in it_idw:TT) {wghs[i,] <- rp(0,p)wihts[i, min(tep)] <- 1ped[i] <- t(wiht[i,] )*c(mht[i,] )} }MSE <- sr(obs= os[-c(1:intiow)], red= red[-c(1:itwiow)])
最受欢迎的见解
1.在python中使用lstm和pytorch进行时间序列预测
2.python中利用长短期记忆模型lstm进行时间序列预测分析
3.使用r语言进行时间序列(arima,指数平滑)分析
4.r语言多元copula-garch-模型时间序列预测
5.r语言copulas和金融时间序列案例
6.使用r语言随机波动模型sv处理时间序列中的随机波动
7.r语言时间序列tar阈值自回归模型
8.r语言k-shape时间序列聚类方法对股票价格时间序列聚类
9.python3用arima模型进行时间序列预测
拓端tecdat:R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据相关推荐
- 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险
最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...
- 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系
最近我们被客户要求撰写关于向量误差修正模型的研究报告,包括一些图形和统计输出. 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以 ...
- 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例
最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...
- 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...
- 利用R语言预测银行客户信用的优劣(随机森林方法)
我们选取的数据时1994年德国的一家银行在平定客户信用风险好坏的时候用到的一组变量,共有1000组数据.由于年代久远可能和实际有些出入.数据可以在下面的网址下载. http://archive.ics ...
- R语言第十一讲 决策树与随机森林
概念 决策树主要有树的回归和分类方法,这些方法主要根据分层和分割 的方式将预测变量空间划分为一系列简单区域.对某个给定待预测的观 测值,用它所属区域中训练集的平均值或众数对其进行预测. ...
- R语言使用caretEnsemble包的caretStack函数把多个机器学习模型融合成一个模型、构建融合(集成)预测模型、使用融合模型进行预测推理
R语言使用caretEnsemble包的caretStack函数把多个机器学习模型融合成一个模型.构建融合(集成)预测模型.自定义融合模型的trainControl参数.method参数.评估指标参数 ...
- R语言中的广义线性模型(GLM)和广义相加模型(GAM):多元(平滑)回归分析保险资金投资组合信用风险敞口
最近我们被客户要求撰写关于信用风险敞口的研究报告,包括一些图形和统计输出. 在之前的课堂上,我们已经看到了如何可视化多元回归模型(带有两个连续的解释变量).在此,目标是使用一些协变量(例如,驾驶员的年 ...
- R语言广义线性模型函数GLM、(Model fit and regression diagnostics)、模型充分性评估方法、使用plot函数以及car包函数
R语言广义线性模型函数GLM.(Model fit and regression diagnostics).模型充分性评估方法.使用plot函数以及car包函数 目录
- R语言使用pwr包的pwr.f2.test函数对线性回归模型(Linear models)进行效用分析(power analysis)的语法
R语言使用pwr包的pwr.f2.test函数对线性回归模型(Linear models)进行效用分析(power analysis)的语法 目录
最新文章
- 【学习】009 NIO编程
- Linux安装python3.6 和pip
- 极路由+NETGEAR 传输无线网络
- CSP认证201512-3	画图[C++题解]:dfs、左下角建系、坐标反着读入
- 基于ZXing的二维码,你可以这样改造它
- C#开发微信门户及应用(8)-微信门户应用管理系统功能介绍
- Java IO: Reader And Writer
- Taro+react开发(38)注意请求接口的/
- mysql scope runtime_maven scope provided和runtime的例子
- 备课笔记190826
- 承接各类软件开发项目
- 《狂人C》阅读笔记(1)
- 中兴机顶盒服务器地址大全,中兴机顶盒安装配置
- 诚龙网刻PXE网刻出错解决
- 分数排名 mysql_mysql 分数排名
- 【python入门】循环语句
- 正则表达式 基本汉字 特殊字符
- 基于T5CPU的智能屏产品型号与内核对照表
- word文档中如何让正文分栏但是脚注不分栏
- Ubuntu安装电源管理工具TLP
热门文章
- 如何手动从Exchange2007/1010边缘/集线器传输服务器卸载ScanMail for Exchange(SMEX10.0)程序...
- Knowledge Graph - NLP
- 《快速开发》通过Maven创建WebService项目Hello World!
- sshpass-Linux命令之非交互SSH密码验证
- shell日期加减及数组循环
- T-Sql 创建全文索引
- 一脸懵逼学习Hive的使用以及常用语法(Hive语法即Hql语法)
- ubuntu系统安装初始化脚本
- HDU 4931 Happy Three Friends(水)
- 在Spring Boot中使用 @ConfigurationProperties 注解, @EnableConfigurationProperties