Skip to content

Commit 07b6bb7

Browse files
author
Jelena Markovic
committed
coverages
1 parent a1ad181 commit 07b6bb7

File tree

3 files changed

+71
-21
lines changed

3 files changed

+71
-21
lines changed

selectiveInference/R/RcppExports.R

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Generated by using Rcpp::compileAttributes() -> do not edit by hand
2+
# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393
3+
4+
solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) {
5+
.Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop)
6+
}
7+
8+
solve_QP_wide <- function(X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) {
9+
.Call('selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop)
10+
}
11+
12+
update1_ <- function(Q2, w, m, k) {
13+
.Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k)
14+
}
15+
16+
downdate1_ <- function(Q1, R, j0, m, n) {
17+
.Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n)
18+
}
19+
20+
log_density_gaussian_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) {
21+
.Call('selectiveInference_log_density_gaussian_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset)
22+
}
23+
24+
log_density_gaussian_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) {
25+
.Call('selectiveInference_log_density_gaussian_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset)
26+
}
27+
28+
log_density_laplace_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) {
29+
.Call('selectiveInference_log_density_laplace_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset)
30+
}
31+
32+
log_density_laplace_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) {
33+
.Call('selectiveInference_log_density_laplace_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset)
34+
}
35+

selectiveInference/R/funs.randomized.R

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ conditional_density = function(noise_scale, lasso_soln) {
258258
return(lasso_soln)
259259
}
260260

261-
randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term){
261+
randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, level=0.9){
262262

263263
n = nrow(X)
264264
p = ncol(X)
@@ -283,7 +283,7 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term){
283283
opt_transform = lasso_soln$optimization_transform
284284
observed_raw = lasso_soln$observed_raw
285285

286-
pvalus = rep(0, nactive)
286+
pvalues = rep(0, nactive)
287287
ci = matrix(0, nactive, 2)
288288
for (i in 1:nactive){
289289
target_transform = selectiveInference:::linear_decomposition(observed_target[i],
@@ -300,20 +300,29 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term){
300300
opt_transform,
301301
target_transform,
302302
observed_raw)
303-
return(mean((target_sample<observed_target[i])*weights)/mean(weights))
303+
return(mean((target_sample+candidate<observed_target[i])*weights)/mean(weights))
304304
}
305-
level = 0.9
306305
rootU = function(candidate){
307306
return (pivot(observed_target[i]+candidate)-(1-level)/2)
308307
}
309308
rootL = function(candidate){
310309
return (pivot(observed_target[i]+candidate)-(1+level)/2)
311310
}
312311
pvalues[i] = pivot(0)
313-
line_min = -10*sd(target_sample)
314-
line_max = 10*sd(target_sample)
315-
ci[i,1] = uniroot(rootU, c(line_min, line_max))$root+observed_target[i]
316-
ci[i,2] = uniroot(rootL, c(line_min, line_max))$root+observed_target[i]
312+
line_min = -20*sd(target_sample)
313+
line_max = 20*sd(target_sample)
314+
if (rootU(line_min)*rootU(line_max)<0){
315+
ci[i,2] = uniroot(rootU, c(line_min, line_max))$root+observed_target[i]
316+
} else{
317+
print("non inv u")
318+
ci[i,2]=line_max
319+
}
320+
if (rootL(line_min)*rootL(line_max)<0){
321+
ci[i,1] = uniroot(rootL, c(line_min, line_max))$root+observed_target[i]
322+
} else{
323+
print("non inv u")
324+
ci[i,1] = line_min
325+
}
317326
}
318-
return(list(pvalues=pvalues, ci=ci))
327+
return(list(active_set=active_set, pvalues=pvalues, ci=ci))
319328
}

tests/randomized/test_instances.R

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,28 +25,34 @@ gaussian_instance = function(n, p, s, sigma=1, rho=0, signal=6, X=NA,
2525
}
2626

2727

28-
collect_results = function(n,p,s, nsim=10){
29-
rho=0.3
28+
collect_results = function(n,p,s, nsim=10, level=0.9){
29+
rho=0.
3030
lam=1.
3131
sigma=1
32-
sample_pivots = c()
32+
sample_pvalues = c()
33+
sample_coverage = c()
3334
for (i in 1:nsim){
3435
data = gaussian_instance(n=n,p=p,s=s, rho=rho, sigma=sigma)
3536
X=data$X
3637
y=data$y
38+
beta=data$beta
3739
ridge_term=sd(y)/sqrt(n)
3840
noise_scale = sd(y)/2
39-
#X = matrix(rnorm(n * p), n, p)
40-
#y = rnorm(n)
41-
#lam = 20 / sqrt(n)
42-
#noise_scale = 0.01 * sqrt(n)
43-
#ridge_term = .1 / sqrt(n)
44-
result = selectiveInference:::randomized_inference(X,y,sigma,lam,noise_scale,ridge_term)
45-
sample_pivots = c(sample_pivots, result$pivots)
41+
result = selectiveInference:::randomized_inference(X,y,sigma,lam,noise_scale,ridge_term, level)
42+
true_beta = beta[result$active_set]
43+
coverage = rep(0, nrow(result$ci))
44+
for (i in 1:nrow(result$ci)){
45+
if (result$ci[i,1]<true_beta[i] & result$ci[i,2]>true_beta[i]){
46+
coverage[i]=1
47+
}
48+
print(paste("ci", toString(result$ci[i,])))
49+
}
50+
sample_pvalues = c(sample_pvalues, result$pvalues)
51+
sample_coverage = c(sample_coverage, coverage)
4652
}
47-
53+
print(paste("coverage", mean(sample_coverage)))
4854
jpeg('pivots.jpg')
49-
plot(ecdf(sample_pivots), xlim=c(0,1), main="Empirical CDF of null p-values", xlab="p-values", ylab="ecdf")
55+
plot(ecdf(sample_pvalues), xlim=c(0,1), main="Empirical CDF of null p-values", xlab="p-values", ylab="ecdf")
5056
abline(0, 1, lty=2)
5157
dev.off()
5258
}

0 commit comments

Comments
 (0)