R中带参数向量的最优函数

R中带参数向量的最优函数,r,optimization,R,Optimization,我需要找到一个使QRsum最小化的beta(3元素向量),定义如下: #indicator function I=function(x,min,max){ if (min<=x && x<max){i=1} else {i=0}} #QR check function rho=function(a, theta){ return(abs(theta-I(a,-Inf,0))*abs(a)) } #QR sum QRsum=function(beta,y,X

我需要找到一个使QRsum最小化的beta(3元素向量),定义如下:

#indicator function
I=function(x,min,max){
  if (min<=x && x<max){i=1} else {i=0}}

#QR check function
rho=function(a, theta){
  return(abs(theta-I(a,-Inf,0))*abs(a))
}

#QR sum
QRsum=function(beta,y,X,theta){
  sum=0
  for (i in 1:length(y)){
    sum=sum+rho(y[i]-t(X[i,])%*%beta,theta)
  }
  sum=1/length(y)*sum
  return(sum)
}

result=optim(initial_beta,QRsum(beta,y,X,0.05),method="BFGS")
QRsum的参数为y-a向量、X-a矩阵(3列)和beta-a向量(3个元素),应进行优化。QRsum函数在调用时工作正常,但在这里它以某种方式失败。y和X是我之前定义的对象,还是尽管我之前定义过它们,它们还是未知的?我应该把什么作为函数的第一个参数——向量的任意值?
我必须说,我是第一次使用optim,所以我想我在这里遗漏了一些东西,但我无法根据“帮助”确定具体内容。

您需要将
optim
包的调用修改为以下内容:

# define some data / value with which you want to use in the optimization
y_val <- ...
X_val <- ...
theta_val <- 0.05
# call optim / optimize beta with given values for y, X and theta
optim(par=initial_beta, fn=QRsum, y=y_val, X=X_val, theta=theta_val, method="BFGS")
#定义一些要在优化中使用的数据/值
尤瓦尔
# define some data / value with which you want to use in the optimization
y_val <- ...
X_val <- ...
theta_val <- 0.05
# call optim / optimize beta with given values for y, X and theta
optim(par=initial_beta, fn=QRsum, y=y_val, X=X_val, theta=theta_val, method="BFGS")