【发布时间】:2017-04-16 20:11:48
【问题描述】:
我有一个包含 15 个变量(1 个正在检查,14 个回归量)的数据集,所有变量都是数字的。我所做的是运行一种递归预测技术的算法。该算法在样本内和样本外切割数据。 这里我想弄清楚如何存储a和t的每个值产生的结果,它们是cv.hqreg函数(hqreg package)的参数。
-
注意: 对于
t and a的每个值,我们得到 1 个值(代码中的值是predicedQ。对于每个t and a,我们运行cv.hqreg648 次。然后对于t and a的下一个值,再次重复 648 次。因此,最终结果将是一个 648 行和 231 列的矩阵/数据集。
对于每个 cv.hqreg,我得到 100 个拟合模型,我通过 LMQ$fit$beta[,which(LMQ$lambda.min==LMQ$lambda)] 命令行从中选择误差最小的模型。
dataR<-TRAINSET
fittedvaluesQRidge<-NULL
for(i in 1:(nrow(TESTSET)-1)){ #adding a new row and repeat
for(a in seq(0,1,0.1)){ #for each penalty of selection
for(t in seq(0,1,0.05)){ #for each quantile
print(i) #to see it works/or where stops
dataR<-rbind(dataR,TESTSET[i,]) #update dataset
LMQ<-cv.hqreg(as.matrix(dataR[,-15]),dataR$LHS,method = "quantile",tau=t,alpha = a) #FIT THE Lasso Quantile-MODEL
predictdQR<-LMQ$fit$beta[1,which(LMQ$lambda.min==LMQ$lambda)]+LMQ$fit$beta[2,which(LMQ$lambda.min==LMQ$lambda)]*TESTSET[i+1,1]+LMQ$fit$beta[3,which(LMQ$lambda.min==LMQ$lambda)]*TESTSET[i+1,2]+LMQ$fit$beta[4,which(LMQ$lambda.min==LMQ$lambda)]*TESTSET[i+1,3]+LMQ$fit$beta[5,which(LMQ$lambda.min==LMQ$lambda)]*TESTSET[i+1,4]+LMQ$fit$beta[6,which(LMQ$lambda.min==LMQ$lambda)]*TESTSET[i+1,5]+LMQ$fit$beta[7,which(LMQ$lambda.min==LMQ$lambda)]*TESTSET[i+1,6]+LMQ$fit$beta[8,which(LMQ$lambda.min==LMQ$lambda)]*TESTSET[i+1,7]+LMQ$fit$beta[9,which(LMQ$lambda.min==LMQ$lambda)]*TESTSET[i+1,8]+LMQ$fit$beta[10,which(LMQ$lambda.min==LMQ$lambda)]*TESTSET[i+1,9]+LMQ$fit$beta[11,which(LMQ$lambda.min==LMQ$lambda)]*TESTSET[i+1,10]+LMQ$fit$beta[12,which(LMQ$lambda.min==LMQ$lambda)]*TESTSET[i+1,11]+LMQ$fit$beta[13,which(LMQ$lambda.min==LMQ$lambda)]*TESTSET[i+1,12]+LMQ$fit$beta[14,which(LMQ$lambda.min==LMQ$lambda)]*TESTSET[i+1,13]+LMQ$fit$beta[15,which(LMQ$lambda.min==LMQ$lambda)]*TESTSET[i+1,14] #find the forecasts
fittedvaluesQRidge<-c(fittedvaluesQRidge,predictdQR) #then put them in a vector
}
}
}
我用来获取预测值的命令非常广泛,一次使用每个变量。但是我尝试使用矩阵代数(covariates %*% data 的矩阵,没有结果,但出现错误:二进制运算符的非数字参数。它以一种丑陋的方式工作,但如果有更短的方式,我想要所有帮助。
【问题讨论】:
-
那么你的问题是什么?您的标题是保存嵌套循环的结果,但您正在保存每个最后一个向量的数据,
fittedvaluesQRidge。代码不起作用吗?不希望的结果? -
是的,我在向量中获取数据。但它就像'11 * 21 * 658'长。虽然我想让它作为一个矩阵出来。例如:对于 t=0.1 和 a=0,我得到了 468 个结果。然后对于 t=0.2 和 a=0 我得到他们的下一个 648 等等。我真的可以想象如何将结果设置为矩阵。
-
我以为你对last question很熟悉!我看到您不使用任何应用功能。
Sapply可以将 predictedQR 向量绑定到一个矩阵中。 a 和 t 循环变量在哪里使用? -
我真的试过了,但我失败了。那么't'和'a'在'cv.hqreg'函数中使用。
-
你需要矩阵还是数组?您显示的尺寸超过两个:11 X 21 X 658。