Sharp adaptive estimation of kvadratic functionals

Technical report "Sharp adaptive estimation of kvadratic functionals" is available for downloading.

Abstract

Estimation of a quadratic functional of a function observed in Gaussian white noise is considered. A data-dependent method for choosing the amount of smoothing is given. The method is based on applying the Lepski method to choose between certain quadratic estimators. It is shown that the method is asymptotically sharp adaptive simultaneously for the "regular" and "irregular" region. We consider Lp bodies and constract bounds for the risk of the estimator which show that for p=4 the estimator is exactly optimal and for example when p is int interval [3,100], then the upper bound is at most 1.055 times larger than the lower bound. We show the connection of the constructed estimator to the theory of optimal recovery. The estimator is a calibration of an estimator which is nearly minimax optimal among quadratic estimators.

To reproduce and modify the Figure 1 of the article, use the following R function. (Information on R is available in R archive network.)


kvadra<-function(svec,pvec){


z<-matrix(0,length(svec),length(pvec))

for (i in 1:length(svec)){
   s<-svec[i]
 for (j in 1:length(pvec)){
     p<-pvec[j]
     q<-p*(s-1/p+1/2)

#upper bound

I1<-beta(p/(p-2)-1/q-2*k*p/(q*(p-2))-1,1+1/q+2*k*p/(q*(p-2)))/q
I2<-beta(2-(4*k+1)/q,(4*k+1)/q)/q
pote1<-(p-2)*(4*k+1)/(p*(4*s+1))
pote2<-2*(s-k)/(4*s+1)
vakio<-((4*k+1)/(4*(s-k)))^(4*(s-k)/(4*s+1))*(4*s+1)/(4*k+1)
yla<-I1^pote1*I2^pote2*vakio

#lower bound

I3<-beta(4/(p-2)-1/q-8*k/(q*(p-2)),1/q+8*k/(q*(p-2)))/q
I4<-beta(2/(p-2)-1/q-4*k/(q*(p-2))-2*k/q,1/q+4*k/(q*(p-2))+2*k/q)/q
pote3<--2*(4*k+1)/(p*(4*s+1))
pote4<--2*(s-k)/(4*s+1)
ala<-I1^pote3*I3^pote4*I4

    z[i,j]<-yla/ala
  }
}
return(list(x=svec,y=pvec,z=z))
}

Then use for example the following commands (assuming that the above function is in the file kvadra.R).

source("kvadra.R")

postscript(file="/home/jsk/Arti/kvadra/kvadrakuva.ps")  
par(mfrow=c(1,2))   

k<-0

sala<-k+0.01
syla<-2*k+0.25
sstep<-0.01
svec<-seq(sala,syla,sstep)

pala<-3
pyla<-4
pstep<-0.25
pvec<-seq(pala,pyla,pstep)

kv<-kvadra(svec,pvec)
contour(kv$x,kv$y,kv$z,nlevels=20,xlab="s",ylab="p")
title(sub=expression(paste("a) ", 3<=p<=4)))



k<-0

sala<-k+0.01
syla<-2*k+0.25
sstep<-0.01
svec<-seq(sala,syla,sstep)

pala<-4
pyla<-100
pstep<-1
pvec<-seq(pala,pyla,pstep)

kv<-kvadra(svec,pvec)
contour(kv$x,kv$y,kv$z,nlevels=12,xlab="s",ylab="p")
title(sub=expression(paste("b) ", p>=4)))

dev.off()

gv /home/jsk/Arti/kvadra/kvadrakuva.ps &