【问题标题】:Grid Search in R for Nonparametric Quantile RegressionR中的网格搜索用于非参数分位数回归
【发布时间】:2021-04-04 20:13:32
【问题描述】:

我在 R 中使用了一个名为 "quantreg" 的库,并尝试在时间序列的基础上估计完整的非参数分位数回归。为了获得统计上显着的结果,我尝试了很多变量和平滑参数值 (lambda)。但这很累而且非常耗时。因此,我想应用网格搜索,但这对我来说有点难。我想确定最佳平滑值,所以我应该构造一个 for 循环。但我希望该循环尝试每种组合。在我想获得最佳模型或模型的 lambda 值(所有变量的 p 值

lambdas1<-rbind(1,2,3)
lambdas2<-rbind(1,2,3)
lambdas3<-rbind(1,2,3)
    
mylist<-list()
    for (i in 1:3) {
      for (j in 1:3) {
        for (n in 1:3) {
          f <-try(rqss(Y~qss(X1,lambda = lambdas1[i])+qss(X2,lambda = lambdas2[j])+qss(X3,lambda = lambdas3[n]), tau=0.05)) 
          sf<-summary(f)
          if( (sf[["qsstab"]]['X1','Pr(>F)']<0.05)&(sf[["qsstab"]]['X2','Pr(>F)']<0.05)&(sf[["qsstab"]]['X3','Pr(>F)']<0.05) ){
            mylist[[i]]<-f$lambdas
          }
        }
      }
    }

如何重新排列此代码? 有什么捷径吗?

任何帮助将不胜感激。 提前谢谢你。

【问题讨论】:

    标签: r grid-search quantile quantile-regression


    【解决方案1】:

    您可以使用baseR expand.grid 创建所有可能组合的data.frame,然后使用apply(grid, MARGIN=2, ...) 循环遍历其行,如果每个p-value,我也“优化”了您正在查找的代码我把它改成使用all(p.vals &lt; .05)

    lambdas <- expand.grid(1:3,1:3,1:3) 
    check_lambdas <- function(lambdas){
        f <-try(rqss(Y~qss(X1,lambda = lambdas[1])+qss(X2,lambda = lambdas[2])+qss(X3,lambda = lambdas[3]), tau=0.05)) 
        if( all(summary(f)$qsstab[,'Pr(>F)']<0.05) ) f$lambdas else NULL
    }
    apply(lambdas, 2, check_lambdas)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-02
      • 1970-01-01
      • 2013-02-07
      • 2018-05-29
      • 2020-07-13
      • 2020-02-10
      • 2019-10-12
      • 2021-02-07
      相关资源
      最近更新 更多