【问题标题】:Converting Optim to constrOptim in R在 R 中将 Optim 转换为 constrOptim
【发布时间】:2014-07-13 04:06:47
【问题描述】:

我正在尝试确定将返回最高准确率的 9 个指标的权重。由于它们是权重,因此值需要总和为 1 并且介于 0 和 1 之间。我目前正在使用 optim 函数,但要执行约束,我想我需要切换到 constrOptim。我想知道最好的方法来做到这一点。下面我包含了我目前正在使用的代码。 x.matrix 是 20,000 x 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)

【问题讨论】:

    标签: r


    【解决方案1】:

    假设您在(-Inf, Inf) 范围内有值x,并且您需要在[0,1] 范围内的值p 总和为1,您可以进行以下转换

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

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

    【讨论】:

    • 对不起,如果这是一个简单的问题,但我是 R 新手。以下是您的建议。 OptPars
    • @user3666589 确实如此。然后当你得到最终的opt 对象时,也做exp(opt$par)/sum(exp(opt$par))
    • 当我运行它时,当我知道 0 权重会提高准确性时,它会为每个变量提供一个值,有没有办法通过 optim 函数来解决这个问题
    • @user3666589 如果要固定权重,请不要将其作为优化参数。如果权重必须总和为 1,则它们不能称为零。
    • 抱歉,如果上一篇文章有​​点含糊,当我运行函数/代码时,它会返回每个指标的值,但通过手动操作,我知道如果某些变量的权重为 0,它会提高准确性,如果该函数确定变量有利于/提高准确性,是否会给变量赋予 0 权重,或者它会自动赋予它一些权重。还要感谢您迄今为止的所有输入,它节省了无休止的浏览和随意搜索的时间。
    猜你喜欢
    • 1970-01-01
    • 2013-12-21
    • 2016-03-05
    • 2014-03-12
    • 2017-10-30
    • 2015-06-18
    • 2014-08-08
    • 1970-01-01
    相关资源
    最近更新 更多