如何从循环线性回归中提取系数输出

时间:2016-02-18 14:14:56

标签: r loops regression lapply linear

我想知道如何循环回归n次,并且每次使用不同的变量集,提取data.frame,其中每列是回归,每行代表一个变量。

在我的情况下,我有一个data.frame:

dt_deals <- data.frame(Premium=c(1,3,4,5),Liquidity=c(0.2,0.3,1.5,0.8),Leverage=c(1,3,0.5,0.7))

但我有另一个名为Hubris的解释性虚拟变量,它是二项分布的乘积,平均值为0.25。像那样:

n <- 10 
hubris_dataset <- data.frame(replicate(n, rbinom(4,1,0.25))

从这个意义上讲,我需要的是对傲慢进行n次模拟,因此我可以使用不同的随机二项分布集进行n回归,并将每个分布的输出放入数据框中。正如所解释的那样。

到目前为止,我可以达到这个目的:

# define n as the number of simulations i want
n=10
# define beta as a data.frame to put every coefiecient from the lm regression
beta=NULL

for(i in 1:n) {
  dt_deals2 <- dt_deals
  beta[[i]] <- coef(lm(dt_deals$Premium ~ dt_deals$Liquidity + dt_deals$Leverage + hubris_dataset[,i], data=dt_deals2))
  beta <- cbind(reg$coefficients)
}

但是这样它只生成第一组系数,并且不为data.frame创建另外十列

1 个答案:

答案 0 :(得分:1)

@jogo给出了改变for循环方法并使用sapply的想法,并将对象beta更改为list()。这就是结果:

beta <- sapply(1:n, function(i) coef(lm(Premium ~ Liquidity +Leverage+ hubris_dataset[,i], data=dt_deals2)))

它有效