%   [m,T]=Ret_periodNPU(Md,Mu,dM,Mmin,lamb,eps,h,xx,ambd)
%
%USING THE NONPARAMETRIC ADAPTATIVE KERNEL APPROACH EVALUATES 
%   THE MEAN RETURN PERIOD VALUES FOR THE UNBOUNDED 
%   NONPARAMETRIC DISTRIBUTION FOR MAGNITUDE. 
%
% AUTHOR: S. Lasocki 06/2014 within IS-EPOS project.
%
% DESCRIPTION: The kernel estimator approach is a model-free alternative 
% to estimating the magnitude distribution functions. It is assumed that 
% the magnitude distribution is unlimited from the right hand side. 
% The estimation makes use of the previously estimated parameters of kernel 
% estimation, namely the smoothing factor, the background sample and the 
% scaling factors for the background sample. The background sample 
% - xx comprises the randomized values of observed magnitude doubled 
% symmetrically with respect to the value Mmin-eps/2.
%
% The mean return period of magnitude M is the average 
%   elapsed time between the consecutive earthquakes of magnitude M.   
% The mean return periods are calculated for magnitude starting from Md up
% to Mu with step dM.
%
% REFERENCES:
%Silverman B.W. (1986) Density Estimation fro Statistics and Data Analysis, 
%   Chapman and Hall, London 
%Kijko A., Lasocki S., Graham G. (2001) Pure appl. geophys. 158, 1655-1665
%Lasocki S., Orlecka-Sikora B. (2008) Tectonophysics 456, 28-37
%
% INPUT:
%   Md - starting magnitude for return period calculations
%   Mu - ending magnitude for return period calculations
%   dM - magnitude step for return period calculations 
%   Mmin - lower bound of the distribution - catalog completeness level
%   lamb - mean activity rate for events M>=Mmin
%   eps - length of the round-off interval of magnitudes.
%   h - kernel smoothing factor.
%   xx - the background sample
%   ambd - the weigthing factors for the adaptive kernel
%
%OUTPUT:
%   m - vector of independent variable (magnitude) m=(Md:dM:Mu)
%   T - vector od mean return periods of the same length as m
%
% LICENSE
%     This file is a part of the IS-EPOS e-PLATFORM.
%
%     This is free software: you can redistribute it and/or modify it under 
%     the terms of the GNU General Public License as published by the Free 
%     Software Foundation, either version 3 of the License, or 
%     (at your option) any later version.
% 
%     This program is distributed in the hope that it will be useful,
%     but WITHOUT ANY WARRANTY; without even the implied warranty of
%     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%     GNU General Public License for more details.
% 

function [m,T]=Ret_periodNPU(Md,Mu,dM,Mmin,lamb,eps,h,xx,ambd)

% -------------- VALIDATION RULES -------------  K_21NOV2016
 if dM<=0;error('Magnitude Step must be greater than 0');end
%----------------------------------------------------------


if Md<Mmin; Md=Mmin;end
m=(Md:dM:Mu)';
n=length(m);

for i=1:n
    CDF_NPU=2*(Dystr_npr(m(i),xx,ambd,h)-Dystr_npr(Mmin-eps/2,xx,ambd,h));
    T(i)=1/lamb./(1-CDF_NPU);
end
T=T';
end


function [Fgau]=Dystr_npr(y,x,ambd,h)

%Nonparametric adaptive cumulative distribution for a variable from the
%interval (-inf,inf)

% x - the sample data 
% ambd - the local scaling factors for the adaptive estimation 
% h - the optimal smoothing factor 
% y - the value of random variable X for which the density is calculated
% gau - the density value f(y)

n=length(x);
Fgau=sum(normcdf(((y-x)./ambd')./h))/n;
end

