投稿する前にここで質問を検索しましたが、この点に関して1つの質問しか見つかりませんでしたが、私の場合には当てはまりません.
PRD
、INJ
、tao
およびのデータを以下のリンクにアップロードしましたlambda
。これを使用してコードを再現します。
コード:
PRD=read.csv(file="PRD.csv")
INJ=read.csv(file="INJ.csv")
PRD=do.call(cbind, PRD)
INJ=do.call(cbind, INJ)
tao=do.call(cbind, read.csv(file="tao.csv",header=FALSE))
lambda=do.call(cbind, read.csv(file="lambda.csv",header=FALSE))
fn1 <- function (tao,lambda) {
#perparing i.dash
i.dash=matrix(ncol=ncol(INJ), nrow=(nrow(INJ)))
for (i in 1:ncol(INJ)){
for (j in 1:nrow (INJ)){
temp=0
for (k in 1:j){
temp=(1/tao[i])*exp((k-j)/tao[i])*INJ[k,i]+temp
}
i.dash[j,i]=temp
}
#preparing lambdaXi.dash
lambda.i=matrix(ncol=ncol(INJ),nrow=nrow(INJ))
for (i in 1: ncol(INJ)){
lambda.i[,i]=lambda[i+1]*i.dash[,i]
}
#calc. q. hat (I need to add the pp term)
q.hat=matrix(nrow=nrow(INJ),1 )
for (i in 1:nrow(INJ)){
q.hat[i,1]=sum(lambda.i[i,1:ncol(INJ)])
target= sum((PRD[,1]-q.hat[,1])^2)
}
}
}
私がやろうとしているのはtarget
、最適化によって値を最小限に抑えることlambda
でtao
あり、開始値は上記でアップロードされた値と同じになります。以前optim
はそうしていましたが、まだエラーが発生しますcannot coerce type 'closure' to vector of type double
多くのバリエーションを使用しましたがoptim
、それでも同じエラーが発生します。
私が使用した最後の構文はoptim(fn1, tao=tao, lambda=lambda, hessian=T)
ありがとう