【问题标题】:running multiple regressions at once and getting their coefficients一次运行多个回归并获得它们的系数
【发布时间】:2020-12-17 10:01:32
【问题描述】:

我有两个 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]))

【问题讨论】:

  • 看起来不太对劲。您是否每次都尝试使用 1 行 dep 和 ind 进行回归?
  • 我想应用回归模型 model1
  • @StupidWolf 你能不能请教一下
  • 抱歉应该是lapply(1:3,function(i) lm(dep_var[,i]~ind_var[,i]))
  • @sim235 try do.call(rbind,lapply(1:2,function(i) summary(models[[i]])$coefficients))

标签: r xts


【解决方案1】:

评论输入太长,我的意思是把你的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 from 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 

【讨论】:

    猜你喜欢
    • 2015-02-10
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多