R:循环搜索最大的非单调函数

时间:2011-12-02 14:51:11

标签: r loops

请参阅下面的R代码。函数(someRfunction)对向量进行操作并返回标量值。数据是对(x,y),其中x和y是长度为n的向量,其可以很大。

我想知道x *的值,这样y的someRfunction的结果最大化了{x> x *}。该函数对y值进行操作,在x *中是非单调的。我需要评估所有x *(即x的每个元素)。如果执行一次速度不是问题,但代码将在模拟中执行多次。有没有办法让这个代码更有效/更快?

### x and y are vectors of length n
### sort x and y such that they are ordered by descending x
xord <- x[order(-x)]
yord <- y[order(-x)]
maxf <- -99999
maxcut <- NA

for (i in 1:n) {
  ### yi is a subvector of y that corresponds to y[x>x{i}]
  ### where x{i} is the (n-i+1)th order statistic of x
  yi <- yord[1:(i-1)]
  fxi <- someRfunction(yi)
  if (fxi>maxf) {
    maxf <- fxi
    maxcut <- xord[i]
  }
}

感谢。

编辑:让someRfunction(yi)= t.test(yi)$ statistic。

1 个答案:

答案 0 :(得分:0)

如果您可以更多地了解该功能,特别是它是否平滑以及是否可以确定其渐变,您将获得更好的答案。目前,速度的唯一增加将是适度的,因为能够预先指定向量来保存结果,省略if-max子句然后在向量上使用which.max()。您可能希望查看“optimx”包中的函数optimx