Skip to content

Commit 9950ed6

Browse files
committed
Range -> AbstractRange
1 parent f88f9e2 commit 9950ed6

File tree

3 files changed

+17
-15
lines changed

3 files changed

+17
-15
lines changed

README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ least-squares cross validation. It accepts the above keyword arguments, except
4141

4242
There are also some slightly more advanced interfaces:
4343
```
44-
kde(data, midpoints::Range)
44+
kde(data, midpoints::R) where R<:AbstractRange
4545
```
4646
allows specifying the internal grid to use. Optional keyword arguments are
4747
`kernel` and `bandwidth`.
@@ -53,7 +53,7 @@ allows specifying the exact distribution to use as the kernel. Optional
5353
keyword arguments are `boundary` and `npoints`.
5454

5555
```
56-
kde(data, midpoints::Range, dist::Distribution)
56+
kde(data, midpoints::R, dist::Distribution) where R<:AbstractRange
5757
```
5858
allows specifying both the distribution and grid.
5959

@@ -95,4 +95,3 @@ pdf(ik, x)
9595
```
9696

9797
`InterpKDE` will pass any extra arguments to `interpolate`.
98-

src/bivariate.jl

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Store both grid and density for KDE over R2
2-
mutable struct BivariateKDE{Rx<:Range,Ry<:Range} <: AbstractKDE
2+
mutable struct BivariateKDE{Rx<:AbstractRange,Ry<:AbstractRange} <: AbstractKDE
33
x::Rx
44
y::Ry
55
density::Matrix{Float64}
@@ -26,7 +26,8 @@ function default_bandwidth(data::Tuple{RealVector,RealVector})
2626
end
2727

2828
# tabulate data for kde
29-
function tabulate(data::Tuple{RealVector, RealVector}, midpoints::Tuple{Range, Range}, weights::Weights = default_weights(data))
29+
function tabulate(data::Tuple{RealVector, RealVector}, midpoints::Tuple{Rx, Ry},
30+
weights::Weights = default_weights(data)) where {Rx<:AbstractRange,Ry<:AbstractRange}
3031
xdata, ydata = data
3132
ndata = length(xdata)
3233
length(ydata) == ndata || error("data vectors must be of same length")
@@ -87,7 +88,8 @@ const BivariateDistribution = Union{MultivariateDistribution,Tuple{UnivariateDis
8788

8889
default_weights(data::Tuple{RealVector, RealVector}) = UniformWeights(length(data[1]))
8990

90-
function kde(data::Tuple{RealVector, RealVector}, weights::Weights, midpoints::Tuple{Range, Range}, dist::BivariateDistribution)
91+
function kde(data::Tuple{RealVector, RealVector}, weights::Weights, midpoints::Tuple{Rx, Ry},
92+
dist::BivariateDistribution) where {Rx<:AbstractRange,Ry<:AbstractRange}
9193
k = tabulate(data, midpoints, weights)
9294
conv(k,dist)
9395
end
@@ -104,8 +106,9 @@ function kde(data::Tuple{RealVector, RealVector}, dist::BivariateDistribution;
104106
kde(data,weights,(xmid,ymid),dist)
105107
end
106108

107-
function kde(data::Tuple{RealVector, RealVector}, midpoints::Tuple{Range, Range};
108-
bandwidth=default_bandwidth(data), kernel=Normal, weights::Weights = default_weights(data))
109+
function kde(data::Tuple{RealVector, RealVector}, midpoints::Tuple{Rx, Ry};
110+
bandwidth=default_bandwidth(data), kernel=Normal,
111+
weights::Weights = default_weights(data)) where {Rx<:AbstractRange,Ry<:AbstractRange}
109112

110113
dist = kernel_dist(kernel,bandwidth)
111114
kde(data,weights,midpoints,dist)

src/univariate.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
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}
55
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)
131131
end
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)
137137
end
@@ -143,8 +143,8 @@ function kde(data::RealVector, dist::UnivariateDistribution;
143143
kde(data,weights,midpoints,dist)
144144
end
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

Comments
 (0)