我試圖在R中使用優化函數來優化模型中的三個參數,但無法弄清楚如何讓它在一系列值上進行搜索,因爲使用「優化「功能。 我嘗試過使用for循環來做這件事,這是我嘗試中最成功的一次,但由於某種原因它似乎停止在355的值,理想情況下我想嘗試比此更高的組合。 除了這個我試過,調用的Optim多次寫入功能,試圖向量化,並試圖只是把列表的值到「相提並論」論點的Optim內但所有這些嘗試所產生的錯誤信息在R中使用優化
"unable to evaluate at initial parameters".
長較短時,任何人都知道我可以如何使用優化功能來搜索參數值的範圍,因爲「優化」功能將?
任何幫助或指針將非常感謝!
我的代碼看起來像這樣: 這是三個最大似然函數的對應比例尺,然後三次嘗試使用優化!
rm(list=ls())
load('Dat.RData')
mean(dat)
var(dat)
loglike<-function(par,dat,scale)
{ ptp<-dat[1:length(dat)-1]
ptp1<-dat[2:length(dat)]
r<-par['r']
k<-par['k']
sigma<-par['sigma']
if(scale=='log')
{
return(sum(dnorm(log(ptp1)-log(ptp)*exp(r-(ptp/k)),mean=0,sd=sigma,log=T)))
}
if (scale=='sqrt')
{
return(sum(dnorm(sqrt(ptp1)-sqrt(ptp)*exp(r-(ptp/k)),mean=0,sd=sigma,log=T)))
}
if (scale=='linear')
{
return(sum(dnorm(ptp1-ptp*exp(r-(ptp/k)),mean=0,sd=sigma,log=T)))
}
}
sqrts<-c()
for(i in 1:4000){
sqrts[i]<-optim(par=c(r=i,k=i,sigma=i),fn=loglike,dat=dat,scale='sqrt',method='Nelder-Mead',control=list(fnscale=-1))
}
logs<-c()
for(i in 1:4000){
logs[i]<-optim(par=c(r=i,k=i,sigma=i),fn=loglike,dat=dat,scale='log',method='Nelder-Mead',control=list(fnscale=-1))
}
lins<-c()
for(i in 1:4000){
lins[i]<-optim(par=c(r=i,k=i,sigma=i),fn=loglike,dat=dat,scale='linear',method='Nelder-Mead',control=list(fnscale=-1))
}
非常感謝!
後你的一些數據?我會幫你的。嘗試發佈head(dput(dat))的輸出,它可以幫助人們重新構建一部分數據,以便他們更容易地運行代碼 – 2013-03-02 23:34:47