#r #spatstat #unused-variables
#r #spatstat #неиспользуемые переменные
Вопрос:
Я пытаюсь запустить этот код, но у меня возникли некоторые проблемы с функцией 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]))
}
Ответ №1:
В пакетах есть функции, названные linfun
optiSolve
и spatstat
(я не знал этого до сих пор!)
Похоже, что вы хотели использовать optiSolve::linfun
, но система выполнила spatstat::linfun
, которая не распознала аргументы a
и d
.
Предположительно, вы загружались spatstat
после загрузки optiSolve
, поэтому, когда система искала названную функцию linfun
, она spatstat
сначала выполняла поиск.
Вы можете избежать этого, специально вызвав optiSolve::linfun
свой код или убедившись, что optiSolve
он загружен позже, чем spatstat
при запуске кода.