我在调用MCMCmetrop1R函数时,出现如下错误:
错误于optim(theta.init, maxfun, control = optim.control, lower = optim.lower, :
'vmmin'的初始值不能为无穷大
请问大家,该怎么纠正呢?谢谢!我的代码如下:
m1=40;m2=40/46;
n1=20;n2=20/114;
p1=5;p2=5/500;
x1=1/x;
y1=1/y;
myfun=function(theta,x,x1,y,y1)
{ m=theta[1];
n=theta[2];
p=theta[3];
b=length(x);
a=length(y);
A=(m*n)^(b/2);
B=(m*n+2*p)^(a/2);
C=n*b-(m*n/2)*sum(x1)-(n/2*m)*sum(x);
D=a*n*(1+(2*p)/(m*n))^(1/2)-(m*n+2*p)*sum(y1)-n*sum(y)/(2*m);
p1=m^(m1-1)*exp(-m2*m);
p2=n^(n1-1)*exp(-n2*n);
p3=p^(p1-1)*exp(-p2*p);
post.fun=A*B*C*D*p1*p2*p3;
};
post.samp=MCMCmetrop1R(myfun,theta=c(48,35,500),x=x,y=y,x1=x1,y1=y1,thin=1,mcmc=10000,burnin=500,tune=c(0.02,0.02,0.02));