Skip to content

Commit af3b818

Browse files
fixing empty inactive set indexing problem
1 parent 69bf473 commit af3b818

File tree

2 files changed

+27
-19
lines changed

2 files changed

+27
-19
lines changed

selectiveInference/R/funs.randomized.R

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,11 @@ randomizedLasso = function(X,
7878
nactive,
7979
kkt_tol,
8080
objective_tol,
81-
parameter_tol,
81+
parameter_tol,
8282
p,
83-
objective_stop, # objective_stop
84-
kkt_stop, # kkt_stop
85-
parameter_stop) # param_stop
83+
objective_stop, # objective_stop
84+
kkt_stop, # kkt_stop
85+
parameter_stop) # param_stop
8686

8787
sign_soln = sign(result$soln)
8888

@@ -100,7 +100,7 @@ randomizedLasso = function(X,
100100
observed_unpen = result$soln[unpenalized]
101101
observed_subgrad = -n*result$gradient[inactive]
102102

103-
if (sum(abs(observed_subgrad)>lam*(1.001)) > 0){
103+
if (sum(abs(observed_subgrad)>lam[inactive]*(1.001)) > 0){
104104
stop("subgradient eq not satisfied")
105105
}
106106

@@ -144,14 +144,17 @@ randomizedLasso = function(X,
144144
coef_term = coef_term %*% diag(signs_) # scaligns are non-negative
145145
}
146146

147-
subgrad_term = matrix(0, p, sum(inactive)) # for subgrad
148-
for (i in 1:sum(inactive)) {
149-
subgrad_term[inactive_set[i], i] = 1
150-
}
151-
152-
linear_term = cbind(coef_term,
153-
subgrad_term)
154-
147+
if (sum(inactive) > 0) {
148+
subgrad_term = matrix(0, p, sum(inactive)) # for subgrad
149+
for (i in 1:sum(inactive)) {
150+
subgrad_term[inactive_set[i], i] = 1
151+
}
152+
153+
linear_term = cbind(coef_term,
154+
subgrad_term)
155+
} else {
156+
linear_term = coef_term
157+
}
155158
offset_term = rep(0, p)
156159
offset_term[active] = lam[active] * sign_soln[active]
157160

@@ -167,9 +170,14 @@ randomizedLasso = function(X,
167170

168171
active_term = -L_E # for \bar{\beta}_E
169172

170-
inactive_term = -subgrad_term
171-
linear_term = cbind(active_term,
172-
inactive_term)
173+
if (sum(inactive) > 0) {
174+
inactive_term = -subgrad_term
175+
linear_term = cbind(active_term,
176+
inactive_term)
177+
} else {
178+
linear_term = active_term
179+
}
180+
173181
offset_term = rep(0, p)
174182
internal_transform = list(linear_term = linear_term,
175183
offset_term = offset_term)

tests/randomized/test_instances.R

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ collect_results = function(n,p,s, nsim=100, level=0.9,
8585
result = selectiveInference:::randomizedLassoInf(X, y,
8686
lam,
8787
family = family,
88-
sampler = "A",
88+
sampler = "adaptMCMC",
8989
sigma=sigma,
9090
level=level,
9191
burnin=1000,
@@ -114,8 +114,8 @@ collect_results = function(n,p,s, nsim=100, level=0.9,
114114
}
115115
}
116116

117-
set.seed(1)
118-
collect_results(n=100, p=20, s=0, lam=0.8)
117+
#set.seed(1)
118+
collect_results(n=500, p=200, s=0, lam=0.8)
119119
#test_randomized_lasso()
120120
#test_KKT()
121121

0 commit comments

Comments
 (0)