首页 > 其他分享 >用LASSO,adaptive LASSO预测通货膨胀时间序列|附代码数据

用LASSO,adaptive LASSO预测通货膨胀时间序列|附代码数据

时间:2022-11-18 18:57:08浏览次数:80  
标签:预测 ## 回归 序列 adaptive LASSO 模型 lasso

原文链接:http://tecdat.cn/?p=22273

如果你了解数据科学领域,你可能听说过LASSO。LASSO是一个对目标函数中的参数大小进行惩罚的模型,试图将不相关的变量从模型中排除

动机

它有两个非常自然的用途,第一个是变量选择,第二个是预测。因为通常情况下,LASSO选择的变量会比普通最小二乘法(OLS)少得多,其预测的方差会小得多,代价是样本中出现少量的偏差。

LASSO最重要的特点之一是它可以处理比观测值多得多的变量,我说的是成千上万的变量。这是它最近流行的主要原因之一。

实例

在这个例子中,我使用最流行的LASSO,glmnet。我们可以非常快速地估计LASSO,并使用交叉验证选择最佳模型。根据我的经验,在时间序列的背景下,使用信息准则(如BIC)来选择最佳模型会更好。它更快,并避免了时间序列中交叉验证的一些复杂问题。

本文估计LASSO,并使用信息标准来选择最佳模型。我们将使用LASSO来预测通货膨胀。

## == 数据分解成样本内和样本外
y.in=y[1:100]; y.out=y[-c(1:100)]
x.in=x[1:100,]; x.out=x[-c(1:100),]

## == LASSO == ##
glmnet(x.in,y.in,crit = "bic")

图片


点击标题查阅往期内容

图片

r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

plot(lasso)

图片

上面的第一个图显示,当我们增加LASSO目标函数中的惩罚时,变量会归零。第二张图显示了BIC曲线和选定的模型。现在我们可以计算预测了。

## == 预测 == ##
predict(lasso,x.out)

图片

adaptive LASSO

LASSO有一个自适应版本,在变量选择方面有一些更好的特性。请注意,这并不总是意味着更好的预测。该模型背后的想法是使用一些以前知道的信息来更有效地选择变量。一般来说,这些信息是由LASSO或其他一些模型估计的系数。

## = adaLASSO = ##

adalasso(x.in,y.in,crit="bic",penalty=factor)
predict(adalasso, x.out)

图片

## = 比较误差 = ##
sqrt(mean((y.out-pred.ada)^2)

图片

在这种情况下,adaLASSO产生了一个更精确的预测。一般来说,adaLASSO比简单的LASSO的预测效果更好。然而,这不是一个绝对的事实。我见过很多简单LASSO做得更好的案例。

参考文献

[1] Bühlmann, Peter, and Sara Van De Geer. Statistics for high-dimensional data: methods, theory and applications. Springer Science & Business Media, 2011.

[2] Jerome Friedman, Trevor Hastie, Robert Tibshirani (2010). Regularization Paths for
Generalized Linear Models via Coordinate Descent. Journal of Statistical Software, 33(1), 1-22. URL http://www.jstatsoft.org/v33/i01/

[3] Marcio Garcia, Marcelo C. Medeiros , Gabriel F. R. Vasconcelos (2017). Real-time inflation forecasting with high-dimensional models: The case of Brazil. Internationnal Journal of Forecasting, in press.


图片

本文摘选 《 R语言用LASSO,adaptive LASSO预测通货膨胀时间序列 》 ,点击“阅读原文”获取全文完整资料。


点击标题查阅往期内容

MATLAB用Lasso回归拟合高维数据和交叉验证
群组变量选择、组惩罚group lasso套索模型预测新生儿出生体重风险因素数据和交叉验证、可视化
高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据
Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
R使用LASSO回归预测股票收益
广义线性模型glm泊松回归的lasso、弹性网络分类预测学生考试成绩数据和交叉验证
贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据
R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据
r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现
R语言高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据(含练习题)
广义线性模型glm泊松回归的lasso、弹性网络分类预测学生考试成绩数据和交叉验证
贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据
R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据
r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现
R语言高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据(含练习题)
Python中LARS和Lasso回归之最小角算法Lars分析波士顿住房数据实例
R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归应用分析
R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例
Python中的Lasso回归之最小角算法LARS
r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现
R语言实现LASSO回归——自己编写LASSO回归算法
r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现
R使用LASSO回归预测股票收益
R语言如何和何时使用glmnet岭回归
R语言中的岭回归、套索回归、主成分回归:线性模型选择和正则化
Python中的ARIMA模型、SARIMA模型和SARIMAX模型对时间序列预测
R语言arima,向量自回归(VAR),周期自回归(PAR)模型分析温度时间序列
【视频】Python和R语言使用指数加权平均(EWMA),ARIMA自回归移动平均模型预测时间序列
Python用ARIMA和SARIMA模型预测销量时间序列数据

标签:预测,##,回归,序列,adaptive,LASSO,模型,lasso
From: https://www.cnblogs.com/tecdat/p/16904225.html

相关文章

  • 891. 子序列宽度之和
    891.子序列宽度之和题解:对于每个数a而言,其对res的贡献在于a*a作为最大值的次数-a*a作为最小值的次数先将数组排序a作为最大值的次数:a的下标为i,比a小的数......
  • ARIMA模型,ARIMAX模型预测冰淇淋消费时间序列数据|附代码数据
    全文下载链接:http://tecdat.cn/?p=22511标准的ARIMA(移动平均自回归模型)模型允许只根据预测变量的过去值进行预测。该模型假定一个变量的未来的值线性地取决于其过去的值,......
  • 65:推导式创建序列_列表推导式_字典推导式_集合推导式_生成器推导式
    ###推导式创建序列推导式是从一个或者多个迭代器快速创建序列的一种方法。它可以将循环和条件判断结合,从而避免冗长的代码。推导式是典型的Python风格,会使用它代表你已......
  • Hadoop序列化之MapReduce案例
    Hadoop序列化序列化概述序列化就是把内存中的对象、转换成字节系列(或者其他数据传输协议)以便于存储到磁盘(持久化)和网络传输。反序列化就是将收到字节序列(或其他数据传输......
  • 891. 子序列宽度之和 ----- 贡献值法
    一个序列的宽度定义为该序列中最大元素和最小元素的差值。给你一个整数数组nums,返回nums的所有非空子序列的宽度之和。由于答案可能非常大,请返回对109+7取......
  • 792. 匹配子序列的单词数
    792.匹配子序列的单词数//时间复杂度n+m*kpublicintnumMatchingSubseq(Strings,String[]words){List<List<Pair>>list=newArrayList<>();......
  • 最长公共子序列
    最长公共子序列简介最长公共子序列(LongestCommonSubsequence),英文缩写为LCS。其定义是,一个序列S,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的......
  • 最长不下降子序列nlogn模板
     #include<bits/stdc++.h>usingnamespacestd;intd[100011],n,len,a[100011];intmain(){//freopen(".in","r",stdin);//freopen(".out","w",stdou......
  • 46:字典_序列解包用于列表元组字典
    ###序列解包序列解包可以用于元组、列表、字典。序列解包可以让我们方便的对多个变量赋值。>>>x,y,z=(20,30,10)>>>x20>>>y30>>>z10>>>(a,b,c)=(9,8,10)>>>......
  • 时间序列数据挖掘之分段线性表示(PLR)
    前言本篇博客用于记录个人在时间序列数据挖掘中进行的timeseriesrepresentation的实践。主要采用PLR(piecewiselinearrepresentation)的方式进行时间序列的降......