系列文章目录

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语言简单指数平滑(自编函数)相关推荐

  1. R语言时间序列(time series)分析实战:简单指数平滑法预测

    R语言时间序列(time series)分析实战:简单指数平滑法预测 目录

  2. R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行expoTrans指数变换(Exponential transformation、可以处理负数)

    R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行expoTrans指数变换(Exponential transformation.可以处理负数).设置method参数 ...

  3. 【视频】Python和R语言使用指数加权平均(EWMA),ARIMA自回归移动平均模型预测时间序列...

    原文链接:http://tecdat.cn/?p=21773 时间序列(从现在起称为TS)被认为是数据科学领域中鲜为人知的技能之一(点击文末"阅读原文"获取完整代码数据). 视频: ...

  4. R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据、获取美国10年期债券收益率数据

    R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据.获取美国10年期债券收益率数据 目录 R语言使用quantmod包的getSymbols函数从指定金融数 ...

  5. R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据、从雅虎金融读取著名港股长江实业的股票数据

    R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据.从雅虎金融读取著名港股长江实业的股票数据 目录 R语言使用quantmod包的getSymbols函数从 ...

  6. R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据、从雅虎金融读取著名的苹果公司的全部股票数据

    R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据.从雅虎金融读取著名的苹果公司的全部股票数据 目录 R语言使用quantmod包的getSymbols函数 ...

  7. R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据、美股不使用后缀、其它股票需要使用后缀:大陆沪市使用:“.SS“,深市使用:“.SZ“,香港使用:“.HK

    R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据.美股不使用后缀.其它股票需要使用后缀:大陆沪市使用:".SS",深市使用:" ...

  8. R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据、对股票进行除权除息调整

    R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据.对股票进行除权除息调整 目录 R语言使用quantmod包的getSymbols函数从指定金融数据源获取 ...

  9. R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据、对股票进行除权除息调整、设置使用Adjusted列的数据

    R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据.对股票进行除权除息调整.设置使用Adjusted列的数据 目录 R语言使用quantmod包的getSy ...

最新文章

  1. Pycharm安装工具包
  2. 网页标准HTML5标准较量正酣
  3. rabbit以及php amqp扩展使用
  4. 聚合复合_聚合复合微生物菌剂的功能
  5. AspNet Core 6.0 Json写默认首字母小写(camelCase)问题
  6. 王爽 汇编语言第三版 第9章 转移指令的原理
  7. 判断是否是完全二叉树和是否为满二叉树
  8. iOS 证书, provision profile作用
  9. fill()和fill()_n函数还有memset()函数的比较
  10. librosa 语音库(二)STFT 的实现
  11. 获取 rabbitmq 实时数据
  12. 给我“空降”一个弟兄
  13. python爬虫获取下一页_python爬虫获取下一页
  14. Nginx高性能Web服务器实战教程PDF
  15. Python-Opencv fitLine 拟合直线
  16. 前端下载本地excel模板
  17. 加密狗 检测到程序在终端服务器上运行
  18. 黑苹果安装界面选择语言
  19. elasticsearch7.9安装[单集群单节点、开启权限认证]
  20. 转贴: 浅析多声道LPCM TRUE HD DTS HD之异同

热门文章

  1. C++ 函数返回数组处理方法
  2. 详解立即执行函数(function(){}()),(function(){})()
  3. Firefox里面玩FC游戏 基本上小时候的小霸王游戏都有
  4. 计算机仿真专业学校,虚拟现实专业好的学校有什么
  5. 鸿蒙os智能硬件论坛,华为终于公开了鸿蒙OS的野心!
  6. 安装nvidia驱动报错解决方案
  7. 如何让一款没什么差异的产品,从“好”变成“更好”?
  8. MobileNet 进化史: 从 V1 到 V3(V1篇)
  9. Leaflet基本用法
  10. leaflet的基础用法