Thread Subject:
kernel, cdf, bandwidth, short code

Subject: kernel, cdf, bandwidth, short code

From: leo nidas

Date: 15 May, 2012 18:24:06

Message: 1 of 1



Hi there,

I want to apply a specific kernel approach for estimating the cdf. I am interested in implemeting the so called Altman approach mentioned in section 2.3 of the following paper

Comparison of bandwidth selection methods for kernel
smoothing of ROC curves, by Xiao-Hua Zhou and Jaroslaw Harezlak
STATISTICS IN MEDICINE
Statist. Med. 2002; 21:2045–2055 (DOI: 10.1002/sim.1156)

This seemed an easy one. And I build it very carefully and checked it over and over again, but probably I am doing something wrong. I provide the code that implements this approach. I first generate some normally distributed data and then plot my estimation along with the true cdf to see how am I doing. I use a large sample to check it.

I observed that if I replace the bandwidth value used in the following code, and mentioned in the paper:
hx=(45/(-7*n*ps))^(0.3)

with this one:
hx=(45/(-7*n^2*ps))^(0.3)

everything works fine! However this is not the bandwidth mentioned in the paper, just saying.. Can anyone see something wrong?

I wish I could upload tha paper too because I guess special access is required but I don't think I am allowed to do that due to copyrights. Let alone I don't know if I can upload anything here. Can I?

close all
clear all
clc

n=2000;
L2=@(x) (x.^2./exp(x.^2/2) - 1./exp(x.^2./2)) .* 1/(sqrt(2*pi))
%The above is the second derivative of a standard normal density
sigma=0.9;mu=1.5;

g=(n)^(-0.3);
x=normrnd(mu,sigma,1,n);
[b a]=meshgrid(1:length(x),1:length(x));
  
SS=sum(sum(L2((x(a)-x(b))./(g))));
ps=(1/(n^2))*SS;
hx=(45/(-7*n*ps))^(0.3) %This is what the paper mentions
%hx=(45/(-7*n^2*ps))^(0.3) %This seems to work fine

 
W=@(t) 0*(t<-1)+(3/4.*t-1/4.*t.^3+1/2).*(abs(t)<=1)+1.*(t>1)
%The above is the Epanechnikov kernel for cdf
Fhat=@(t) 1/(n)*sum(W((t-x)./hx)) % estimate of the cdf

%--Now draw the estimated CDF
kk=1;
gr=-4:0.1:4;
for i=gr
    FF(kk)=Fhat(i);
    kk=kk+1;
end

plot(gr,FF,'r')
hold on
%---And draw also the true CDF:
plot(gr,normcdf(gr,mu,sigma))
 

Tags for this Thread

Everyone's Tags:

Add a New Tag:

Separated by commas
Ex.: root locus, bode

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Tag Activity for This Thread
Tag Applied By Date/Time
kernel leo nidas 15 May, 2012 14:24:08
cdf leo nidas 15 May, 2012 14:24:08
bandwidth leo nidas 15 May, 2012 14:24:08
short code leo nidas 15 May, 2012 14:24:08
rssFeed for this Thread

Contact us