一次运行多个回归并获取其系数

问题描述

我有两个xts数据集。每个包含50个变量。一种是因变量数据集,另一种是自变量数据集。我想应用多个回归模型,即每个数据集中的一个变量。但是没有得到理想的结果。许多价值缺失。我想从每次回归中提取系数以及t和p值。

library(xts)
library(zoo)
library(PerformanceAnalytics)
dep_var<-managers[,c(1,3)]
ind_var<-managers[,c(8,9)]
## individually running each model
model1<-lm(dep_var[,1]~ind_var[,1])
model2<-lm(dep_var[,2]~ind_var[,2])
summary(model1)
summary(model2)
models<-lapply(dep_var,function(x) lm(x[i]~ind_var[i]))

解决方法

输入注释太长了,我的意思是将您的data.frame写成长格式,例如,每一行都是一个观察值,列var表示比较:

library(broom)
library(dplyr)

dep_var<-data.frame(matrix(runif(30),ncol=3))
colnames(dep_var) = paste0("dv",1:3)
ind_var<-data.frame(matrix(runif(30),ncol=3))
colnames(ind_var) = paste0("iv",1:3)

df = do.call(rbind,lapply(1:3,function(i)data.frame(var=i,indep=ind_var[,i],dep=dep_var[,i])))

head(df)

  var     indep        dep
1   1 0.9138594 0.01566731
2   1 0.8426182 0.09871969
3   1 0.6374313 0.38409883
4   1 0.2891506 0.13790234
5   1 0.2363087 0.60410820
6   1 0.9763011 0.21100213

然后可以使用tidy中的broom使线性模型输出更好:

df %>% group_by(var) %>% do(tidy(lm(dep ~ indep,data=.)))
# A tibble: 6 x 6
# Groups:   var [3]
    var term        estimate std.error statistic p.value
  <int> <chr>          <dbl>     <dbl>     <dbl>   <dbl>
1     1 (Intercept)   0.496      0.200     2.48   0.0380
2     1 indep         0.0485     0.382     0.127  0.902 
3     2 (Intercept)   0.459      0.196     2.34   0.0476
4     2 indep        -0.0880     0.356    -0.247  0.811 
5     3 (Intercept)   0.591      0.185     3.19   0.0129
6     3 indep        -0.183      0.270    -0.675  0.519 

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...