R语言简单指数平滑(自编函数)
系列文章目录
R语言利用贝叶斯分类法(klaR程序包),训练数据集,预测数据的分类
R语言载入arules程序包的Epub数据集,使用Apriori算法,进行关联规则分析
R语言进行系统聚类分析并作图(数据来源国家统计局)
R语言和RStudio安装,载入TXT、CSV和XLSX(利用RODBC)文件
文章目录
- 系列文章目录
- 前言
- 一、以AirPassengers数据集用ses()函数做简单指数平滑预测
- 二、编写自己的函数实现简单指数平滑
- 1.引入库
- 三、修改函数,以返回平方误差之和
- 四、用optim()函数找到a和s的最佳值
- 五、将myses2()和myses3()结合起来,同时找A和S0的最佳值并返回下一期的预测值
- 总结
前言
这其实是课程作业,要求如图:
一、以AirPassengers数据集用ses()函数做简单指数平滑预测
代码如下:
install.packages("forecast")
library(forecast)
model<-ses(AirPassengers)
forecast(model,h=1)
autoplot(model)+
autolayer(fitted(model))
执行结果如图:
用summary方法能查看原ses()方法的参数,可知默认的alpha值为0.9999,默认的S0值为111.9892。
summary(model)
二、编写自己的函数实现简单指数平滑
1.引入库
代码如下:
myses1 <- function(y,a,s) {l=rep(1,145);l[1]=a*y[1]+(1-a)*s;for(t in 2:144 ){l[t]=a*y[t]+(1-a)*l[t-1];}y[145]=l[144];return(y[145]);
}
y<-matrix(AirPassengers,nrow = 1,ncol = 144)
model1<-myses(y,0.9999,111.9892)
forecast(model1,h=1)
执行结果如图:
如图所示,确实给出了和ses()一样的执行结果,即431.9958.
summary(model1)
三、修改函数,以返回平方误差之和
myses2 <- function(y,a,s) {l=rep(1,145);l[1]=a*y[1]+(1-a)*s;VAR_sum=(y[1]-s)*(y[1]-s);for(t in 2:144 ){l[t]=a*y[t]+(1-a)*l[t-1];sum=sum+(y[t]-l[t])*(y[t]-l[t]);}return(sum);
}
y<-matrix(AirPassengers,nrow = 1,ncol = 144)
sum<-myses2(y,0.9999,111.9892)
sum
四、用optim()函数找到a和s的最佳值
myses3 <- function(z) {a=z[1]s=z[2]l=rep(1,145);var_y=matrix(AirPassengers,nrow = 1,ncol = 144)l[1]=a*y[1]+(1-a)*s;VAR_sum=(y[1]-s)*(y[1]-s);for(t in 2:144 ){l[t]=a*y[t]+(1-a)*l[t-1];sum=sum+(y[t]-l[t])*(y[t]-l[t]);}return(sum);
}
optim(c(0.9999,111.9892),fn=myses3,lower =c(0,0),upper = c(1,Inf),method = "L-BFGS-B")
五、将myses2()和myses3()结合起来,同时找A和S0的最佳值并返回下一期的预测值
myses4<-function(){myses3 <- function(z) {a=z[1]s=z[2]l=rep(1,144);var_y=matrix(AirPassengers,nrow = 1,ncol = 144)l[1]=a*y[1]+(1-a)*s;VAR_sum=(y[1]-s)*(y[1]-s);for(t in 2:144 ){l[t]=a*y[t]+(1-a)*l[t-1];sum=sum+(y[t]-l[t])*(y[t]-l[t]);}return(sum);}a=optim(c(0.9999,111.9892),fn=myses3,lower =c(0,0),upper = c(1,Inf),method = "L-BFGS-B")$par[1]s=optim(c(0.9999,111.9892),fn=myses3,lower =c(0,0),upper = c(1,Inf),method = "L-BFGS-B")$par[2]myses1 <- function(y,a,s) {l=rep(1,144);l[1]=a*y[1]+(1-a)*s;for(t in 2:144 ){l[t]=a*y[t]+(1-a)*l[t-1];}y[145]=l[144];return(y[145]);}y<-matrix(AirPassengers,nrow = 1,ncol = 144);print("a和s0的最优值为:");print(optim(c(0.9999,111.9892),fn=myses3,lower =c(0,0),upper = c(1,Inf),method = "L-BFGS-B")$par);print("下一期的预测值为:");print(myses1(y,a,s));}
总结
以上就是R语言实现简单指数平滑的教程。
R语言简单指数平滑(自编函数)相关推荐
- R语言时间序列(time series)分析实战:简单指数平滑法预测
R语言时间序列(time series)分析实战:简单指数平滑法预测 目录
- R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行expoTrans指数变换(Exponential transformation、可以处理负数)
R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行expoTrans指数变换(Exponential transformation.可以处理负数).设置method参数 ...
- 【视频】Python和R语言使用指数加权平均(EWMA),ARIMA自回归移动平均模型预测时间序列...
原文链接:http://tecdat.cn/?p=21773 时间序列(从现在起称为TS)被认为是数据科学领域中鲜为人知的技能之一(点击文末"阅读原文"获取完整代码数据). 视频: ...
- R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据、获取美国10年期债券收益率数据
R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据.获取美国10年期债券收益率数据 目录 R语言使用quantmod包的getSymbols函数从指定金融数 ...
- R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据、从雅虎金融读取著名港股长江实业的股票数据
R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据.从雅虎金融读取著名港股长江实业的股票数据 目录 R语言使用quantmod包的getSymbols函数从 ...
- R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据、从雅虎金融读取著名的苹果公司的全部股票数据
R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据.从雅虎金融读取著名的苹果公司的全部股票数据 目录 R语言使用quantmod包的getSymbols函数 ...
- R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据、美股不使用后缀、其它股票需要使用后缀:大陆沪市使用:“.SS“,深市使用:“.SZ“,香港使用:“.HK
R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据.美股不使用后缀.其它股票需要使用后缀:大陆沪市使用:".SS",深市使用:" ...
- R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据、对股票进行除权除息调整
R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据.对股票进行除权除息调整 目录 R语言使用quantmod包的getSymbols函数从指定金融数据源获取 ...
- R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据、对股票进行除权除息调整、设置使用Adjusted列的数据
R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据.对股票进行除权除息调整.设置使用Adjusted列的数据 目录 R语言使用quantmod包的getSy ...
最新文章
- Pycharm安装工具包
- 网页标准HTML5标准较量正酣
- rabbit以及php amqp扩展使用
- 聚合复合_聚合复合微生物菌剂的功能
- AspNet Core 6.0 Json写默认首字母小写(camelCase)问题
- 王爽 汇编语言第三版 第9章 转移指令的原理
- 判断是否是完全二叉树和是否为满二叉树
- iOS 证书, provision profile作用
- fill()和fill()_n函数还有memset()函数的比较
- librosa 语音库(二)STFT 的实现
- 获取 rabbitmq 实时数据
- 给我“空降”一个弟兄
- python爬虫获取下一页_python爬虫获取下一页
- Nginx高性能Web服务器实战教程PDF
- Python-Opencv fitLine 拟合直线
- 前端下载本地excel模板
- 加密狗 检测到程序在终端服务器上运行
- 黑苹果安装界面选择语言
- elasticsearch7.9安装[单集群单节点、开启权限认证]
- 转贴: 浅析多声道LPCM TRUE HD DTS HD之异同
热门文章
- C++ 函数返回数组处理方法
- 详解立即执行函数(function(){}()),(function(){})()
- Firefox里面玩FC游戏 基本上小时候的小霸王游戏都有
- 计算机仿真专业学校,虚拟现实专业好的学校有什么
- 鸿蒙os智能硬件论坛,华为终于公开了鸿蒙OS的野心!
- 安装nvidia驱动报错解决方案
- 如何让一款没什么差异的产品,从“好”变成“更好”?
- MobileNet 进化史: 从 V1 到 V3(V1篇)
- Leaflet基本用法
- leaflet的基础用法