我想知道如何循环回归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创建另外十列
答案 0 :(得分:1)
@jogo给出了改变for循环方法并使用sapply的想法,并将对象beta更改为list()。这就是结果:
beta <- sapply(1:n, function(i) coef(lm(Premium ~ Liquidity +Leverage+ hubris_dataset[,i], data=dt_deals2)))
它有效