交互式回归模型不输出模型摘要

时间:2018-04-24 01:48:47

标签: shiny regression interactive

我正在尝试运行回归,允许用户确定回归输入,然后提供回归摘要的输出。无论出于何种原因,输出都不正确,我已经在互联网上找到了解决方案的所有人。我希望有人可以提供帮助。

为了澄清,这是有光泽的。

这是我的服务器代码:

shinyServer(
function(input,output,session) {
mod <- eventReactive(input$analysis,{
  response <- data[,2]
  explan1 <- data[,input$Explan1]
  explan2 <- data[,input$Explan2]
  explan3 <- data[,input$Explan3]
  mod1 <- lm(response~explan1+explan2+explan3)
}      )


output$modelSummary <- renderPrint({
  (summary(mod()$mod1))
})

output$ColumnNames <- renderPrint({
  as.data.frame(colnames(data))
})
}
)
summary(model)

我的ui代码

shinyUI(
  fluidPage(
    titlePanel("What does it take for a Hockey Team to Win?"),
    titlePanel("Please select the column numbers for three variables to regress on"),
    sidebarLayout(

      sidebarPanel(
        verbatimTextOutput("ColumnNames"),
        numericInput("Explan1","Explanatory Variable 1",3,min = 3, max = 13),
        numericInput("Explan2","Explanatory Variable 2",4,min = 3,max = 13),
        numericInput("Explan3","Explanatory Variable 3",5,min = 3, max = 13)
      ),
      mainPanel(
        actionButton("analysis","Analyze!"),
        verbatimTextOutput("modelSummary")

      )
      )
      )
      )

当我运行应用程序时,选择输入列(按编号而不是名称。我希望稍后解决此问题)并单击分析,我得到以下输出:

长度等级模式      0 NULL NULL

我还没有找到关于此输出的大量相关信息。我希望你们都能提供帮助。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

您只是错误地调用了被动反应,它应该是:summary(mod())而不是summary(mod()$mod1)。 Reactives的行为与它们返回对象的方式非常相似。

这是一个完全可重现的示例,其中有一个示例,说明如何使用formula而不是单独选择列:

col_names <- names(mtcars)

ui <- fluidPage(
  sidebarPanel(
    verbatimTextOutput("ColumnNames"),
    selectInput("Response", "Response Variable", choices = col_names, selected = "mpg"),
    selectInput("Explan1","Explanatory Variable 1", choices = col_names, selected = "cyl"),
    selectInput("Explan2","Explanatory Variable 2", choices = col_names, selected = "disp"),
    selectInput("Explan3","Explanatory Variable 3", choices = col_names, selected = "wt")
  ),
  mainPanel(
    actionButton("analysis","Analyze!"),
    verbatimTextOutput("modelFormula"),
    verbatimTextOutput("modelSummary")

  )
)

server <- function(input, output, session) {

  myformula <- reactive({
    expln <- paste(c(input$Explan1, input$Explan2, input$Explan3), collapse = "+")
    as.formula(paste(input$Response, " ~ ", expln))
  })

  mod <- eventReactive(input$analysis, {
    lm(myformula(), data = mtcars)
  })

  output$modelFormula <- renderPrint({
    myformula()
  })

  output$modelSummary <- renderPrint({
    summary(mod())
  })
}

shinyApp(ui, server)

<强>截图:

enter image description here