da=read.csv("C:\\Users\\Administrator\\Desktop\\论文\\数据\\INTC英特尔-table.csv")
KK=function(theta)
{
x=theta[1]
y=theta[2]
z=theta[3]
option1=0
for(i in 1:9130)
{
res=(1+x[i]*(da[i,4]-z[i])/y[i])^(-1/x[i])
option1=option1+res
}
option2=1
q=1
while(q<9130)
{
if(da[q,4]>=0.1)
{
con=((1+x[q]*(da[q,4]-z[q])/y[q])^((-1-x[q])/x[q]))/y[q]
option2=option2*con
}
q=q+1
}
return(-option1*option2)
}
optim(par=0,KK)
Error in optim(par = 0, KK) : 无法用初始参数来评估函数
此外: Warning message:
In optim(par = 0, KK) : 用Nelder-Mead方法来算一维优化不很可靠:
用"Brent"或直接用optimize()
问题:需要估计的参数为x[1:9130],y[1:9130],z[1:9130],da[,4]是对数收益率序列。这样的话optim里的初始值应该取多少呢?
报错里的无法用初始参数来评估函数应该怎么修改。。。
另外,function里面用
x=theta[1]
y=theta[2]
z=theta[3]
定义三个待估参数对吗?
求大神拯救