library(copula)
clayton<-function(theta,U)dcopula(claytonCopula(theta,dim=2),U)
gumbel<-function(theta,U)dcopula(gumbelCopula(theta,dim=2),U)
frank<-function(theta,U)dcopula(frankCopula(theta,dim=2),U)
k<-1;ep<-1e-9;a1<-1/3;a2<-1/3;a3<-1/3;theta1<-0.9063;theta2<-1.2993;theta1<-3.1547;
repeat{
k<-k+1
lamda<-c()
f<-function(lamda)
{
lamda1<-lamda[1]
lamda2<-lamda[2]
lamda3<-lamda[3]
s1<-a1[k-1]*clayton(theta1[k-1],U)/(a1[k-1]*clayton(theta1[k-1],U)+a2[k-1]*gumbel(theta2[k-1],U)+a3[k-1]*frank(theta3[k-1],U))
s2<-a2[k-1]*gumbel(theta2[k-1],U)/(a1[k-1]*clayton(theta1[k-1],U)+a2[k-1]*gumbel(theta2[k-1],U)+a3[k-1]*frank(theta3[k-1],U))
s1<-a3[k-1]*frank(theta3[k-1],U)/(a1[k-1]*clayton(theta1[k-1],U)+a2[k-1]*gumbel(theta2[k-1],U)+a3[k-1]*frank(theta3[k-1],U))
fn<-sum(log(clayton(lamda1[k-1],U))*s1+log(gumbel(lamda2[k-1],U))*s2+log(frank(lamda3[k-1],U))*s3)
}
a1[k]<-mean(a1[k-1]*clayton(theta1[k-1],U)/(a1[k-1]*clayton(theta1[k-1],U)+a2[k-1]*gumbel(theta2[k-1],U)+a3[k-1]*frank(theta3[k-1],U))
a2[k]<-mean(a2[k-1]*gumbel(theta2[k-1],U)/(a1[k-1]*clayton(theta1[k-1],U)+a2[k-1]*gumbel(theta2[k-1],U)+a3[k-1]*frank(theta3[k-1],U))
a3[k]<-mean(a3[k-1]*frank(theta3[k-1],U)/(a1[k-1]*clauyon(theta1[k-1],U)+a2[k-1]*gumbel(theta2[k-1],U+a3[k-1]*frank(theta3[k-1],U))
lamda<-optim(c(theta1[k-1],theta2[k-1],theta3[k-1]),f,method="L-BFGS-B",lower=c(0,1,-Inf),lower=c(0,1,-Inf),upper=c(Inf,Inf,Inf),control=list(fnscale=-1)$par
theta1[k]<-lamda[1]
theta2[k]<-lamda[2]
theta3[k]<-lamda[3]
if((a1[k]-a1[k-1])^2+(a2[k]-a2[k+1])^2+(a3[k]-a3[k-1])^2+(theta1[k]-theta[k-1])^2+(theta2[k]-theta2[k-1])^2+(theta3[k]-theta3[k-1])^2<ep)break}
有没有大神帮看看,为什么我运行到红字那一行,然后显示红色字体上一行有unexpected symbol in:,这是怎么回事啊