使用Shiny的ETS模型

时间:2013-08-26 14:52:22

标签: r shiny ets

我尝试使用新的RStudio功能 Shiny 创建一个Web应用程序。 我正在尝试ETS状态空间模型。我想手动指定模型类型( server.R 中的粗体文本)。我在server.R中的引号内输入。如果我们在引号内给出输出,它将不会。 你能帮帮我吗...

ui.R

library(shiny)
shinyUI(pageWithSidebar(
  headerPanel( "Forecast", "Flowserve"),
  sidebarPanel(
    fileInput('file1', 'Select csv file',
              accept=c('text/csv')
              ),
    checkboxInput('header', 'Header', TRUE),
    radioButtons('sep', 'Separator',
                 c(Comma=',', Semicolon=';', Tab='\t')
                 ),
    tags$hr(),
    numericInput("startyear", "Start Year and Month",2010),
    sliderInput("month","",min=1, max=12,value=1, step=1, animate=T),

    tags$hr(),
    selectInput("error", "Error Type", list("Multiplicative"="M","Additive"="A")),
    selectInput("trend", "Trend Type", list("Multiplicative"="M","Additive"="A", "Null"="N")),
    selectInput("seasonal", "Seasonal Type", list("Multiplicative"="M","Additive"="A", "Null"="N")),
  submitButton("UPDATE")
  ),

  mainPanel(

    tabsetPanel(
    tabPanel("Data", tableOutput('contents')),
    tabPanel("Time Plot",  plotOutput('tsplot')),
    tabPanel("Forecast",  plotOutput('plotforecast'))
            )
    )
))

server.R

library(shiny)
library(forecast)
shinyServer(function(input,output){

  data1 = reactive({
  inFile<-input$file1
  if(is.null(inFile))
    return(NULL)
  read.csv(inFile$datapath, header=input$header, sep=input$sep)
  })
output$plotforecast<-renderPlot(function(){
  datats<-ts(data1(), start=c(input$startyear,input$month), frequency=12)
  model<-ets(datats, model="input$error input$trend input$seasonal")
  fit1<-fitted(model)
  future1<-forecast(model, h=4, level=c(95,97.5))  
  p2<-plot.forecast(future1,shadecols=c("yellow","orange"), xlab=expression(bold(Year)), ylab=expression(bold(Demand)))
  print(p2)
  })

1 个答案:

答案 0 :(得分:1)

您应该将model<-ets(datats, **model="input$error input$trend input$seasonal"**)替换为model<-ets(datats, model=paste0(input$error, input$trend, input$seasonal)),因为model参数需要3个字母的字符串。 paste0连接字符向量(有关详细信息,请参阅?paste0。)