首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R按顺序运行回归

R按顺序运行回归
EN

Stack Overflow用户
提问于 2020-10-26 22:57:34
回答 1查看 46关注 0票数 1
代码语言:javascript
复制
 set.seed(1)
   data=data.frame(
    
    student=1:5000,
    alfa =runif(5000), 
    bravo =runif(5000), 
    charlie =runif(5000), 
    delta =runif(5000), 
    echo =runif(5000), 
    foxtrot =runif(5000), 
    golf =runif(5000), 
    hotel =runif(5000), 
    india =runif(5000), 
    juliett =runif(5000), 
    kilo =runif(5000), 
    lima =runif(5000), 
    mike =runif(5000), 
    november =runif(5000), 
    oscar =runif(5000), 
    papa =runif(5000), 
    GROUP = sample(0:1, r=T))

##########################

代码语言:javascript
复制
COVS1 = c(golf, hotel, india)
COVS2 = c(juliett, kilo)
COVS3 = c(lima, mike, november, oscar, papa)


## OVERALL
lm(alpha ~ delta +  golf + hotel + india, data = data)
lm(alpha ~ delta +  golf + hotel + india + juliett + kilo, data = data)
lm(alpha ~ delta +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data = data)
lm(alpha ~ echo +  golf + hotel + india, data = data)
lm(alpha ~ echo +  golf + hotel + india + juliett + kilo, data = data)
lm(alpha ~ echo +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data = data)
lm(alpha ~ foxtrot +  golf + hotel + india, data = data)
lm(alpha ~ foxtrot +  golf + hotel + india + juliett + kilo, data = data)
lm(alpha ~ foxtrot +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data = data)
lm(bravo ~ delta +  golf + hotel + india, data = data)
lm(bravo ~ delta +  golf + hotel + india + juliett + kilo, data = data)
lm(bravo ~ delta +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data = data)
lm(bravo ~ echo +  golf + hotel + india, data = data)
lm(bravo ~ echo +  golf + hotel + india + juliett + kilo, data = data)
lm(bravo ~ echo +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data = data)
lm(bravo ~ foxtrot +  golf + hotel + india, data = data)
lm(bravo ~ foxtrot +  golf + hotel + india + juliett + kilo, data = data)
lm(bravo ~ foxtrot +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data = data)
lm(charlie ~ delta +  golf + hotel + india, data = data)
lm(charlie ~ delta +  golf + hotel + india + juliett + kilo, data = data)
lm(charlie ~ delta +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data = data)
lm(charlie ~ echo +  golf + hotel + india, data = data)
lm(charlie ~ echo +  golf + hotel + india + juliett + kilo, data = data)
lm(charlie ~ echo +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data = data)
lm(charlie ~ foxtrot +  golf + hotel + india, data = data)
lm(charlie ~ foxtrot +  golf + hotel + india + juliett + kilo, data = data)
lm(charlie ~ foxtrot +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data = data)

## GROUP == 0
lm(alpha ~ delta +  golf + hotel + india, data ~ subset(data, GROUP == 0)
lm(alpha ~ delta +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 0)
lm(alpha ~ delta +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 0)
lm(alpha ~ echo +  golf + hotel + india, data ~ subset(data, GROUP == 0)
lm(alpha ~ echo +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 0)
lm(alpha ~ echo +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 0)
lm(alpha ~ foxtrot +  golf + hotel + india, data ~ subset(data, GROUP == 0)
lm(alpha ~ foxtrot +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 0)
lm(alpha ~ foxtrot +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 0)
lm(bravo ~ delta +  golf + hotel + india, data ~ subset(data, GROUP == 0)
lm(bravo ~ delta +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 0)
lm(bravo ~ delta +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 0)
lm(bravo ~ echo +  golf + hotel + india, data ~ subset(data, GROUP == 0)
lm(bravo ~ echo +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 0)
lm(bravo ~ echo +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 0)
lm(bravo ~ foxtrot +  golf + hotel + india, data ~ subset(data, GROUP == 0)
lm(bravo ~ foxtrot +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 0)
lm(bravo ~ foxtrot +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 0)
lm(charlie ~ delta +  golf + hotel + india, data ~ subset(data, GROUP == 0)
lm(charlie ~ delta +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 0)
lm(charlie ~ delta +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 0)
lm(charlie ~ echo +  golf + hotel + india, data ~ subset(data, GROUP == 0)
lm(charlie ~ echo +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 0)
lm(charlie ~ echo +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 0)
lm(charlie ~ foxtrot +  golf + hotel + india, data ~ subset(data, GROUP == 0)
lm(charlie ~ foxtrot +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 0)
lm(charlie ~ foxtrot +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 0)

## GROUP == 1
lm(alpha ~ delta +  golf + hotel + india, data ~ subset(data, GROUP == 1)
lm(alpha ~ delta +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 1)
lm(alpha ~ delta +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 1)
lm(alpha ~ echo +  golf + hotel + india, data ~ subset(data, GROUP == 1)
lm(alpha ~ echo +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 1)
lm(alpha ~ echo +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 1)
lm(alpha ~ foxtrot +  golf + hotel + india, data ~ subset(data, GROUP == 1)
lm(alpha ~ foxtrot +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 1)
lm(alpha ~ foxtrot +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 1)
lm(bravo ~ delta +  golf + hotel + india, data ~ subset(data, GROUP == 1)
lm(bravo ~ delta +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 1)
lm(bravo ~ delta +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 1)
lm(bravo ~ echo +  golf + hotel + india, data ~ subset(data, GROUP == 1)
lm(bravo ~ echo +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 1)
lm(bravo ~ echo +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 1)
lm(bravo ~ foxtrot +  golf + hotel + india, data ~ subset(data, GROUP == 1)
lm(bravo ~ foxtrot +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 1)
lm(bravo ~ foxtrot +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 1)
lm(charlie ~ delta +  golf + hotel + india, data ~ subset(data, GROUP == 1)
lm(charlie ~ delta +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 1)
lm(charlie ~ delta +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 1)
lm(charlie ~ echo +  golf + hotel + india, data ~ subset(data, GROUP == 1)
lm(charlie ~ echo +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 1)
lm(charlie ~ echo +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 1)
lm(charlie ~ foxtrot +  golf + hotel + india, data ~ subset(data, GROUP == 1)
lm(charlie ~ foxtrot +  golf + hotel + india + juliett + kilo, data ~ subset(data, GROUP == 1)
lm(charlie ~ foxtrot +  golf + hotel + india + juliett + kilo + lima + mike + november + oscar + papa, data ~ subset(data, GROUP == 1)

我想知道,如何能够使用某种函数来运行所有这些回归?基本上,回归在COVS1上回归'alpha‘,在COVS1和COVS2上回归'alpha’,在COVS1、COVS2和COVS3上回归'alpha‘。这是对整个数据进行的,然后分别对组== 0和组== 1进行。重复相同的过程,将'alpha‘替换为'bravo’,然后将‘==’替换为'charlie‘,所以我只想运行所有这些,然后存储所有输出的模型和系数估计值以及标准误差。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-26 23:12:06

我们可以创建一个循环来完成这个任务。

代码语言:javascript
复制
COVS1 <- c('golf', 'hotel', 'india')
COVS2 <- c('juliett', 'kilo')
COVS3 <- c('lima', 'mike', 'november', 'oscar', 'papa')
    
COVS <- list(COVS1, COVS2, COVS3)
    
df1 <- expand.grid(resp = c('alfa', 'bravo', 'charlie'),
     pred = c('delta', 'echo', 'foxtrot'), stringsAsFactors = FALSE)
    
df1 <- df1[order(df1$resp),]



library(broom)
lst_mod <-  lapply(seq_along(COVS), function(i) 
      lapply(seq_along(COVS), function(j) {

      fmla <- reformulate(c(df1$pred[i], unlist(COVS[seq_len(j)])), 
            response = df1$resp[i])
      tidy(lm(fmla, data = data))
 }))

或者如果我们需要一个数据集

代码语言:javascript
复制
library(dplyr)
library(purrr)
out_dat <- lapply(seq_along(COVS), function(i) 
  map_dfr(seq_along(COVS), ~ {

  fmla <- reformulate(c(df1$pred[i], unlist(COVS[seq_len(.x)])), 
        response = df1$resp[i])
  tidy(lm(fmla, data = data)) %>% 
        mutate(response_variable = df1$resp[i], formula = list(fmla))
    })) %>%
       bind_rows

如果我们需要在数据的lm上应用subset,那么将数据进行子集

代码语言:javascript
复制
dat0 <- subset(data, GROUP == 0)
dat1 <- subset(data, GROUP == 1)

并将datalm中更改为“dat0”、“dat1”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64546103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档