ShinyApp中的回归

时间:2018-12-20 14:56:11

标签: r shiny

我正在尝试为ShinyApp编写代码,在其中选择一个响应变量(仅一个选择框),然后在复选框中选择所需的所有协变量。此外,我想指定我的响应变量的分布族(高斯,泊松,二项式等)。我不知道在主面板和服务器中写什么。有人可以帮我吗?

library(shiny) 
library(plotly)
data(iris)

ui<-fluidPage(
  titlePanel("Regression"),
  sidebarPanel(
    selectInput("var",label="Choose the response variable:",choice=names(iris), selectize=FALSE),
    tags$hr(),
    checkboxGroupInput(inputId ="ind_var",label = "Select at least two independent variables:", choices = names(iris)),

    mainPanel(

    )
  )
)

server<-function(input,output){


}
shinyApp(ui, server)

1 个答案:

答案 0 :(得分:0)

也许这个小例子可以帮助您。

如果要动态创建公式,则必须将其包装到reformulateas.formula中。

此shinyApp示例打印出线性回归的摘要并根据该模型绘制预测:

library(shiny) 
library(plotly)
data(iris)

ui<-fluidPage(
  titlePanel("Regression"),
  sidebarPanel(
    selectInput("var",label="Choose the response variable:",choice=names(iris), selectize=FALSE),
    tags$hr(),
    checkboxGroupInput(inputId ="ind_var", label = "Select at least two independent variables:", choices = names(iris), selected = "Species"),

    mainPanel(
      plotOutput("plot"),
      verbatimTextOutput("summary")

    )
  )
)

server<-function(input,output){

  lmR <- reactive({
    req(input$var)
    req(input$ind_var)

    ## Option 1 ---------------------
    # formula = as.formula(paste(input$var, " ~ ", paste(input$ind_var, collapse= "+")))
    # stats::lm(formula=formula, data=iris)

    # browser()
    ## Option 2 ---------------------               
    stats::lm(formula=reformulate(input$ind_var, input$var), data=iris)
  })

  output$summary <- renderPrint(width="400", {
    lmR()
  })

  output$plot <- renderPlot({
    plot(predict(lmR()))    
  })

}

shinyApp(ui, server)