library(RandomFields) library(fBasics) library(stabledist) library(gtools) library(Rfast) #install.packages("stabledist") #cat("\014") #set.seed(999) #set.seed(NULL) #Dimention d=1 h=0.02 #mesh size # Observations (past) points T2 = 30 ### upper limit of time points T1 = 0 ### lower limit of time points RK = 5 # Prediction interval #RK = 0.5 # Prediction interval n=10 # number of prediction points step2 = 1 #Model=1 > Gaussian #Model=2 > Cauchy #Model=3 > Levy #Model=4 > Student #ModelPred=0 ##(0-intepolation, 1- extrapolation) for (Model in 1:1){ for (ModelPred in c(0,1)){ Model=1 ModelPred=0 #ModelPred=0 ##(0-intepolation, 1- extrapolation) #Initialization filename1<-switch (Model, "GaussTrajA-h002.csv", "CauchyTrajA-h002.csv", "LevyTrajA-h002.csv","StudentTrajA-h002.csv") filename2<-switch (Model, "2108GradGauss-h002.csv", "2108GradCauhy-h002.csv", "2108GradLevy-h002.csv","2108GradStudent-h002.csv") if (Model==1){ F0<-function(x) return(pnorm(x,mean=-0.48,sd=1.11)) p0<-function(x) return(dnorm(x,mean=-0.48,sd=1.11)) } if (Model==2){ F0<-function(x) return(pcauchy(x,scale=1.26)) p0<-function(x) return(dcauchy(x,scale=1.26)) } if (Model==3){ mu=0 cc<-0.836 F0<-function(x) { if (sum(x<0)>0) print("Alert") return(2-2*pnorm(sqrt(cc/(x)))) } p0<-function(x) return((2*pi/cc)^(-0.5)*(x)^(-1.5)*exp(-0.5*cc/(x-mu))) } if (Model==4){ F0<-function(x) return(pt(x/14,df=0.67)) p0<-function(x) return(dt(x/14,df=0.67)) } F0(c(-101.96,2)) p0(c(-101.96,2)) T3=T2+RK # upper limit of predicted points TA=seq(from=T1, to=T3-h,by=h) #All time points NTA=length(TA) #Number of all time points ITA=1:NTA #All indeces of time points T0=seq(from=T1, to=T2-h,by=h) #All time points of observations NT0=length(T0) #Number of observations IT0=1:NT0 #All indeces of observations if (ModelPred==0){ step1<-round((RK/h)/n) # Prediction points TP<-seq(from=T2, to=T2+RK-h,by=h*step1) #All time points of Prediction points NTP<-length(TP) #Number of Prediction points ITP<-ITA[NT0+(0:(n-1))*step1+1] TA[ITP] # extrapolated points TE=TA[-append(IT0,ITP)] #All time points of extrapolation NTE=length(TE) #Number of extrapolated points ITE=ITA[-append(IT0,ITP)] #indecies of extrapolated points }else { step1<-round((RK/h)/n) # Prediction points TP<-seq(from=T2, to=T2+5*h*(n-1),by=5*h) #All time points of Prediction points #TP=seq(from=T2, to=T2+h*(n-1),by=h) #All time points of Prediction points NTP=length(TP) #Number of Prediction points ITP<-ITA[NT0+(0:(NTP-1))*5+1] TA[ITP] # extrapolated points TE<-TA[-append(IT0,ITP)] #All time points of extrapolation NTE<-length(TE) #Number of extrapolated points ITE<-ITA[-append(IT0,ITP)] #indecies of extrapolated points } TrajA=read.csv(filename1) MaxN=max(TrajA[,1]) MaxT=max(TrajA[,2]) TrajA=TrajA[ITA+MaxN-NTA,3] Traj=TrajA[IT0] #Prediction: #Gradient functional hjarr<-function(ti) return(seq(from=1-min(ti,ITP),to=NT0-1-max(ti,ITP),by=step2)) nt2<-NT0+min(ITP)-max(ITP)-1 XPRarr<-matrix(rep(0,n*nt2),nrow=n) for (i in 1:nt2) { XPRarr[,i]<-Traj[ITP+i-min(ITP)] } #Functional PhiF<-function(type,lambda,Xthat,Xt,gmm,iar) { if (type==1) { return(mean(2*pmax(F0(Xthat),F0(Xt))-F0(Xthat)-F0(Xt))) } if (type==21) { Fxhat<-F0(Xthat) return(c(mean(abs(Fxhat-F0(Xt))),mean(gmm*(1/3-pmax(Fxhat,Fxhat[iar])+Fxhat^2)))) } if (type==2) { Fxhat<-F0(Xthat) return(mean(abs(Fxhat-F0(Xt))+gmm*(1/3-pmax(Fxhat,Fxhat[iar])+Fxhat^2))) } if (type==3) { Fxhat<-F0(Xthat) return(mean(2*pmax(Fxhat,F0(Xt))-1+gmm*(1/3-pmax(Fxhat,Fxhat[iar])+Fxhat^2))) } if (type==4) { #Xthat<-((lambda0^2)%*%XPRti)[1,] #Xt<-Traj[ti+hia] Fxhat<-F0(Xthat) lenxa<-length(Fxhat) #ix<-combinations(n=lenxa, r=2, set = TRUE, repeats.allowed = FALSE) return(mean(abs(Fxhat-F0(Xt))+gmm*(1/3+Fxhat^2-Fxhat))-gmm*total.dist(Fxhat)/lenxa^2) } } #Gradient j NablaPhiFj<-function(type,lambda,Xthat,Xt,XBhat,gmm,Yj,YBhat){ if (type==1) { return(XBhat*(2*(XtXthat)*p0(Yj)) } if (type==31) { return() } if (type==4) { Fxhat<-F0(Xthat) lenxa<-length(Yj) # ix<-combinations(n=length(Fxhat), r=2, set = TRUE, repeats.allowed = FALSE) # return(mean(2*pmax(Fxhat,F0(Xt))-Fxhat-F0(Xt)+gmm*(1/3+Fxhat^2-Fxhat/length(Fxhat)-2*pmax(Fxhat[ix[,1]],Fxhat[ix[,2]])/length(Fxhat)))) return(XBhat*(2*(XtXthat)*p0(Yj))/lenxa) } } #Gradient mean NablaPhiF<-function(type,lambda,Xthat,Xt,XBhat,gmm,Yj) { if (type==1) { return(rowMeans(XBhat*((2*(XthatXhatl)*p0((lambda1[l,]%*%XPRti)[1,]))/lenxa } else { Gradj<-NablaPhiFj(type=type1,lambda=lambda1[l,],Xthat=Xhatl,Xt=Xtl,XBhat=XBhatl,gmm=gm1,Yj=Yl,YBhat=YBhatl)/length(hia) } # Gradj1[l,]<-NablaPhiFj(type=type1,lambda=lambda1[l,],Xthat=Xhatl,Xt=Xtl,XBhat=XBhatl,gmm=gm1,Yj=Yl) # Gradj2[l,]<-NablaPhiFj(type=1,lambda=lambda1[l,],Xthat=Xhatl,Xt=Xtl,XBhat=XBhatl,gmm=gm1,Yj=Yl) # lambda1[l+1,]<-lambda1[l,] - nl[l]*Gradj # Xhatl<-(lambda1[l+1,]%*%XBhatl)[1,] # Yl<-(lambda1[l+1,]%*%YBhatl)[1,] # XhatA<-(lambda1[l+1,]%*%XBhatA)[1,] # PhiL1[l+1]<-PhiF(type=type1,Xthat = XhatA,Xt=XtA,gmm=gm1,iar=iar) # if (PhiL1[l+1]>PhiL1[l]) { # lambda1[l+1,]<-lambda1[l,] # } # if (PhiL1[l]