Skip to content

Commit 0ffe4f6

Browse files
committed
Use clamp for better bounding of estimates
1 parent 0e032e6 commit 0ffe4f6

File tree

2 files changed

+14
-13
lines changed

2 files changed

+14
-13
lines changed

src/pi0-estimators.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Storey() = Storey(0.1)
3838
function estimate_pi0(pValues::PValues{T}, pi0estimator::Storey) where T<:AbstractFloat
3939
lambda = pi0estimator.λ
4040
pi0 = (sum(pValues .>= lambda) / length(pValues)) / (1 - lambda)
41-
pi0 = min(pi0, 1)
41+
pi0 = clamp(pi0, 0, 1)
4242
return pi0
4343
end
4444

@@ -69,7 +69,7 @@ function estimate_pi0(pValues::PValues{T}, pi0estimator::StoreyBootstrap) where
6969
pi0 = w ./ n ./ (1 .- lambdas)
7070
min_pi0 = quantile(pi0, q)
7171
mse = (w ./ (n.^2 .* (1 .- lambdas).^2 )) .* (1 .- w/n) + (pi0 .- min_pi0).^2
72-
pi0 = min(pi0[indmin(mse)], 1)
72+
pi0 = clamp(pi0[indmin(mse)], 0, 1)
7373
return pi0
7474
end
7575

@@ -194,7 +194,7 @@ function estimate_pi0(pValues::PValues{T}, pi0estimator::RightBoundary) where T<
194194
pi0_decrease = diff(pi0_estimates) .>= 0
195195
pi0_decrease[end] = true
196196
pi0 = pi0_estimates[findfirst(pi0_decrease, true) + 1]
197-
pi0 = min(pi0, 1)
197+
pi0 = clamp(pi0, 0, 1)
198198
return pi0
199199
end
200200

src/pval-adjustment.jl

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ adjust(pValues::PValues, method::Bonferroni) = adjust(pValues, length(pValues),
2020
function adjust(pValues::PValues, n::Integer, method::Bonferroni)
2121
k = length(pValues)
2222
check_number_tests(k, n)
23-
return min.(pValues * n, 1)
23+
pAdjusted = clamp.(pValues * n, 0, 1)
24+
return pAdjusted
2425
end
2526

2627

@@ -41,7 +42,7 @@ function adjust(pValues::PValues, n::Integer, method::BenjaminiHochberg)
4142
pAdjusted = pValues[sortedOrder]
4243
pAdjusted .*= n ./ (1:k)
4344
stepup!(pAdjusted)
44-
pAdjusted = min.(pAdjusted[originalOrder], 1)
45+
pAdjusted = clamp.(pAdjusted[originalOrder], 0, 1)
4546
return pAdjusted
4647
end
4748

@@ -83,7 +84,7 @@ function adjust(pValues::PValues, n::Integer, method::BenjaminiYekutieli)
8384
pAdjusted = pValues[sortedOrder]
8485
pAdjusted .*= harmonic_number(n) .* n ./ (1:k)
8586
stepup!(pAdjusted)
86-
pAdjusted = min.(pAdjusted[originalOrder], 1)
87+
pAdjusted = clamp.(pAdjusted[originalOrder], 0, 1)
8788
return pAdjusted
8889
end
8990

@@ -108,7 +109,7 @@ function adjust(pValues::PValues, n::Integer, method::BenjaminiLiu)
108109
s = n .- (1:k) .+ 1
109110
pAdjusted = (1 .- (1 .- pAdjusted) .^ s) .* s ./ n
110111
stepdown!(pAdjusted)
111-
pAdjusted = min.(pAdjusted[originalOrder], 1)
112+
pAdjusted = clamp.(pAdjusted[originalOrder], 0, 1)
112113
return pAdjusted
113114
end
114115

@@ -130,7 +131,7 @@ function adjust(pValues::PValues, n::Integer, method::Hochberg)
130131
pAdjusted = pValues[sortedOrder]
131132
pAdjusted .*= (n .- (1:k) .+ 1)
132133
stepup!(pAdjusted)
133-
pAdjusted = min.(pAdjusted[originalOrder], 1)
134+
pAdjusted = clamp.(pAdjusted[originalOrder], 0, 1)
134135
return pAdjusted
135136
end
136137

@@ -152,7 +153,7 @@ function adjust(pValues::PValues, n::Integer, method::Holm)
152153
pAdjusted = pValues[sortedOrder]
153154
pAdjusted .*= (n .- (1:k) .+ 1)
154155
stepdown!(pAdjusted)
155-
pAdjusted = min.(pAdjusted[originalOrder], 1)
156+
pAdjusted = clamp.(pAdjusted[originalOrder], 0, 1)
156157
return pAdjusted
157158
end
158159

@@ -197,7 +198,7 @@ adjust(pValues::PValues, method::Sidak) = adjust(pValues, length(pValues), metho
197198

198199
function adjust(pValues::PValues, n::Integer, method::Sidak)
199200
check_number_tests(length(pValues), n)
200-
pAdjusted = min.(1 .- (1 .- pValues).^n, 1)
201+
pAdjusted = clamp.(1 .- (1 .- pValues).^n, 0, 1)
201202
return pAdjusted
202203
end
203204

@@ -216,7 +217,7 @@ function adjust(pValues::PValues, n::Integer, method::ForwardStop)
216217
logsums = -cumsum(log.(1 .- pValues[sortedOrder]))
217218
logsums ./= (1:k)
218219
stepup!(logsums)
219-
pAdjusted = max.(min.(logsums[originalOrder], 1), 0)
220+
pAdjusted = clamp.(logsums[originalOrder], 0, 1)
220221
return pAdjusted
221222
end
222223

@@ -258,7 +259,7 @@ function adjust(pValues::PValues, method::BarberCandes)
258259
end
259260

260261
stepup!(estimated_fdrs)
261-
pAdjusted = min.(estimated_fdrs[original_order], 1)
262+
pAdjusted = clamp.(estimated_fdrs[original_order], 0, 1)
262263
return pAdjusted
263264
end
264265

@@ -276,7 +277,7 @@ function barber_candes_brute_force(pValues::AbstractVector{T}) where T<:Abstract
276277
end
277278
end
278279
stepup!(estimated_fdrs)
279-
pAdjusted = min.(estimated_fdrs[original_order], 1)
280+
pAdjusted = clamp.(estimated_fdrs[original_order], 0, 1)
280281
return pAdjusted
281282
end
282283

0 commit comments

Comments
 (0)