【问题标题】:optim function with a vector of parameters in RR中带有参数向量的优化函数
【发布时间】:2017-04-09 20:13:14
【问题描述】:

我需要找到一个最小化 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")

运行 optim 函数完成并显示以下消息:

Browse[1]> Q
> result=optim(initial_beta[1,],fn=QRsum(beta[1,],y,X,0.05),method="BFGS")
Error in (function (par)  : could not find function "fn"

QRsum 的参数是 y-a 向量、X-具有 3 列的矩阵和 beta-应优化的 3 个元素的向量。 QRsum 函数在调用时工作正常,但在这里它以某种方式失败。 y 和 X 是我之前定义的对象,还是尽管我之前定义了它们,但它们也是未知的?我应该把什么作为函数的第一个参数——向量的任意值? 我必须说我是第一次使用 optim,所以我想我在这里遗漏了一些东西,但我无法根据帮助弄清楚到底是什么。

【问题讨论】:

    标签: r optimization


    【解决方案1】:

    需要将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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-18
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      相关资源
      最近更新 更多