Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
在R中将Optim转换为constrOptim_R - Fatal编程技术网

在R中将Optim转换为constrOptim

在R中将Optim转换为constrOptim,r,R,我试图确定9个指标的权重,这将返回最高的准确率。因为它们是权重,所以值的和必须为1,并且介于0和1之间。我目前正在使用optim函数,但是如果不考虑约束,我想我需要切换到constrOptim。我想知道最好的方法是什么。下面是我目前使用的代码。x、 矩阵是20000乘以9的矩阵,值排列在1-10之间 pars<-c(w1=(1/9),w2=(1/9),w3=(1/9),w4=(1/9),w5=(1/9),w6=(1/9),w7=(1/9),w8=(1/9),w9=(1/9)) OptPa

我试图确定9个指标的权重,这将返回最高的准确率。因为它们是权重,所以值的和必须为1,并且介于0和1之间。我目前正在使用optim函数,但是如果不考虑约束,我想我需要切换到constrOptim。我想知道最好的方法是什么。下面是我目前使用的代码。x、 矩阵是20000乘以9的矩阵,值排列在1-10之间

pars<-c(w1=(1/9),w2=(1/9),w3=(1/9),w4=(1/9),w5=(1/9),w6=(1/9),w7=(1/9),w8=(1/9),w9=(1/9))

OptPars<-function(pars){(-(rcorr.cens(x.matrix%*%pars),f)["Dxy"])}

opt<-optim(pars,OptPars)
假设在-Inf,Inf范围内有值x,并且需要[0,1]范围内的值p和为1,则可以执行以下转换

p <- exp(x)/sum(exp(x))

如果您在优化函数中进行这种转换,并对最佳参数集进行相同的转换,您应该会得到您想要的。

如果这是一个简单的问题,很抱歉,但我是R新手。下面是您建议的内容。OptPars@user3666589的确然后当你得到最终的opt对象时,也做expopt$par/sumexpot$par当我运行它时,它会为每个变量提供一个值,当我知道0权重会提高精度时,有没有办法通过optim来纠正这个问题function@user3666589如果要固定权重,请不要将其作为优化参数。如果权重必须和为1,则不能调用为0。抱歉,如果上一篇文章有点模糊,当我运行函数/代码时,它会返回每个度量的值,但通过手动操作,我知道如果某些变量的权重为0,则会提高准确性,如果该函数确定某个变量有益于/提高精度,则该函数是否会为该变量赋予0权重,或者该函数是否会自动为其赋予一些权重。同时感谢您迄今为止的所有投入,它节省了无休止的浏览和随意搜索时间。