【问题标题】:linfun function problem (unused arguments)linfun 函数问题(未使用的参数)
【发布时间】:2021-03-13 18:59:34
【问题描述】:

我正在尝试运行此代码,但我的 linfun 函数有问题,我不知道如何解决。

错误是:

" linfun 中的错误(a = x.T, d = -sum(x.T * w)) : 未使用的参数 (a = x.T, d = -sum(x.T * w))"

有人知道怎么改吗?

    for (l in 1:L) {
  x.new <- x[t==1990+l,]
  x.T <- (x.new-xbar)
  lb <- ub <- c()
  
  # define a linear objective fn
  obj <- linfun(a=x.T, d= -sum(x.T * w))
  # boot NEGATIVE support
  for (i in 1:100) {
    zeta    <- rnorm(n)
    gamma.b <- colMeans(gamma * zeta)
    
    # define quadratic constraint
    qcon <- quadcon(Q=Gram, a=-2*gamma.b-2*c(t(w)%*%Gram), 
                    d=2*sum(gamma.b*w)+sum(w*(Gram %*% w)), val=eta.l)
    # define optimization; min
    co <- cop(f=obj, max=F, lb=lbcon(rep(0,p)), 
              lc=lincon(A=t(rep(1, p)), val=sum(w), name="eq"), qc=qcon)
    result <- solvecop(co, solver="cccp", quiet=T)
    ub[i] <- -validate(co, result, quiet=T)$obj.fun
    
    # define optimization; max
    co <- cop(f=obj, max=T, lb=lbcon(rep(0,p)), 
              lc=lincon(A=t(rep(1, p)), val=sum(w), name="eq"), qc=qcon)
    result <- solvecop(co, solver="cccp", quiet=T)
    lb[i] <- -validate(co, result, quiet=T)$obj.fun
  }
  sc0[l]   <- sum(x.T * w.hat) + ybar
  sc0.l[l] <- sc0[l] + quantile(lb, alpha)
  sc0.u[l] <- sc0[l] + quantile(ub, 1-alpha)
  
  # Adjust error u.T
  # 3rd approach: conditional mean and variance
  u.T.mean <- sum(c(1, x.new[index]) * ufit$coeff)
  u.T.sig  <- sqrt(exp(sum(c(1,x.new[index])*u2fit$coeff)))
  sc0.ll.3[l] <- sc0.l[l] + u.T.mean + u.T.sig*quantile(res.st, alpha)
  sc0.uu.3[l] <- sc0.u[l] + u.T.mean + u.T.sig*quantile(res.st, 1-alpha)
  
  # 4th approach: quantile reg
  sc0.ll.4[l] <- sc0.l[l] + sum(qfit$coefficients[,1]*c(1, x.new[index]))
  sc0.uu.4[l] <- sc0.u[l] + sum(qfit$coefficients[,2]*c(1, x.new[index]))
}

【问题讨论】:

    标签: r spatstat unused-variables


    【解决方案1】:

    optiSolvespatstat 包中有名为 linfun 的函数(直到现在我才知道!)

    您似乎想使用optiSolve::linfun,但系统执行了spatstat::linfun,它无法识别参数ad

    假设你在加载optiSolve之后加载了spatstat,所以当系统在寻找一个名为linfun的函数时,它首先搜索了spatstat

    您可以通过在代码中专门调用 optiSolve::linfun 来避免这种情况,或者在运行代码时确保 optiSolve 的加载时间比 spatstat 的加载时间要晚。

    【讨论】:

      猜你喜欢
      • 2019-09-22
      • 2017-12-27
      • 2016-06-22
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      相关资源
      最近更新 更多