【问题标题】:Calculating multiple R squared values by groups按组计算多个 R 平方值
【发布时间】:2016-05-24 23:36:41
【问题描述】:

这个玩具示例允许我从 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

【问题讨论】:

    标签: r shiny linear-regression lm


    【解决方案1】:

    我认为这个 RStudio 博客 https://blog.rstudio.org/2015/09/29/purrr-0-1-0/ 可能包含您在“映射函数”部分中寻找的几乎完全相同的代码。你需要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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      • 2019-07-19
      • 2021-12-11
      相关资源
      最近更新 更多