Регрессия в ShinyApp - PullRequest
       2

Регрессия в ShinyApp

0 голосов
/ 20 декабря 2018

Я пытаюсь написать код для глянцевого приложения, в котором я выбираю переменную ответа (только одно поле выбора), а затем выбираю все ковариаты, которые я хочу, в флажке.Более того, я хотел бы указать семейство распределения моей переменной отклика (Гаусса, Пуассона, Бинома и т. Д.).Я не знаю, что написать в главной панели и на сервере.Может ли кто-нибудь мне помочь?

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 голосов
/ 20 декабря 2018

Может быть, вам поможет этот небольшой пример.

Если вы хотите динамически создать формулу, вам нужно обернуть ее в reformulate или as.formula.

.из резюме линейной регрессии и составляет прогноз на основе этой модели:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...