繁体   English   中英

在R中,如何找到最佳变量以最大化或最小化两个数据集之间的相关性

[英]In R, how do I find the optimal variable to maximize or minimize correlation between two datasets

我可以在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

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

在求解器中,我将通过更改变量x,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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM