@@ -95,6 +95,7 @@ randomizedLASSO = function(X,
95
95
L_E = t(X ) %*% X [,E ]
96
96
97
97
coef_term = L_E
98
+ print(active_set )
98
99
coef_term = coef_term %*% diag(c(rep(1 , sum(unpenalized )), sign_soln [active ])) # coefficients are non-negative
99
100
coef_term [active ,] = coef_term [active ,] + ridge_term * diag(rep(1 , sum(active ))) # ridge term
100
101
@@ -274,8 +275,9 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, level
274
275
275
276
dim = length(lasso_soln $ observed_opt_state )
276
277
print(paste(" chain dim" , dim ))
277
- S = selectiveInference ::: sample_opt_variables(lasso_soln , jump_scale = rep(1 / sqrt(n ), dim ), nsample = 10000 )
278
- opt_samples = S $ samples [2001 : 10000 ,]
278
+ nsample = 4000
279
+ S = selectiveInference ::: sample_opt_variables(lasso_soln , jump_scale = rep(1 / sqrt(n ), dim ), nsample = nsample )
280
+ opt_samples = S $ samples [2001 : nsample ,]
279
281
print(paste(" dim opt samples" , toString(dim(opt_samples ))))
280
282
281
283
X_E = X [, active_set ]
@@ -290,6 +292,7 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, level
290
292
291
293
pvalues = rep(0 , nactive )
292
294
ci = matrix (0 , nactive , 2 )
295
+
293
296
for (i in 1 : nactive ){
294
297
target_transform = selectiveInference ::: linear_decomposition(observed_target [i ],
295
298
observed_internal ,
@@ -303,7 +306,6 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, level
303
306
temp = solve(t(reduced_target_opt_linear )) %*% t(target_opt_linear )
304
307
target_offset = temp %*% target_transform $ offset_term
305
308
target_transform = list (linear_term = as.matrix(target_linear ), offset_term = target_offset )
306
- print(dim(reduced_target_opt_linear ))
307
309
opt_linear = reduced_target_opt_linear [,2 : ncol(reduced_target_opt_linear )]
308
310
opt_offset = temp %*% opt_transform $ offset_term
309
311
opt_transform_reduced = list (linear_term = as.matrix(opt_linear ), offset_term = opt_offset )
@@ -324,11 +326,13 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, level
324
326
return (pivot(observed_target [i ]+ candidate )- (1 - level )/ 2 )
325
327
}
326
328
rootL = function (candidate ){
327
- return (pivot(observed_target [i ]+ candidate )- (1 + level )/ 2 )
329
+ return (pivot(observed_target [i ]+ candidate )- (1 + level )/ 2 )
328
330
}
329
331
pvalues [i ] = pivot(0 )
330
- line_min = - 20 * sd(target_sample )
331
- line_max = 20 * sd(target_sample )
332
+ line_min = - 10 * sd(target_sample )
333
+ line_max = 10 * sd(target_sample )
334
+ print(rootU(line_min ))
335
+ print(rootU(line_max ))
332
336
if (rootU(line_min )* rootU(line_max )< 0 ){
333
337
ci [i ,2 ] = uniroot(rootU , c(line_min , line_max ))$ root + observed_target [i ]
334
338
} else {
0 commit comments