Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在R中,如何找到最佳变量来最大化或最小化两个数据集之间的相关性_Excel_R_Optimization_Correlation - Fatal编程技术网

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

Excel 在R中,如何找到最佳变量来最大化或最小化两个数据集之间的相关性,excel,r,optimization,correlation,Excel,R,Optimization,Correlation,我可以在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) 在解算器中,我会通过改变变

我可以在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中,您创建了一个
函数
,其输出是您希望最大化或最小化的值。base R中包含的一个优化器称为
optim()

set.seed(1)

A在R中,生成一个
函数,其输出是要最大化或最小化的值。base R中包含的一个优化器称为
optim()

set.seed(1)

A如果您想将
pars[1]
替换为
abs(pars[1])
。如果
optim()
然后为
x
吐回一些负数,只要取它的绝对值,你仍然会知道它是最优的。明白了,在我得到的代码的optim()部分之后(cor(C,D)中的错误):“y”必须是数字的..再次感谢您,我没有收到这个错误。它对我来说运行得很顺利。您是在运行这个精确的代码还是一些修改过的代码?如果它被修改了,请将它作为一个编辑放在您的问题中,我或其他人会看到它的,谢谢您的帮助!现在是更复杂的..如果我想在PAR[1]中添加一个约束+PAR[2]必须等于1..这可能吗?那么在
PAR
中只有一个元素,而在函数中的另一个元素是
1-PAR
。明白了吗?如果只有一个参数,那么您需要
optimize()
函数,而不是
optim
。请参见
优化
,字面上说,替换
PAR[1]
abs(pars[1])
如果你想要它是正数。如果
optim()
然后为
x
吐出一些负数,只要取它的绝对值,你仍然会知道它是最优的。明白了,在我得到代码的optim()部分之后(cor(C,D)中的错误):“y”必须是数字的..再次感谢您,我没有收到这个错误。它对我来说运行得很顺利。您是在运行这个精确的代码还是一些修改过的代码?如果它被修改了,请将它作为一个编辑放在您的问题中,我或其他人会看到它的,谢谢您的帮助!现在是更复杂的..如果我想在PAR[1]中添加一个约束+PAR[2]必须等于1..这可能吗?那么在
pars
中只有一个元素,在函数中的另一个元素是
1-pars
。明白了吗?如果只有一个参数,那么您需要
optimize()
函数,而不是
optim
。请参见
?optimize
,我不确定,但我强烈怀疑这可以通过某种经典线性代数方法实现(例如,典型关联:)--您可能会在
stats.stackexchange.com
上询问……我不确定,但我强烈怀疑这可以通过某种经典线性代数方法来实现(例如,规范关联:)--您可能会在
stats.stackexchange.com
上询问。。。
    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)