前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言气象模型集成预报:神经网络、回归、svm、决策树用环流因子预测降雨降水数据|附代码数据

R语言气象模型集成预报:神经网络、回归、svm、决策树用环流因子预测降雨降水数据|附代码数据

原创
作者头像
拓端
发布2023-07-24 14:20:28
2840
发布2023-07-24 14:20:28
举报
文章被收录于专栏:拓端tecdat

全文链接:http://tecdat.cn/?p=31664

我们被客户要求撰写关于气象集成预报技术的研究报告,包括一些图形和统计输出。 随着天气预报技术的发展,数值预报产品日益丰富,预报方法多种多样 点击文末“阅读原文”获取完整代码数据******** )。

在实际应用中,对每个具体的问题,各种预报方法得出的结果通常是不一致的,因而不知道如何将它们统一起来。因此需要采用一种较好的处理方法,把不同预报方法对同一要素的多种预报结果综合在一起,从而得出一个优于单一预报方法的预报结论,这就是预报方法的集成问题。

本文分析了传统的基于加权的集成预报方法及其在气象预测应用中存在的问题,在此基础上提出了一种新的基于数据挖掘的集成预报方法,该方法选用BP人工神经网络建立集成预报分类器,对文中BP人工神经网络、多元回归、SVM、决策树模型四种子预报方法的预报结果进行集成和综合。

基于数据挖掘的集成预报方法利用从子预报方法中筛选的训练集进行训练,得到集成预报分类器;该集成预报分类器可以根据环流因子的输入,直接得到一种最优子预报方法,然后利用得到的最优子预报方法去预测,将最优子预报方法的预报结果作为集成预 报的预报结果。

实验数据集描述

实验使用的输入数据是环流因子,是由国家气候中心气候系统诊断预测室再处理资料,资料数据全都为整型。

环流因子数据

图片
图片

30年降水数据

图片
图片

本文介绍了四种常见的气象子预报方法:BP人工神经网络、多元回归、SVM、决策树模型,并通过实际的数据集进行预报检验。从实验结果可以得出,对于不同的预报环境和预报样本,并没有哪一种子预报方法的预报结果能够保证始终是最优的。

代码语言:javascript
复制
环流因子=read.csv("环流因子.csv") 
降水数据=read.csv("30年降水数据.csv") 
图片
图片

转换降水数据

代码语言:javascript
复制
y=0  
   
 for(i in 2:ncol(降水数据)){  
 y=c(y,降水数据[,i])
 
 
 环流因子=环流因子[1:length(yy),]  
   
 datanew=data.frame(降水数据=yy,环流因子[,-1])
图片
图片

多元回归

代码语言:javascript
复制
model=lm(降水数据~.,data=datanew)
图片
图片
代码语言:javascript
复制
plot(datanew[,2:1])  
 abline(model)
图片
图片

点击标题查阅往期内容

图片
图片

ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测

图片
图片

左右滑动查看更多

图片
图片

01

图片
图片

02

图片
图片

03

图片
图片

04

图片
图片

svm支持向量机

现在我们在训练集上使用来训练线性SVM

代码语言:javascript
复制
##  
##  
## Parameters:  
##    SVM-Type:  eps-regression  
##  SVM-Kernel:  radial  
##        cost:  1  
##       gamma:  0.01351351  
##     epsilon:  0.1  
##  
##  
## Number of Support Vectors:  107

绘制拟合图

代码语言:javascript
复制
points(datanew[,2], predictedY, col = "red", pch=4)
图片
图片
代码语言:javascript
复制
mse <- function(error)  
 {  
   sqrt(mean(error^2))  
 }
 
## [1] 599.4382

决策树

绘制决策树

代码语言:javascript
复制
## Variables actually used in tree construction:  
## [1] X.19 X.30 X.57 X.72 X.73  
##  
## Root node error: 328275991/372 = 882462


draw.tree(CARTmodel)
图片
图片

根据cp值对决策树进行剪枝 

代码语言:javascript
复制
 cable[which.min(CARTmodel$cptable[,"xerror"]),"CP"]

对数据进行预测

代码语言:javascript
复制
plot(tree.pred,  datanew.test$降水数据 )  
 abline(0,1)
图片
图片

神经网络

代码语言:javascript
复制
y=datanew$降水数据  
#  y<-data.frame((y-min(y))/(max(y)-min(y)))  
 names(y)<-'y'  
   
 mod1<-nnet(datanew
 
 summary(mod1)

## a 75-10-1 network with 771 weights  
## options were - linear output units  
##   b->h1  i1->h1  i2->h1  i3->h1  i4->h1  i5->h1  i6->h1  i7->h1  i8->h1  
##   -0.26    0.53   -0.19    0.00   -0.39   -0.57    0.40   -0.05    0.54  
##  i9->h1 i10->h1 i11->h1 i12->h1 i13->h1 i14->h1 i15->h1 i16->h1 i17->h1  
##    0.57   -0.51    0.53    0.66   -0.18   -0.15    0.36   -0.67   -0.54  
## i18->h1 i19->h1 i20->h1 i21->h1 i22->h1 i23->h1 i24->h1 i25->h1 i26->h1  
   
##   h9->o  h10->o  
##   47.66   55.81
图片
图片

模型集成

在实际应用中,对每个具体的问题,各种预报方法得出的结果通常是不一致的,因而不知道如何将它们统一起来。一般地,每个具体预报方法的预报思想不同,其适应的具体环境也就不同,得到的预报结果的准确程度也不相同,对某类数据有较好预报结果的方法,对其它数据不一定有较好结果。因此需要采用一种较好的处理方法,把不同数值模式对同一要素的多种预报结果综合集成在一起,从而得出一个优于单一预报方法的预报结论,这就是预报方法的集成问题。

尽管常用的集成预报方法有回归集成、平均集成、多数表决和加权集成预报方法等,然而这些集成预报方法本质上属于一种基于加权的集成方法。

本文方法的大致思想如下:以各子预报方程的历史拟合样本作为神经网络集成预报模型学习矩阵输入,相应的预报量序列作为学习矩阵的期望输出。只是确定权值的方式是不断地进行学习训练,权值存在于复杂的人工神经网络结构中,并不是线性和容易理解的。最后,把该子预报方法的预报结果作为集成预报方法的预报结果。

使用神经网络对训练结果进行集成

代码语言:javascript
复制
 mod1<-nnt(trainerror,y,sizout=T)
 
 ## # weights:  61  
## initial  value 526570419.869292  
## iter  10 value 119410102.980870  
## iter  20 value 25370475.287456  
## final  value 25370458.492646  
## converged

summary(mod1)

## a 4-10-1 network with 61 weights  
## options were - linear output units  
##   b->h1  i1->h1  i2->h1  i3->h1  i4->h1  
##    0.37  148.56  162.50   -2.06    2.30  
##   b->h2  i1->h2  i2->h2  i3->h2  i4->h2  
##    0.48  -56.65   46.85    2.23   -1.23  
##   b->h3  i1->h3  i2->h3  i3->h3  i4->h3  
##   -0.11    7.56   15.11   -1.18    1.41  
##   b->h4  i1->h4  i2->h4  i3->h4  i4->h4  
##    0.42  -14.15  -11.55    1.49   -1.12  
##   b->h5  i1->h5  i2->h5  i3->h5  i4->h5  
##   -0.34   57.24   79.60 -176.40    6.91  
##   b->h6  i1->h6  i2->h6  i3->h6  i4->h6  
##   -0.44   -0.22    6.17    0.82   -0.01  
##   b->h7  i1->h7  i2->h7  i3->h7  i4->h7  
##    0.03   -0.14   -0.61    0.04   -0.14  
##   b->h8  i1->h8  i2->h8  i3->h8  i4->h8  
##   -0.34   65.01  -72.91  -10.22    9.67  
##   b->h9  i1->h9  i2->h9  i3->h9  i4->h9  
##    0.20   -1.31   14.80    0.90   -0.73  
##  b->h10 i1->h10 i2->h10 i3->h10 i4->h10  
##   -0.46   -2.63  -23.62   -0.60    1.51  
##    b->o   h1->o   h2->o   h3->o   h4->o   h5->o   h6->o   h7->o   h8->o  
##  368.20 -340.26   -4.79 4963.64 -158.47  517.21   24.37   -5.77   23.41  
##   h9->o  h10->o  
##   30.60  336.40

绘制拟合数据

图片
图片

图片
图片

点击文末 “阅读原文”

获取全文完整代码数据资料。

本文选自《R语言气象模型集成预报技术:神经网络、回归、svm、决策树用环流因子预测降雨降水数据》。

图片
图片

点击标题查阅往期内容

R语言多变量广义正交GARCH(GO-GARCH)模型对股市高维波动率时间序列拟合预测 Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测 ARMA-GARCH-COPULA模型和金融时间序列案例 时间序列分析:ARIMA GARCH模型分析股票价格数据 GJR-GARCH和GARCH波动率预测普尔指数时间序列和Mincer Zarnowitz回归、DM检验、JB检验 【视频】时间序列分析:ARIMA-ARCH / GARCH模型分析股票价格 时间序列GARCH模型分析股市波动率 PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化 极值理论 EVT、POT超阈值、GARCH 模型分析股票指数VaR、条件CVaR:多元化投资组合预测风险测度分析 Garch波动率预测的区制转移交易策略 金融时间序列模型ARIMA 和GARCH 在股票市场预测应用 时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格 R语言风险价值:ARIMA,GARCH,Delta-normal法滚动估计VaR(Value at Risk)和回测分析股票数据 R语言GARCH建模常用软件包比较、拟合标准普尔SP 500指数波动率时间序列和预测可视化 Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用 MATLAB用GARCH模型对股票市场收益率时间序列波动的拟合与预测R语言GARCH-DCC模型和DCC(MVT)建模估计 Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列 R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格 R语言ARIMA-GARCH波动率模型预测股票市场苹果公司日收益率时间序列 Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测 R语言时间序列GARCH模型分析股市波动率 R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测 matlab实现MCMC的马尔可夫转换ARMA - GARCH模型估计 Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测 使用R语言对S&P500股票指数进行ARIMA + GARCH交易策略 R语言用多元ARMA,GARCH ,EWMA, ETS,随机波动率SV模型对金融时间序列数据建模 R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析 R语言多元Copula GARCH 模型时间序列预测 R语言使用多元AR-GARCH模型衡量市场风险 R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格 R语言用Garch模型和回归模型对股票价格分析 GARCH(1,1),MA以及历史模拟法的VaR比较 matlab估计arma garch 条件均值和方差模型R语言POT超阈值模型和极值理论EVT分析R语言时间序列GARCH模型分析股市波动率 R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测 matlab实现MCMC的马尔可夫转换ARMA - GARCH模型估计 Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测 使用R语言对S&P500股票指数进行ARIMA + GARCH交易策略 R语言用多元ARMA,GARCH ,EWMA, ETS,随机波动率SV模型对金融时间序列数据建模 R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析 R语言多元Copula GARCH 模型时间序列预测 R语言使用多元AR-GARCH模型衡量市场风险 R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格 R语言GARCH-DCC模型和DCC(MVT)建模估计 R语言用Garch模型和回归模型对股票价格分析 GARCH(1,1),MA以及历史模拟法的VaR比较 matlab估计arma garch 条件均值和方差模型 R语言ARMA-GARCH-COPULA模型和金融时间序列案例

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 全文链接:http://tecdat.cn/?p=31664
  • 实验数据集描述
    • 环流因子数据
      • 30年降水数据
      • 转换降水数据
      • 多元回归
      • svm支持向量机
        • 绘制拟合图
        • 决策树
          • 绘制决策树
            • 根据cp值对决策树进行剪枝 
            • 对数据进行预测
            • 神经网络
            • 模型集成
              • 使用神经网络对训练结果进行集成
              • 绘制拟合数据
              相关产品与服务
              数据万象
              数据万象(Cloud Infinite,CI)是依托腾讯云对象存储的数据处理平台,涵盖图片处理、内容审核、媒体处理、AI 识别、文档预览等功能,为客户提供一站式的专业数据处理解决方案,满足您多种业务场景的需求。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档