计算机与通信行业发展趋势时间序列预测R分析
Posted 三个质子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机与通信行业发展趋势时间序列预测R分析相关的知识,希望对你有一定的参考价值。
首先第一步从中商情报网爬取数据,包括从2012年2月到2017年的企业数以及资产总额,还有增长率,亏损额等等数据。
背景分析:根据2012到2017年间行业的企业数量及资产总额变化预测计算机与通信行业发展趋势。
数据探索:首先是缺失值以及异常值的处理,其次这是一个时间序列,需要从数据中抽取数据构建时间序列,如下:
library(tseries)
library(tseries)
library(forecast)
library(stats)
#读入数据并转为数据框
data <- read.csv("companydata.csv",header = TRUE,sep = ",")
data <- data.frame(data)
#提取公司数量列构建时间序列
com_num <- data$num
tcom_num <- ts(com_num,start = c(2012,2),frequency = 12)
#画出时间序列
plot(tcom_num)
由图形大概可以看出时序包含趋势因子,季节因子还有随机因子,对其进行分解并画出:
fit_com <- stl(tcom_num,s.window = "periodic")
plot(fit_com)
数据变换:时间序列的ARIMA模型需要时序具备平稳性,由图形可知不具备,需对其进行差分变换。另外平稳性验证也可以由一下代码验证:
adf.test(tcom_num)
#确定差分次数
ndiffs(tcom_num) #由此计算差分为一阶差分,但实际调整二阶差分效果会更好。
dtcom_num <- diff(tcom_num)
plot(dtcom_num)
adf.test(dtcom_num)
挖掘分析:确定ARIMA模型参数:
#选择模型参数
Acf(dtcom_num)
Pacf(dtcom_num)
#确定d=2,p=3,q=2
#拟合模型
fit1 <- arima(tcom_num,order = c(3,2,2))
#模型评价
qqnorm(fit1$residuals)
qqline(fit1$residuals)
Box.test(fit1$residuals,type = "Ljung-Box")
#预测
fcom_num <- forecast(fit1,5)
plot(fcom_num,xlab = "time",ylab = "fcom_num")
后五个月的预测趋势:
资产总额的预测一致:
#产值趋势分析
mon_num <- data$mon
tmon_num <- ts(mon_num,start = c(2012,2),frequency = 12)
plot(tmon_num)
fit_mon <- stl(tmon_num,s.window = "periodic")
plot(fit_mon)
adf.test(tmon_num)
ndiffs(tmon_num)
dtmon_num <- diff(tmon_num,lag = 2)
plot(dtmon_num)
Acf(dtmon_num)
Pacf(dtmon_num)
fit2 <- arima(dtmon_num,order = c(2,2,1))
qqnorm(fit2$residuals)
qqline(fit2$residuals)
Box.test(fit2$residuals,type = "Ljung-Box")
fmon_num <- forecast(fit2,5)
plot(fmon_num,xlab = "time",ylab = "fmon_num")
此外如果时序方差不为固定常数,可对其进行对数变换,保证其稳定性。
以上是关于计算机与通信行业发展趋势时间序列预测R分析的主要内容,如果未能解决你的问题,请参考以下文章