按组计算多个 R 平方值
Calculating multiple R squared values by groups
这个玩具示例允许我从 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 平方值。我正在寻找 table 或与输入组相对应的 R 平方值列表,例如
#Having selected "mpg" and "drat" as my x/y variables
cyl(4.00)=.4591
cyl(6.00)=.6679
cyl(8.00)=.1422
我认为这个 RStudio 博客 https://blog.rstudio.org/2015/09/29/purrr-0-1-0/ 可能几乎完全包含您在 "Map Functions" 部分中查找的代码。您将需要 purrr
包。
编辑: 粘贴该部分的代码以防万一,无论将来出于何种原因,link 发生变化。别忘了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
这个玩具示例允许我从 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 平方值。我正在寻找 table 或与输入组相对应的 R 平方值列表,例如
#Having selected "mpg" and "drat" as my x/y variables
cyl(4.00)=.4591
cyl(6.00)=.6679
cyl(8.00)=.1422
我认为这个 RStudio 博客 https://blog.rstudio.org/2015/09/29/purrr-0-1-0/ 可能几乎完全包含您在 "Map Functions" 部分中查找的代码。您将需要 purrr
包。
编辑: 粘贴该部分的代码以防万一,无论将来出于何种原因,link 发生变化。别忘了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