R中的指数平滑并用闪亮

时间:2016-01-05 15:14:50

标签: r ggplot2 shiny forecasting smoothing

我想构建预测技术,指数平滑方法是我的选择之一。但是,我在表示ggplot和计算结果/报告方面存在一些问题。

最初,我正在生成随机数据集,以便用于此技术,其中由用户确定要预测的字母数和周期数。例如;我有100天,接下来的4天愿意用他们的线路 - 上,下 - 来估计。然后我想以表格的形式学习这些数据的值。

当我尝试可视化绘图时,错误是:ggplot2不知道如何处理类mtstsmatrix的数据

其次,我想监控数据,如: enter image description here

 require(shiny)
 require(ggplot2)
 require(forecast)
 require(TTR)

 shinyServer(function(input, output, session){

   set.seed(123)
   output$es1 <- renderPlot({ 

  tmp <- data.frame(time = 1:100, sales = round(runif(100, 150, 879)) )
  tmp.mean <- HoltWinters(x=tmp$sales, alpha = input$alpha, beta = FALSE,gamma=FALSE)
  tmp.pred <- predict(tmp.mean,n.ahead = input$h, prediction.interval = TRUE)

 y <- ggplot(tmp, aes(time, sales)) + 
          geom_line() +   
          geom_line(data=tmp.pred, aes(y=tmp.pred[,1]),color="red") +  
          geom_line(data=tmp.pred, aes(y=tmp.pred[,2]),color="blue") + 
          xlab("Days") + 
          ylab("Sales Quantity")+ 
          ggtitle(title)
  y })

 output$infoes <- renderDataTable({ 

tmp <- data.frame(time = 1:100, sales = round(runif(100, 150, 879)) )
tmp.mean <- HoltWinters(x=tmp$sales, alpha = input$alpha, beta = FALSE,gamma=FALSE)
tmp.pred <- predict(tmp.mean,n.ahead = input$h, prediction.interval = TRUE)
tmp.pred

  })

UI

 require(shiny)
 require(ggplot2)
 require(forecast)
 require(TTR)

   shinyUI(pageWithSidebar(    
     headerPanel("Forecasting Methods"),
     sidebarPanel(

   h3(strong("Exponential Smoothing",style = "color:black")),
   br(),
   sliderInput("h","Number of periods for forecasting:",
        min = 1, max = 20,     step= 1, value = 4),
   sliderInput("alpha","Alpha (Smoothing Parameter):",
        min = 0.05, max = 1, step= 0.05, value = 0.01)

    ),

 mainPanel(
    tabsetPanel( id="tabs",
         tabPanel("Exponential Smoothing",
                   value="panel",
                   plotOutput(outputId = "es1",
                   width  = "900px",height = "400px"),
                   dataTableOutput(outputId="infoes"))
    ))))

1 个答案:

答案 0 :(得分:1)

正如评论中所述,你有<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> <p>Serial Number: <input type="Text" Name="Num1" value=""></p> <input type="Submit" value="Calculate"> </form> tmp.pred感到满意。您也不必在多个语句中创建相同的数据,ggplot命令对此有利:

enter image description here

ui.R (未更改)

reactive

<强> server.R

require(shiny)
require(ggplot2)
require(forecast)
require(TTR)

shinyUI(pageWithSidebar(    
  headerPanel("Forecasting Methods"),
  sidebarPanel(

    h3(strong("Exponential Smoothing",style = "color:black")),
    br(),
    sliderInput("h","Number of periods for forecasting:",
                min = 1, max = 20,     step= 1, value = 4),
    sliderInput("alpha","Alpha (Smoothing Parameter):",
                min = 0.05, max = 1, step= 0.05, value = 0.01)

  ),

  mainPanel(
    tabsetPanel( id="tabs",
                 tabPanel("Exponential Smoothing",
                          value="panel",
                          plotOutput(outputId = "es1",
                                     width  = "900px",height = "400px"),
                          dataTableOutput(outputId="infoes"))
    ))))