m0_74193436 2024-05-31 15:45 采纳率: 54.5%
浏览 1

R语言代码的动态展示

要求:修改代码使其采用动态交互或动画形式展示
案例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)

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-05-31 15:46
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    要将R语言代码修改为支持动态交互或动画展示,你可以使用一些R的包,例如shiny用于创建动态交互应用,gganimateplotly用于创建动画。以下是一些示例代码,展示如何将你的代码修改以支持动态交互和动画。

    1. 使用shiny创建动态交互应用

    shiny是一个强大的包,可以用来创建动态的web应用。以下是一个简单的示例,展示如何使用shiny来展示时间序列数据和预测结果。

    library(shiny)
    library(forecast)
    
    ui <- fluidPage(
      titlePanel("时间序列分析"),
      sidebarLayout(
        sidebarPanel(
          sliderInput("years", "选择年份:", min = 2000, max = 2010, value = c(2000, 2010)),
          actionButton("update_plot", "更新图表")
        ),
        mainPanel(
          plotOutput("ts_plot")
        )
      )
    )
    
    server <- function(input, output, session) {
      
      # 读取数据
      advertise_data <- read_excel("advertise.xlsx")
      
      # 创建时间序列对象
      ts_data <- ts(advertise_data$Expenditure, start = c(2000, 1), frequency = 1)
      
      observeEvent(input$update_plot, {
        # 更新时间序列数据范围
        selected_ts <- window(ts_data, start = input$years[1], end = input$years[2])
        
        # 指数平滑模型
        ets_model <- ets(selected_ts)
        ets_forecast <- forecast(ets_model, h = 2)
        
        # 更新图表
        output$ts_plot <- renderPlot({
          plot(selected_ts)
          lines(ets_forecast, col = "red")
        })
      })
    }
    
    shinyApp(ui, server)
    

    2. 使用gganimateplotly创建动画

    gganimateplotly都是用来创建动画的包。以下是使用gganimate的一个简单示例。

    library(ggplot2)
    library(gganimate)
    library(forecast)
    
    # 假设你已经有了一个时间序列对象ts_data
    
    # 创建基础ggplot对象
    p <- ggplot(data = data.frame(Time = ts_data, Value = ts_data), aes(x = Time, y = Value)) +
      geom_line() +
      transition_time(Time)
    
    # 动画展示
    animate(p, fps = 1, nframes = 100, width = 600, height = 400)
    

    参考资料

    请注意,上述代码仅为示例,你需要根据你的具体需求进行调整。例如,你需要确保数据文件的路径是正确的,并且你的R环境中已经安装了所需的包。此外,创建动态交互应用和动画可能需要一些时间来学习和实践,特别是如果你之前没有使用过这些工具。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月31日

悬赏问题

  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据