要求:修改代码使其采用动态交互或动画形式展示
案例1:下表是2000-2010年的广告费用支出(单位:千元)情况。请选用合适的方法对该数据进行分解与平滑,并预测2012年的广告费用支出。(数据:advertise.xlsx)
案例2:某地区1992-2004年商品出口额(单位:亿美元)(数据:export.xlsx),分析商品出口额的变动趋势,选择适当的趋势模型预测2006年该地区的商品出口额。
案例3:从国家统计局网站获得的1978-2013年中国社会消费品零售总额的年度数据(单位:亿元)。(数据:retail.xlsx)
(1) 分析1978年以来我国社会消费品零售总额发展变化的基本态势,并对各种方法的分析结果加以比较。
(2) 预测2014年中国社会消费品零售总额的可能水平。
install.packages("readxl")
install.packages("forecast")
library(readxl)
library(forecast)
# 读取Excel文件中的广告费用支出数据
advertise_data <- read_excel("C:\\Users\\ASUS\\Desktop\\南京理工大学\\R语言\\实验课\\实验五时间序列建模与分析\\实验五数据及代码\\advertise.xlsx")
advertise_data
# 创建数据框
data <- data.frame(
Year = 2000:2010,
Expenditure = c(88.1, 94.7, 102.1, 109.8, 118.1, 125.6, 132.6, 141.9, 150.9, 157.9, 162.6)
)
# 将年份转换为时间序列对象
ts_data <- ts(data$Expenditure, start = c(2000, 1), frequency = 1)
# 指数平滑
ets_model <- ets(ts_data)
ets_forecast <- forecast(ets_model, h = 5) # 预测未来5年
# 绘制指数平滑结果
plot(ets_forecast)
# 时间序列分解
ts_decomposition <- stl(ts_data, s.window = "periodic")
# 绘制时间序列分解结果
plot(ts_decomposition)
# 使用auto.arima()函数自动选择最佳的ARIMA模型
fit<-auto.arima(advertise_ts)
summary(fit)
# 进行预测
# 我们要预测2012年的数据,即预测接下来的2年
forecasts <- forecast(fit,h=2)
# 打印预测结果
print(forecasts)
# 绘制预测图
plot(forecasts)
install.packages("readxl")
install.packages("forecast")
library(readxl)
library(forecast)
# 读取Excel文件中的支出数据
exports_data=read_excel("C:\\Users\\ASUS\\Desktop\\南京理工大学\\R语言\\实验课\\实验五时间序列建模与分析\\实验五数据及代码\\export.xlsx")
# 确保年份列是数值型,出口额列也是数值型
exports_data$年份<-as.numeric(exports_data$年份)
exports_data$商品出口额<-as.numeric(exports_data$商品出口额)
# 将数据转换为时间序列格式
exports_ts<-ts(exports_data$商品出口额, start = c(1992), frequency = 1)
# 绘制时间序列图
plot(exports_ts, main = "Commodity Export Values", xlab = "Year", ylab = "Export Value (in USD billion)")
# 这里使用自动ARIMA模型
fit<-auto.arima(exports_ts)
summary(fit)
# 进行预测
# 这里我们预测2005和2006年的出口额
length(exports_ts)+1
length(exports_ts)+2
forecasts <- forecast(fit, h = 2)
print(forecasts)
# 提取2006年的预测值
forecast_2006 <- forecasts$mean[length(forecasts$mean)]
# 打印2006年的预测出口额
cat("Predicted export value for 2006: USD", round(forecast_2006, 2), "billion\n")
install.packages("readxl")
install.packages("ggplot2")
install.packages("forecast")
library(readxl)
library(ggplot2)
library(forecast)
# 读取Excel文件中的支出数据
retail_data <- read_excel("C:\\Users\\ASUS\\Desktop\\南京理工大学\\R语言\\实验课\\实验五时间序列建模与分析\\实验五数据及代码\\retail.xlsx")
head(retail_data)
# 假设我们的数据集只有一列名为"retail_total"
retail_ts <- ts(retail_data$零售总额, start=c(1978), frequency=1)
# (1)分析基本态势
# 描述性统计
summary(retail_ts)
# 时间序列图
plot(retail_ts, main="中国社会消费品零售总额", xlab="年份", ylab="零售总额(亿元)", col="blue")
# 时间序列分析,例如ADF检验来判断是否平稳
install.packages("tseties")
library(tseries)
adf.test(retail_ts)
# (2)预测2014年水平
install.packages("forecast")
library(forecast)
# 使用ARIMA模型进行预测
fit <- auto.arima(retail_ts)
forecast_2014 <- forecast(fit, h=1)
print(forecast_2014)
# 预测2014年的零售总额
predicted_2014 <- forecast_2014$mean[2] # 因为h=1,所以预测值在第二个位置
print(paste("预测2014年中国社会消费品零售总额为:", round(predicted_2014, 2), "亿元"))
# 可视化预测结果
plot(forecast_2014)