Как сделать n симуляций квантильной регрессии - PullRequest
0 голосов
/ 26 мая 2020
library(rqPen)
LASSO.fit(Y,X, tau=0.5, lambda=0.1, intercept=FALSE, coef.cutoff=1e-5)

Как я могу смоделировать это N раз, чтобы получить 100 наборов результатов? У меня есть приведенный ниже код, однако время вычисления слишком велико, и мой P C дает сбой. Это правильно?

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

Я также пробовал следующее, однако значения каждой бета-версии точно такие же для каждой симуляции, когда я использую lapply ... Я хочу иметь разные коэффициенты для каждой строки бета.

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)}))

1 Ответ

0 голосов
/ 26 мая 2020

До for l oop, как определяется beta? Вероятно, ошибка sh связана с сохранением вывода 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))
...