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

Jon*_*lps 5 r function max

我试图在R中设置一个Gibbs采样器,我在每一步都更新我的值.我在R中有一个函数,我希望最大化2个值; 我以前的价值和新的价值.所以我知道应用于这两个值的函数的最大结果.但是,如何在不手动操作的情况下选择最佳输入?(我需要做很多迭代).这是代码和变量的概念:

g0<-function(k){sample(0:1,k,replace=T)}
Run Code Online (Sandbox Code Playgroud)

这是ak维向量,条目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)
Run Code Online (Sandbox Code Playgroud)

减少设计矩阵 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)
}
Run Code Online (Sandbox Code Playgroud)

这是我的功能.

因此,如果我有mp(g)mp(g*),对2路输入gg*,使得max是mp(g*)我该怎么回报g*

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

flo*_*del 7

像这样:

inputs     <- list(g, g2)
outputs    <- sapply(inputs, mp)
best.input <- inputs[which.max(outputs)]
Run Code Online (Sandbox Code Playgroud)