Skip to content

Commit 176a6fe

Browse files
authored
Merge pull request #114 from chriselrod/nostatsbasealiases
Remove use of StatsBase aliases
2 parents 785a5c0 + ffbb170 commit 176a6fe

File tree

4 files changed

+20
-21
lines changed

4 files changed

+20
-21
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "KernelDensity"
22
uuid = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b"
33
authors = ["Simon Byrne and various contributors"]
4-
version = "0.6.5"
4+
version = "0.6.6"
55

66
[deps]
77
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"

src/KernelDensity.jl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ using StatsBase
55
using Distributions
66
using Interpolations
77

8-
import StatsBase: RealVector, RealMatrix
98
import Distributions: twoπ, pdf
109
import FFTW: rfft, irfft
1110

src/bivariate.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ function kernel_dist(d::Tuple{DataTypeOrUnionAll, DataTypeOrUnionAll}, w::Tuple{
3838
end
3939

4040
# TODO: there are probably better choices.
41-
function default_bandwidth(data::Tuple{RealVector,RealVector})
41+
function default_bandwidth(data::Tuple{AbstractVector{<:Real},AbstractVector{<:Real}})
4242
default_bandwidth(data[1]), default_bandwidth(data[2])
4343
end
4444

4545
# tabulate data for kde
46-
function tabulate(data::Tuple{RealVector, RealVector}, midpoints::Tuple{Rx, Ry},
46+
function tabulate(data::Tuple{AbstractVector{<:Real}, AbstractVector{<:Real}}, midpoints::Tuple{Rx, Ry},
4747
weights::Weights = default_weights(data)) where {Rx<:AbstractRange,Ry<:AbstractRange}
4848
xdata, ydata = data
4949
ndata = length(xdata)
@@ -103,15 +103,15 @@ end
103103

104104
const BivariateDistribution = Union{MultivariateDistribution,Tuple{UnivariateDistribution,UnivariateDistribution}}
105105

106-
default_weights(data::Tuple{RealVector, RealVector}) = UniformWeights(length(data[1]))
106+
default_weights(data::Tuple{AbstractVector{<:Real}, AbstractVector{<:Real}}) = UniformWeights(length(data[1]))
107107

108-
function kde(data::Tuple{RealVector, RealVector}, weights::Weights, midpoints::Tuple{Rx, Ry},
108+
function kde(data::Tuple{AbstractVector{<:Real}, AbstractVector{<:Real}}, weights::Weights, midpoints::Tuple{Rx, Ry},
109109
dist::BivariateDistribution) where {Rx<:AbstractRange,Ry<:AbstractRange}
110110
k = tabulate(data, midpoints, weights)
111111
conv(k,dist)
112112
end
113113

114-
function kde(data::Tuple{RealVector, RealVector}, dist::BivariateDistribution;
114+
function kde(data::Tuple{AbstractVector{<:Real}, AbstractVector{<:Real}}, dist::BivariateDistribution;
115115
boundary::Tuple{Tuple{Real,Real}, Tuple{Real,Real}} = (kde_boundary(data[1],std(dist[1])),
116116
kde_boundary(data[2],std(dist[2]))),
117117
npoints::Tuple{Int,Int}=(256,256),
@@ -123,15 +123,15 @@ function kde(data::Tuple{RealVector, RealVector}, dist::BivariateDistribution;
123123
kde(data,weights,(xmid,ymid),dist)
124124
end
125125

126-
function kde(data::Tuple{RealVector, RealVector}, midpoints::Tuple{Rx, Ry};
126+
function kde(data::Tuple{AbstractVector{<:Real}, AbstractVector{<:Real}}, midpoints::Tuple{Rx, Ry};
127127
bandwidth=default_bandwidth(data), kernel=Normal,
128128
weights::Weights = default_weights(data)) where {Rx<:AbstractRange,Ry<:AbstractRange}
129129

130130
dist = kernel_dist(kernel,bandwidth)
131131
kde(data,weights,midpoints,dist)
132132
end
133133

134-
function kde(data::Tuple{RealVector, RealVector};
134+
function kde(data::Tuple{AbstractVector{<:Real}, AbstractVector{<:Real}};
135135
bandwidth=default_bandwidth(data),
136136
kernel=Normal,
137137
boundary::Tuple{Tuple{Real,Real}, Tuple{Real,Real}} = (kde_boundary(data[1],bandwidth[1]),
@@ -147,7 +147,7 @@ function kde(data::Tuple{RealVector, RealVector};
147147
end
148148

149149
# matrix data
150-
function kde(data::RealMatrix,args...;kwargs...)
150+
function kde(data::AbstractMatrix{<:Real},args...;kwargs...)
151151
size(data,2) == 2 || error("Can only construct KDE from matrices with 2 columns.")
152152
kde((data[:,1],data[:,2]),args...;kwargs...)
153153
end

src/univariate.jl

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ kernel_dist(::Type{D},w::Real) where {D} = (s = w/std(D(0.0,1.0)); D(0.0,s))
2929

3030

3131
# Silverman's rule of thumb for KDE bandwidth selection
32-
function default_bandwidth(data::RealVector, alpha::Float64 = 0.9)
32+
function default_bandwidth(data::AbstractVector{<:Real}, alpha::Float64 = 0.9)
3333
# Determine length of data
3434
ndata = length(data)
3535
ndata <= 1 && return alpha
@@ -53,7 +53,7 @@ function default_bandwidth(data::RealVector, alpha::Float64 = 0.9)
5353
return alpha * width * ndata^(-0.2)
5454
end
5555

56-
function default_weights(data::RealVector)
56+
function default_weights(data::AbstractVector{<:Real})
5757
UniformWeights(length(data))
5858
end
5959

@@ -72,7 +72,7 @@ end
7272

7373
# default kde range
7474
# Should extend enough beyond the data range to avoid cyclic correlation from the FFT
75-
function kde_boundary(data::RealVector, bandwidth::Real)
75+
function kde_boundary(data::AbstractVector{<:Real}, bandwidth::Real)
7676
lo, hi = extrema(data)
7777
lo - 4.0*bandwidth, hi + 4.0*bandwidth
7878
end
@@ -92,11 +92,11 @@ UniformWeights(n) = UniformWeights{n}()
9292
Base.sum(x::UniformWeights) = 1.
9393
Base.getindex(x::UniformWeights{N}, i) where {N} = 1/N
9494

95-
const Weights = Union{UniformWeights, RealVector, StatsBase.Weights}
95+
const Weights = Union{UniformWeights, AbstractVector{<:Real}, StatsBase.Weights}
9696

9797

9898
# tabulate data for kde
99-
function tabulate(data::RealVector, midpoints::R, weights::Weights=default_weights(data)) where R<:AbstractRange
99+
function tabulate(data::AbstractVector{<:Real}, midpoints::R, weights::Weights=default_weights(data)) where R<:AbstractRange
100100
npoints = length(midpoints)
101101
s = step(midpoints)
102102

@@ -147,26 +147,26 @@ function conv(k::UnivariateKDE, dist::UnivariateDistribution)
147147
end
148148

149149
# main kde interface methods
150-
function kde(data::RealVector, weights::Weights, midpoints::R, dist::UnivariateDistribution) where R<:AbstractRange
150+
function kde(data::AbstractVector{<:Real}, weights::Weights, midpoints::R, dist::UnivariateDistribution) where R<:AbstractRange
151151
k = tabulate(data, midpoints, weights)
152152
conv(k,dist)
153153
end
154154

155-
function kde(data::RealVector, dist::UnivariateDistribution;
155+
function kde(data::AbstractVector{<:Real}, dist::UnivariateDistribution;
156156
boundary::Tuple{Real,Real}=kde_boundary(data,std(dist)), npoints::Int=2048, weights=default_weights(data))
157157

158158
midpoints = kde_range(boundary,npoints)
159159
kde(data,weights,midpoints,dist)
160160
end
161161

162-
function kde(data::RealVector, midpoints::R;
162+
function kde(data::AbstractVector{<:Real}, midpoints::R;
163163
bandwidth=default_bandwidth(data), kernel=Normal, weights=default_weights(data)) where R<:AbstractRange
164164
bandwidth > 0.0 || error("Bandwidth must be positive")
165165
dist = kernel_dist(kernel,bandwidth)
166166
kde(data,weights,midpoints,dist)
167167
end
168168

169-
function kde(data::RealVector; bandwidth=default_bandwidth(data), kernel=Normal,
169+
function kde(data::AbstractVector{<:Real}; bandwidth=default_bandwidth(data), kernel=Normal,
170170
npoints::Int=2048, boundary::Tuple{Real,Real}=kde_boundary(data,bandwidth), weights=default_weights(data))
171171
bandwidth > 0.0 || error("Bandwidth must be positive")
172172
dist = kernel_dist(kernel,bandwidth)
@@ -248,7 +248,7 @@ end
248248
# B. W. Silverman (1986)
249249
# sections 3.4.3 (pp. 48-52) and 3.5 (pp. 61-66)
250250

251-
function kde_lscv(data::RealVector, midpoints::R;
251+
function kde_lscv(data::AbstractVector{<:Real}, midpoints::R;
252252
kernel=Normal,
253253
bandwidth_range::Tuple{Real,Real}=(h=default_bandwidth(data); (0.25*h,1.5*h)),
254254
weights=default_weights(data)) where R<:AbstractRange
@@ -289,7 +289,7 @@ function kde_lscv(data::RealVector, midpoints::R;
289289
UnivariateKDE(k.x, dens)
290290
end
291291

292-
function kde_lscv(data::RealVector;
292+
function kde_lscv(data::AbstractVector{<:Real};
293293
boundary::Tuple{Real,Real}=kde_boundary(data,default_bandwidth(data)),
294294
npoints::Int=2048,
295295
kernel=Normal,

0 commit comments

Comments
 (0)