%   [T,m]=Max_credM_NPU_O(Td,Tu,dT,Mmin,lamb,eps,h,xx,ambd)  ---- (Octave  Comlatible Version)
%
%USING THE NONPARAMETRIC ADAPTATIVE KERNEL APPROACH EVALUATES  
%   THE MAXIMUM CREDIBLE MAGNITUDE 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 maximum credible magnitude for the period of length T
% is the magnitude value whose mean return period is T. 
% The maximum credible magnitude values are calculated for periods of 
% length starting from Td up to Tu with step dT.
%
% 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:
%   opt - determines the mode of calculations. opt=0 - fixed time period
%       length (y), different magnitude values (x), opt=1 - fixed magnitude 
%       (y), different time period lengths (x)
%   xd - starting value of the changeable independent variable 
%   xu - ending value of the changeable independent variable
%   dx - step change of the changeable independent variable
%   y - fixed independent variable value: time period length T' if opt=0, 
%        magnitude M' if opt=1
%   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:
%   T - vector of independent variable (period lengths) T=(Td:dT:Tu)
%   m - vector of maximum credible magnitudes of the same length as T
%
% 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 [T,m]=Max_credM_NPU_O(Td,Tu,dT,Mmin,lamb,eps,h,xx,ambd)

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


T=(Td:dT:Tu)';
n=length(T);
interval=[Mmin-eps/2 10.0];
for i=1:n
%     m(i)=fzero(@F_maxmagn_NPU,interval,[],xx,h,ambd,Mmin-eps/2,lamb,T(i));
     m(i)=fzero(@(t) F_maxmagn_NPU(t,xx,h,ambd,Mmin-eps/2,lamb,T(i)),interval);
end
m=m';
end

function [y]=F_maxmagn_NPU(t,xx,h,ambd,xmin,lamb,D)
CDF_NPU=2*(Dystr_npr(t,xx,ambd,h)-Dystr_npr(xmin,xx,ambd,h));
y=CDF_NPU-1+1/(lamb*D);
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

