SFSconfexpectile0.95 (R 2.13.1)

SFSconfexpectile constructs the confidence bands for 0.95 expectile curve.

Download File

Fri, July 20 2012 by Dedy Dwi Prastyo

-


Description: -

Description: -


rm(list=ls(all=TRUE))
library(KernSmooth)
library(VGAM)
library(expectreg)
library(mboost)
library(KernSmooth) #install.packages("KernSmooth") if package missing
lprq2 <- function(x, y, h, tau, x0) # modified from lprq, s.t. we can specify where to estimate quantiles
        {xx <- x0
        fv <- xx
        dv <- xx
        for(i in 1:length(xx)) {
                z <- x - xx[i]
                wx <- dnorm(z/h)
                r <- rq(y~z, weights=wx, tau=tau, ci=FALSE)
                fv[i] <- r$coef[1]
                dv[i] <- r$coef[2]
                               }    
        list(xx = xx, fv = fv, dv = dv)
        }
lprq3 <- function(x, y, h, x0) # modified from lprq, s.t. we can specify where to estimate quantiles, but random quantiles
       {xx <- x0
        fv <- xx
        dv <- xx
        for(i in 1:length(xx)) {
                z <- x - xx[i]
                wx <- dnorm(z/h)
                r <- rq(y~z, weights=wx, tau=runif(1), ci=FALSE)
                fv[i] <- r$coef[1]
                dv[i] <- r$coef[2]
                               }  
        list(xx = xx, fv = fv, dv = dv)
        }
local.expectile=function(y,x,z,h,q){
   # parameters: x=variable; h=bandwidth; z=grid point; ker=kernel
   nz<-length(z)
   nx<-length(x)
   x_0=rep(1,nx*nz)
   dim(x_0)=c(nx,nz)
   x_1=t(x_0)
   x0=x*x_0 
   w1 <- 0 * y + 0.5 
   y0=y*x_0 
   #y1=0.5*y
   y11<-0.5*y*x_1
   x1=z*x_1
   x10=x0-t(x1)
    #if(ker==1){x1=kernel(x0/h)}         # Epanechnikov kernel
    x11=kernel(x10/h)   
   #x2=(y1<y0)*x_1
   #for (i in 1:nz)
 it=1 
 dw1 = 1
 while (dw1!=0 & it < 100)
  #while ( it < 500)
 { 
   v1=((y0<t(y11))-2*q*(y0<t(y11))+q)*x11
   v2=y*v1
   f1=apply(v1,2,mean)
   f2=apply(v2,2,mean)
   f3=f2/f1
   w01 <- w1
   w1 <- as.vector(ifelse(y0>t(f3*x_1), q, 1 - q))    
   dw1 <- sum(w1 != w01, na.rm = TRUE)
   y1=f3
   y11=f3*x_1
   it=it+1
   }
   return(y1)
}
kernelq <- function(u){dnorm(u,mean=0,sd=1)} 
kernel<-function(x){0.75*(1-x^2)*(abs(x)<=1)}
coverate<-0
area.cover<-0
B<-500
n=500
q=0.95
h=0.2
alpha=0.05
gridn<-n
cc    <- 1/4
set.seed(10*3)
x<-runif(n,0,2)
y<-1.5*x+2*sin(pi*x)+rnorm(n)
e_theor=1.5*x+2*sin(pi*x)+enorm(q)
z<-x
v   <- x # v for the nonparametric part
bound<- c(0, 1)
yuv  <-sort(v) # just sort them for later use
yur  <-y[order(v)]
yuv  <-sort(v) # just sort them for later use
yur  <-y[order(v)]
h12   <-(0.5*(1-0.5)/dnorm(qnorm(0.5))^2)^0.2*h
b2    <-max(h/sd(yuv)*sd(yur), h12^5/(h)^3, h/10)
lambda<- 1/(2*sqrt(pi)) # this is for normal kernel, if quartic kernel, value is 5/7
delta<--log(h)/log(n)
dd    <- sqrt(2*delta*log(n))+(2*delta*log(n))^(-1/2)*log(cc/2/pi)
fxd   <-bkde(yuv, gridsize = gridn, range.x = c(min(z), max(z)))
values<-local.expectile(y,x,z,h,q)
yy1<-y-values[order(x)]
fx_yy  <-bkde(sort(yy1), gridsize = gridn, range.x = c(min(yy1), 0))
delta_yy<-c(min(yy1),fx_yy$x)
sigma<-q^2*mean(yy1^2)+(1-2*q)*sum(yy1^2*fx_yy$y*diff(delta_yy))
f_x<-ecdf(yy1)
fx<-q+(1-2*q)*f_x(0)
bandt <-(fxd$y)^(1/2)*fx
cn    <-log(2)-log(abs(log(1-alpha)))
band  <-(n*h)^(-1/2)*sqrt(lambda*sigma)*bandt^(-1)*(dd+cn*(2*delta*log(n))^(-1/2))
coverate1<-min(e_theor[order(x)]<=values[order(x)]+band,e_theor[order(x)]>=values[order(x)]-band)
coverate<-coverate+coverate1
area.cover<-mean(band)+area.cover
plot(x,y, type="p", pch=20,  ylim=c(min(y),max(y)),xlab="X", ylab="Y", cex.lab=1.8, cex.axis=1.8)
lines(sort(x),values[order(x)],col="blue", lwd=2, type="l")
lines(sort(x),e_theor[order(x)], lwd=2, col=1)
lines(sort(x), values[order(x)]-band,col = "red", lty = 2, lwd=3)
lines(sort(x), values[order(x)]+band,col = "red", lty = 2, lwd=3)
win.graph()
library(VGAM)
library(expectreg)
x<-seq(0.0001,0.9999,length=1000)
y1<-qenorm(x)
y2<-qnorm(x)
y<-cbind(y1,y2,0)
matplot(x,y,type="l", lty=1, cex.axis=2, cex.lab = 2, xlab="tau", ylab= "", lwd=3,col=c(3,4,2),ylim=c(-2,2))