11# Store both grid and density for KDE over the real line
2- mutable struct UnivariateKDE{R<: Range } <: AbstractKDE
2+ mutable struct UnivariateKDE{R<: AbstractRange } <: AbstractKDE
33 x:: R
44 density:: Vector{Float64}
55end
@@ -66,7 +66,7 @@ function kde_range(boundary::Tuple{Real,Real}, npoints::Int)
6666 lo, hi = boundary
6767 lo < hi || error (" boundary (a,b) must have a < b" )
6868
69- Compat . range (lo, stop= hi, length= npoints)
69+ range (lo, stop= hi, length= npoints)
7070end
7171
7272struct UniformWeights{N} end
@@ -80,7 +80,7 @@ const Weights = Union{UniformWeights, RealVector, StatsBase.Weights}
8080
8181
8282# tabulate data for kde
83- function tabulate (data:: RealVector , midpoints:: Range , weights:: Weights = default_weights (data))
83+ function tabulate (data:: RealVector , midpoints:: R , weights:: Weights = default_weights (data)) where R <: AbstractRange
8484 npoints = length (midpoints)
8585 s = step (midpoints)
8686
@@ -131,7 +131,7 @@ function conv(k::UnivariateKDE, dist::UnivariateDistribution)
131131end
132132
133133# main kde interface methods
134- function kde (data:: RealVector , weights:: Weights , midpoints:: Range , dist:: UnivariateDistribution )
134+ function kde (data:: RealVector , weights:: Weights , midpoints:: R , dist:: UnivariateDistribution ) where R <: AbstractRange
135135 k = tabulate (data, midpoints, weights)
136136 conv (k,dist)
137137end
@@ -143,8 +143,8 @@ function kde(data::RealVector, dist::UnivariateDistribution;
143143 kde (data,weights,midpoints,dist)
144144end
145145
146- function kde (data:: RealVector , midpoints:: Range ;
147- bandwidth= default_bandwidth (data), kernel= Normal, weights= default_weights (data))
146+ function kde (data:: RealVector , midpoints:: R ;
147+ bandwidth= default_bandwidth (data), kernel= Normal, weights= default_weights (data)) where R <: AbstractRange
148148 bandwidth > 0.0 || error (" Bandwidth must be positive" )
149149 dist = kernel_dist (kernel,bandwidth)
150150 kde (data,weights,midpoints,dist)
@@ -162,10 +162,10 @@ end
162162# B. W. Silverman (1986)
163163# sections 3.4.3 (pp. 48-52) and 3.5 (pp. 61-66)
164164
165- function kde_lscv (data:: RealVector , midpoints:: Range ;
165+ function kde_lscv (data:: RealVector , midpoints:: R ;
166166 kernel= Normal,
167167 bandwidth_range:: Tuple{Real,Real} = (h= default_bandwidth (data); (0.25 * h,1.5 * h)),
168- weights= default_weights (data))
168+ weights= default_weights (data)) where R <: AbstractRange
169169
170170 ndata = length (data)
171171 k = tabulate (data, midpoints, weights)
0 commit comments