Optimal Recovery and Statistical Estimation in Lp Sobolev Classes

Technical report "Optimal recovery and statistical estimation in Lp Sobolev classes" is available for downloading.

Abstract

We present algorithms for the optimal recovery of a partial derivative of a function at a point when we have approximate measurements of the Riesz transform of the function, and this function belongs to a $L_p$ Sobolev class. The algorithms are exactly optimal among linear algorithms for the cases $p=1$ and $p=2$ and we give tight bounds for the performance of the algorithms when $p>1$, $p \neq 2$. Previously only the case $p=2$ has been studied. Algorithms for the optimal recovery problem provide optimal estimators for several statistical problems, when we calibrate algorithms suitably. As examples we construct a nearly minimax estimator in the Gaussian white noise model and an asymptotically nearly minimax estimator for the problem of regression function estimation with iid data.

Reproducing the figures

To reproduce and modify the figures of the article, apply R functions sobolp.R and sobolp.dim.R (Information on R is available in R archive network.)
source("~/public_html/Art/sobolp/sobolp.R")
source("~/public_html/Art/sobolp/sobolp.dim.R")

Figure1: d=1, g=0, 0.5, 0.9

d<-1
r<-0




postscript(file="/home/jsk/Arti/sobolp/sobolp-kuva1.ps",horizontal=FALSE)
par(mfrow=c(3,2))

g<-0

pala<-1.1
pyla<-2
pstep<-0.1
pvec<-seq(pala,pyla,pstep)
sala<-1
syla<-5
sstep<-0.25
svec<-seq(sala,syla,sstep)

kv<-sobolp(svec,pvec,g,d,r)
contour(kv$x,kv$y,kv$z,xlab=expression(beta),ylab="p",nlevels=25)
title(sub=expression(paste("a.1) ", 1<=p<=2, " , " , gamma==0)))

pala<-2
pyla<-50
pstep<-1
pvec<-seq(pala,pyla,pstep)
sala<-0.5
syla<-10
sstep<-0.5
svec<-seq(sala,syla,sstep)

kv<-sobolp(svec,pvec,g,d,epsi=0.5)
contour(kv$x,kv$y,kv$z,xlab=expression(beta),ylab="p",nlevels=12)
title(sub=expression(paste("a.2) ", p>=2, " , " , gamma==0)))

g<-0.5

pala<-1.1
pyla<-2
pstep<-0.1
pvec<-seq(pala,pyla,pstep)
sala<-0.6
syla<-4
sstep<-0.25
svec<-seq(sala,syla,sstep)

kv<-sobolp(svec,pvec,g,d,r)
contour(kv$x,kv$y,kv$z,xlab=expression(beta),ylab="p",nlevels=20)
title(sub=expression(paste("b.1) ", 1<=p<=2, " , " , gamma==0.5)))

pala<-2
pyla<-4.8
pstep<-0.2
pvec<-seq(pala,pyla,pstep)
sala<-2
syla<-10
sstep<-0.1
svec<-seq(sala,syla,sstep)

kv<-sobolp(svec,pvec,g,d,epsi=0)
contour(kv$x,kv$y,kv$z,xlab=expression(beta),ylab="p",nlevels=20)
title(sub=expression(paste("b.2) ", p>=2, " , " , gamma==0.5)))

g<-0.9

pala<-1.1
pyla<-2
pstep<-0.1
pvec<-seq(pala,pyla,pstep)
sala<-0.6
syla<-4
sstep<-0.25
svec<-seq(sala,syla,sstep)

kv<-sobolp(svec,pvec,g,d,r)
contour(kv$x,kv$y,kv$z,xlab=expression(beta),ylab="p",nlevels=15)
title(sub=expression(paste("c.1) ", 1<=p<=2, " , " , gamma==0.9)))

pala<-2
pyla<-3.5
pstep<-0.1
pvec<-seq(pala,pyla,pstep)
sala<-2
syla<-10
sstep<-0.1
svec<-seq(sala,syla,sstep)

kv<-sobolp(svec,pvec,g,d,epsi=0.5)
contour(kv$x,kv$y,kv$z,xlab=expression(beta),ylab="p",nlevels=12)
title(sub=expression(paste("c.2) ", p>=2, " , " , gamma==0.9)))

dev.off()


Figure 2: d=2, g=0, 0.5, 0.9

d<-2
r<-0




postscript(file="/home/jsk/Arti/sobolp/sobolp-kuva2.ps",horizontal=FALSE)
par(mfrow=c(3,2))

g<-0

pala<-1.1
pyla<-2
pstep<-0.1
pvec<-seq(pala,pyla,pstep)
sala<-2
syla<-4
sstep<-0.25
svec<-seq(sala,syla,sstep)

kv<-sobolp(svec,pvec,g,d,r)
contour(kv$x,kv$y,kv$z,xlab=expression(beta),ylab="p",nlevels=25)
title(sub=expression(paste("a.1) ", 1<=p<=2, " , " , gamma==0)))

pala<-2
pyla<-50
pstep<-1
pvec<-seq(pala,pyla,pstep)
sala<-1  #1.1
syla<-10
sstep<-0.5
svec<-seq(sala,syla,sstep)

kv<-sobolp(svec,pvec,g,d,epsi=0.5)
contour(kv$x,kv$y,kv$z,xlab=expression(beta),ylab="p",nlevels=15)
title(sub=expression(paste("a.2) ", p>=2, " , " , gamma==0)))

g<-0.5

pala<-1.1
pyla<-2
pstep<-0.1
pvec<-seq(pala,pyla,pstep)
sala<-1.5
syla<-4
sstep<-0.25
svec<-seq(sala,syla,sstep)

kv<-sobolp(svec,pvec,g,d,r)
contour(kv$x,kv$y,kv$z,xlab=expression(beta),ylab="p",nlevels=20)
title(sub=expression(paste("b.1) ", 1<=p<=2, " , " , gamma==0.5)))

pala<-2
pyla<-3.5
pstep<-0.1
pvec<-seq(pala,pyla,pstep)
sala<-2
syla<-8
sstep<-0.1
svec<-seq(sala,syla,sstep)

kv<-sobolp(svec,pvec,g,d,epsi=0.5)
contour(kv$x,kv$y,kv$z,xlab=expression(beta),ylab="p",nlevels=25)
title(sub=expression(paste("b.2) ", p>=2, " , " , gamma==0.5)))

g<-0.9

pala<-1.1
pyla<-2
pstep<-0.1
pvec<-seq(pala,pyla,pstep)
sala<-1
syla<-3.5
sstep<-0.2
svec<-seq(sala,syla,sstep)

kv<-sobolp(svec,pvec,g,d,r)
contour(kv$x,kv$y,kv$z,xlab=expression(beta),ylab="p",nlevels=12)
title(sub=expression(paste("c.1) ", 1<=p<=2, " , " , gamma==0.9)))

pala<-2
pyla<-3
pstep<-0.05
pvec<-seq(pala,pyla,pstep)
sala<-2.5
syla<-15
sstep<-0.2
svec<-seq(sala,syla,sstep)

kv<-sobolp(svec,pvec,g,d,epsi=0.5)
contour(kv$x,kv$y,kv$z,xlab=expression(beta),ylab="p",nlevels=20)
title(sub=expression(paste("c.2) ", p>=2, " , " , gamma==0.9)))

dev.off()


Figure 3: Constants and the dimensionality

dims<-c(1,2,3,4,5,6,7,8,9,10) 
bets<-2+dims/2  #rep(6,length(dims))

p<-1
sd1<-sobolp.dim(dims,p,bets)

p<-2
sd2<-sobolp.dim(dims,p,bets)

p<-4
sd4<-sobolp.dim(dims,p,bets)

tyypit1<-c(rep(19,length(dims)),rep(21,length(dims)),rep(22,2*length(dims)))
tyypit2<-c(rep(19,length(dims)),rep(21,length(dims)))

postscript(file="/home/jsk/Arti/sobolp/sobolp-kuva3.eps",
horizontal=FALSE, onefile=FALSE, paper="special",
width=9, height=4)
par(mfrow=c(1,2))

plot(c(dims,dims,dims,dims),c(sd1$lowe,sd2$lowe,sd4$lowe,sd4$over),
xlab="d",ylab="",pch=tyypit1) 
title(sub="a) constants")

plot(c(dims,dims),
c(log(sd2$lowe/sd1$lowe,base=10),log(sd4$over/sd2$over,base=10)),
xlab="d",ylab="",pch=tyypit2)
title(sub="b) log-ratios of the constants")

dev.off()

gv /home/jsk/Arti/sobolp/sobolp-kuva3.eps &

Find the bound for beta

g<-0
d<-10
r<-0
pala<-1.1
pyla<-4
pstep<-0.1
pvec<-seq(pala,pyla,pstep)




postscript(file="/home/jsk/Arti/sobolp/sobolpbound.ps")  #,horizontal=FALSE)

b<-matrix(0,length(pvec),1)
for (i in 1:length(pvec)){
   b[i]<-max(r/pvec[i]+d/2,
             (r-g)/pvec[i]+d*(3/(2*pvec[i])-1/2),
             d/2+(pvec[i]-2)*g+(pvec[i]-1)*r ,
             d*(3/(2*pvec[i])-1/2) + r/pvec[i] - g/(pvec[i]*(pvec[i]-1)),
             d/2+2*r*(pvec[i]-1)/pvec[i]+g*(pvec[i]-2)/pvec[i])
}

plot(pvec,b)

dev.off()