【问题标题】:How to make n simulations of quantile regression如何对分位数回归进行 n 次模拟
【发布时间】:2023-12-30 07:57:01
【问题描述】:
library(rqPen)
LASSO.fit(Y,X, tau=0.5, lambda=0.1, intercept=FALSE, coef.cutoff=1e-5)

如何模拟这 N 次以获得 100 组结果?我有下面的代码,但是计算时间太长,我的电脑崩溃了。这是正确的吗?

for (i in 1:100){
beta[i] = LASSO.fit(Y,X, tau=0.5, lambda=0.1, intercept=FALSE, coef.cutoff=1e-5)
}

我也尝试了以下方法,但是,当我使用 lapply 时,每个模拟的每个 beta 的值都完全相同...我想为 beta 的每一行设置不同的系数。

do.call(cbind, lapply(1:100, function(i) {
beta = LASSO.fit(Y,X, tau=0.5, lambda=0.1, intercept=FALSE, coef.cutoff=1e-5)
  return(beta)}))

【问题讨论】:

  • 分配测试版有一些错误,下面的答案应该可以解决这个问题
  • 即便如此,您将始终得到相同的结果,因为您使用相同的 lambda、tau 和数据集进行回归。你到底打算做什么?

标签: r simulation montecarlo


【解决方案1】:

for 循环之前,beta 是如何定义的?很可能,崩溃与将LASSO.fit 的输出存储在beta 中有关。由于LASSO.fit返回一个数组,所以beta应该定义为一个列表:

beta <- vector("list", length = ncol(X))
for (i in 1:100){
beta[[i]] = LASSO.fit(Y,X, tau=0.5, lambda=0.1, intercept=FALSE, coef.cutoff=1e-5)
}

使用lapply

beta <- vector("list", length = ncol(X))
beta <- lapply(1:100 , function(z) LASSO.fit(Y,X, tau=0.5, lambda=0.1, intercept=FALSE, coef.cutoff=1e-5))

【讨论】: