Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在两个变量的组合上运行模型,并使用tidyverse为每个模型返回具有p值和r平方的数据帧_R_Dplyr_Tidyverse_Purrr - Fatal编程技术网

如何在两个变量的组合上运行模型,并使用tidyverse为每个模型返回具有p值和r平方的数据帧

如何在两个变量的组合上运行模型,并使用tidyverse为每个模型返回具有p值和r平方的数据帧,r,dplyr,tidyverse,purrr,R,Dplyr,Tidyverse,Purrr,我试图在不同的变量组合上运行模型。我想要一个数据框架,它有3列:变量、p值和r平方。我以mtcars数据集为例。这是我的密码: c('wt', 'hp', 'qsec') %>% combn(2, paste, collapse='*') %>% structure(., names=.) %>% map(~formula(paste('mpg~', .x))) %>% map(lm, data=mtcars) %>%

我试图在不同的变量组合上运行模型。我想要一个数据框架,它有3列:变量、p值和r平方。我以mtcars数据集为例。这是我的密码:

c('wt', 'hp', 'qsec') %>% 
    combn(2, paste, collapse='*') %>% 
    structure(., names=.) %>% 
    map(~formula(paste('mpg~', .x))) %>% 
    map(lm, data=mtcars) %>%
    map(~coef(summary(.x))[4,4]) %>% 
    unlist() %>% 
    data.frame(p.value=.) %>% 
    rownames_to_column(var='interaction')
以下是我的输出:

interaction      p.value
1       wt*hp 0.0008108307
2     wt*qsec 0.2652596233
3     hp*qsec 0.0001411028  

问题是如何在从每个模型中提取r-square后向数据帧添加另一列?我想在上面的链接操作中实现这一点。因为我希望将该方法推广到其他类型的模型,所以我希望在不使用broom包的情况下这样做。如果有人能帮我,我将不胜感激。非常感谢

我们可以使用
扫帚
包功能,如
扫视
整洁

library(broom)
library(tidyverse)
v1 %>% 
     combn(2, paste, collapse='*') %>% 
     structure(., names=.) %>% 
      map(~summary(lm(formula(paste('mpg~', .x)), data = mtcars))) %>% 
      map(~ data.frame( tidy(.)[4,]['p.value'], glance(.)['r.squared'])) %>%    
      bind_rows(., .id = 'interaction') 
#  interaction      p.value r.squared
#1       wt*hp 0.0008108307 0.8847637
#2     wt*qsec 0.2652596233 0.8340742
#3     hp*qsec 0.0001411028 0.7854734
数据
v1我们可以使用
broom
包函数,如
glance
tidy

library(broom)
library(tidyverse)
v1 %>% 
     combn(2, paste, collapse='*') %>% 
     structure(., names=.) %>% 
      map(~summary(lm(formula(paste('mpg~', .x)), data = mtcars))) %>% 
      map(~ data.frame( tidy(.)[4,]['p.value'], glance(.)['r.squared'])) %>%    
      bind_rows(., .id = 'interaction') 
#  interaction      p.value r.squared
#1       wt*hp 0.0008108307 0.8847637
#2     wt*qsec 0.2652596233 0.8340742
#3     hp*qsec 0.0001411028 0.7854734
数据
v1我会尝试以下内容

library(tidyverse)

reg.vars <- c('wt', 'hp', 'qsec')

tibble(interaction = combn(reg.vars, 2, paste, collapse = '*')) %>%
    mutate(fit = map(interaction, ~ summary(lm(paste('mpg ~', .), data = mtcars))),
           pval = map_dbl(fit, ~ coef(.)[4, 4]),
           rsq = map_dbl(fit, ~ .$r.squared)) %>%
    select(-fit)
# # A tibble: 3 x 3
#   interaction         pval       rsq
#         <chr>        <dbl>     <dbl>
# 1       wt*hp 0.0008108307 0.8847637
# 2     wt*qsec 0.2652596233 0.8340742
# 3     hp*qsec 0.0001411028 0.7854734
库(tidyverse)
注册变量%
突变(拟合=映射(交互作用,~summary(lm(粘贴('mpg~'),数据=mtcars)),
pval=map_dbl(fit,~coef(.)[4,4]),
rsq=map_dbl(拟合,~.$r.squared))%>%
选择(-fit)
##tibble:3 x 3
#相互作用pval-rsq
#                      
#1重量*马力0.0008108307 0.8847637
#2 wt*qsec 0.2652596233 0.8340742
#3 hp*qsec 0.0001411028 0.7854734
我会尝试以下内容

library(tidyverse)

reg.vars <- c('wt', 'hp', 'qsec')

tibble(interaction = combn(reg.vars, 2, paste, collapse = '*')) %>%
    mutate(fit = map(interaction, ~ summary(lm(paste('mpg ~', .), data = mtcars))),
           pval = map_dbl(fit, ~ coef(.)[4, 4]),
           rsq = map_dbl(fit, ~ .$r.squared)) %>%
    select(-fit)
# # A tibble: 3 x 3
#   interaction         pval       rsq
#         <chr>        <dbl>     <dbl>
# 1       wt*hp 0.0008108307 0.8847637
# 2     wt*qsec 0.2652596233 0.8340742
# 3     hp*qsec 0.0001411028 0.7854734
库(tidyverse)
注册变量%
突变(拟合=映射(交互作用,~summary(lm(粘贴('mpg~'),数据=mtcars)),
pval=map_dbl(fit,~coef(.)[4,4]),
rsq=map_dbl(拟合,~.$r.squared))%>%
选择(-fit)
##tibble:3 x 3
#相互作用pval-rsq
#                      
#1重量*马力0.0008108307 0.8847637
#2 wt*qsec 0.2652596233 0.8340742
#3 hp*qsec 0.0001411028 0.7854734

这正是我想要的。非常感谢。这正是我想要的。非常感谢。