r - 在 R 中使用 argmax 或更简单的东西

标签 r function max

我正在尝试在 R 中设置一个 Gibbs 采样器,在其中我在每一步更新我的值。
我在 R 中有一个函数,我想最大化 2 个值;我以前的值(value)和新的值(value)。
所以我知道应用于这两个值的函数的最大结果。但是,如何在不手动进行的情况下选择最佳输入? (我需要做很多迭代)。这是代码和变量的想法:

g0<-function(k){sample(0:1,k,replace=T)}

这是一个 k 维向量,条目统一为 1 或 0。我的链的初始起点。如果 i=1,则在设计矩阵中包含第 i 个变量。
X1设计矩阵
Xg<-function(g){
  Xg<-cbind(X1[,1]*g[1],X1[,2]*g[2],X1[,3]*g[3],X1[,4]*g[4],X1[,5]*g[5],X1[,6]*g[6],X1[,7]*g[7])
  return(Xg[,which(!apply(Xg,2,FUN = function(x){all(x == 0)}))])
}
Xg0<-Xg(g0)
g0 的简化设计矩阵
c<-1:100000

mp<-function(g){
  mp<-sum((1/(c*(c+1)^-((q+1)/2)))*
  (t(Y)%*%Y-(c/(c+1))*t(Y)%*%Xg(g)%*%solve(t(Xg(g))%*%Xg(g))%*%t(Xg(g))%*%Y)^(-27/2))
  return(mp)
}

这是我的功能。

因此,如果我有 mp(g)mp(g*) , 用于 2 个输入 gg* ,使得最大值为 mp(g*)我该如何退货 g* ?

感谢您的帮助,如果您有任何疑问,请询问。也对凌乱的代码感到抱歉;我以前没有使用过这个网站。

最佳答案

像这样:

inputs     <- list(g, g2)
outputs    <- sapply(inputs, mp)
best.input <- inputs[which.max(outputs)]

关于r - 在 R 中使用 argmax 或更简单的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17252798/

相关文章:

r - 将ggplot2中的十六进制垃圾箱设置为相同大小

r - 如果仅给出国家/地区代码,如何从一种货币转换为另一种货币?

c++ - 静态 LPTSTR 变量在函数执行后丢失值

python - 如何自动选择列表中的最大值。append - python

MySQL Max 字段错误

r - 将 dplyr `filter()` 的过滤器存储在变量中

html - 从 R 中的 HTML 选择/选项标签中抓取值

接受两个函数并返回串联函数的 Python 函数?

c++ - SFML 试图将类的引用作为参数传递给函数

iphone - 设置 UITextField 最大长度