在发布之前我确实在这里搜索了问题,我在这方面只发现了一个问题,但这不适用于我的情况。
我已经上传了 、 和 的数据,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)
谢谢