按组计算多个R平方值

时间:2016-05-24 15:26:16

标签: r shiny linear-regression lm

这个玩具示例允许我从mtcars数据集中反复更新我感兴趣的两个向量的R平方值,以进行线性回归。

library(shiny)

ui <- fluidPage(
    selectInput("xcol","Select X Variable",""),
    selectInput("ycol","Select Y Variable",""),
  mainPanel(
    tableOutput("file"),
    verbatimTextOutput("detco")
  )
)

server <- function(input, output, session) {
  mtcars
  output$file <- renderTable({head(mtcars)})
  observe({updateSelectInput(session,"xcol",choices=colnames(mtcars))})
  observe({updateSelectInput(session,"ycol",choices=colnames(mtcars))})
  output$detco <- renderText({
    detco.lm <- lm(mtcars[,input$xcol] ~ mtcars[,input$ycol], data=mtcars)
    summary(detco.lm)$r.squared
  })
}

shinyApp(ui = ui, server = server)

但是,我需要能够计算数据中几个不同组的R平方值(例如,使用“cyl”的级别)。添加

selectInput("group","Group","")observe({updateSelectInput(session,"group",choices=colnames(mtcars))})

detco.lm <- lm(mtcars[,input$xcol] ~ mtcars[,input$ycol], data=mtcars[,input$group]) 

没有产生预期的结果 - 我一直只得到单个R平方值。我正在寻找与输入组相对应的R平方值表或列表,如

#Having selected "mpg" and "drat" as my x/y variables 
    cyl(4.00)=.4591    
    cyl(6.00)=.6679    
    cyl(8.00)=.1422

1 个答案:

答案 0 :(得分:3)

我认为这个RStudio博客https://blog.rstudio.org/2015/09/29/purrr-0-1-0/可能几乎完全具有您在&#34; Map Functions&#34;中寻找的代码。部分。您需要purrr个包裹。

编辑:粘贴该部分的代码以防万一,无论出于何种原因,该链接都会发生变化。别忘了install.packages('purrr')

mtcars %>%
  split(.$cyl) %>%
  map(~lm(mpg ~ wt, data = .)) %>%
  map(summary) %>%
  map_dbl("r.squared")
#>     4     6     8 
#> 0.509 0.465 0.423