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

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

我们被客户要求撰写关于气象集成预报技术的研究报告,包括一些图形和统计输出。在实际应用中,对每个具体的问题,各种预报方法得出的结果通常是不一致的,因而不知道如何将它们统一起来。因此需要采用一种较好的处理方法,把不同预报方法对同一要素的多种预报结果综合在一起,从而得出一个优于单一预报方法的预报结论,这就是预报方法的集成问题。

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

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


实验数据集描述


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


环流因子数据

30年降水数据

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

环流因子=read.csv("环流因子.csv") 
降水数据=read.csv("30年降水数据.csv")


转换降水数据


y=0  
   
 for(i in 2:ncol(降水数据)){  
 y=c(y,降水数据[,i])
 
 
 环流因子=环流因子[1:length(yy),]  
   
 datanew=data.frame(降水数据=yy,环流因子[,-1])

 


多元回归


model=lm(降水数据~.,data=datanew)

plot(datanew[,2:1])  
 abline(model)

点击标题查阅往期内容


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


01

02

03

04

svm支持向量机


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

##  
##  
## Parameters:  
##    SVM-Type:  eps-regression  
##  SVM-Kernel:  radial  
##        cost:  1  
##       gamma:  0.01351351  
##     epsilon:  0.1  
##  
##  
## Number of Support Vectors:  107


绘制拟合图

points(datanew[,2], predictedY, col = "red", pch=4)

mse <- function(error)  
 {  
   sqrt(mean(error^2))  
 }
 
## [1] 599.4382


决策树


绘制决策树

## 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值对决策树进行剪枝

cable[which.min(CARTmodel$cptable[,"xerror"]),"CP"]


对数据进行预测


plot(tree.pred,  datanew.test$降水数据 )  
 abline(0,1)

神经网络


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


模型集成


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

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

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


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

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语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
9月前
|
运维 监控 Cloud Native
构建深度可观测、可集成的网络智能运维平台
本文介绍了构建深度可观测、可集成的网络智能运维平台(简称NIS),旨在解决云上网络运维面临的复杂挑战。内容涵盖云网络运维的三大难题、打造云原生AIOps工具集的解决思路、可观测性对业务稳定的重要性,以及产品发布的亮点,包括流量分析NPM、网络架构巡检和自动化运维OpenAPI,助力客户实现自助运维与优化。
R语言基于表格文件的数据绘制具有多个系列的柱状图与直方图
【9月更文挑战第9天】在R语言中,利用`ggplot2`包可绘制多系列柱状图与直方图。首先读取数据文件`data.csv`,加载`ggplot2`包后,使用`ggplot`函数指定轴与填充颜色,并通过`geom_bar`或`geom_histogram`绘图。参数如`stat`, `position`, `alpha`等可根据需要调整,实现不同系列的图表展示。
277 9
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
12月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
11月前
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
322 0
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
965 6
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
861 4
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
1031 1
|
消息中间件 Java Kafka
springboot集成kafka
springboot集成kafka
401 2