3
我想在R中設置一個Gibbs採樣器,我在每一步更新我的值。 我有一個R函數,我想爲2個值最大化;我以前的價值和一個新的。 所以我知道應用於這兩個值的函數的最大結果。但是,如何在不手動執行的情況下選擇最佳輸入? (我需要做很多迭代)。這裏是代碼和變量的想法:使用argmax或更簡單的R
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個輸入g
和g*
,使得max爲mp(g*)
我怎麼能返回g*
?
感謝您的任何幫助,如果您有任何疑問只是問。對於混亂的代碼也很抱歉;我以前沒有用過這個網站。
謝謝你的幫助;非常感謝! –