在R中,如何find最优variables来最大化或最小化两个数据集之间的相关性

我可以在Excel中轻松完成这个任务,但是我的数据集太大了。 在Excel中,我会使用求解器。

Column A,B = random numbers Column C = random number (which I want to maximize the correlation to) Column D = A*x+B*y where x,y are coefficients resulted from solver 

在一个单独的单元格中,我将有相关(C,D)

在求解器中,通过改变variablesx,y和设置一定的约束条件(比如x,y都必须是正数),将correl(C,D)的目标设置为max。

我怎样才能做到这一点在R? 谢谢您的帮助。

在R中,你做了一个function ,其输出是你想要最大化或最小化的值。 包含在R中的一个优化器称为optim()

  set.seed(1) A <- runif(100) B <- runif(100) C <- runif(100) # these are your x and y to optimize pars <- c(x=1,y=1) OptPars <- function(pars,A,B,C){ D <- A*pars[1]+B*pars[2] -cor(C,D) } # optim is one of many R-ish ways to do Excel's solver # it minimizes by default (though you can tell it not to) # and that's why I told it to take -cor() optim(pars,OptPars,A=A,B=B,C=C) 

如果你想让xy有约束条件,把它包含在你正在优化的函数中,例如abs(x)而不是x