6
6
randomizedLasso = function (X ,
7
7
y ,
8
8
lam ,
9
- family = " gaussian" ,
9
+ family = c( " gaussian" , " binomial " ) ,
10
10
noise_scale = NULL ,
11
11
ridge_term = NULL ,
12
12
noise_type = c(' gaussian' , ' laplace' ),
@@ -18,6 +18,8 @@ randomizedLasso = function(X,
18
18
kkt_stop = TRUE ,
19
19
parameter_stop = TRUE )
20
20
{
21
+ family = match.arg(family )
22
+
21
23
n = nrow(X ); p = ncol(X )
22
24
23
25
mean_diag = mean(apply(X ^ 2 , 2 , sum ))
@@ -65,8 +67,8 @@ randomizedLasso = function(X,
65
67
nactive = as.integer(0 )
66
68
67
69
result = solve_QP_wide(X , # design matrix
68
- lam / n , # vector of Lagrange multipliers
69
- ridge_term / n , # ridge_term
70
+ lam / n , # vector of Lagrange multipliers
71
+ ridge_term / n , # ridge_term
70
72
max_iter ,
71
73
soln ,
72
74
linear_func ,
@@ -177,7 +179,7 @@ randomizedLasso = function(X,
177
179
observed_raw = - t(X ) %*% y
178
180
if (family == " binomial" ){
179
181
beta_E = result $ soln [active_set ]
180
- observed_raw = observed_raw + t(X )%*% pi_fn(beta_E )- L_E %*% beta_E
182
+ observed_raw = observed_raw + t(X )%*% pi_fn(beta_E ) - L_E %*% beta_E
181
183
}
182
184
inactive_lam = lam [inactive_set ]
183
185
inactive_start = sum(unpenalized ) + sum(active )
@@ -213,11 +215,11 @@ randomizedLasso = function(X,
213
215
optimization_transform = opt_transform ,
214
216
internal_transform = internal_transform ,
215
217
log_optimization_density = log_optimization_density ,
216
- observed_opt_state = observed_opt_state ,
218
+ observed_opt_state = observed_opt_state ,
217
219
observed_raw = observed_raw ,
218
- noise_scale = noise_scale ,
219
- soln = result $ soln ,
220
- perturb = perturb_
220
+ noise_scale = noise_scale ,
221
+ soln = result $ soln ,
222
+ perturb = perturb_
221
223
))
222
224
223
225
}
@@ -352,8 +354,7 @@ conditional_density = function(noise_scale, lasso_soln) {
352
354
randomizedLassoInf = function (X ,
353
355
y ,
354
356
lam ,
355
- family = c(" gaussian" , " logistic" ),
356
- sampler = c(" norejection" , " adaptMCMC" ),
357
+ family = c(" gaussian" , " binomial" ),
357
358
sigma = NULL ,
358
359
noise_scale = NULL ,
359
360
ridge_term = NULL ,
@@ -436,15 +437,13 @@ randomizedLassoInf = function(X,
436
437
X_E = X [, active_set ]
437
438
X_minusE = X [, inactive_set ]
438
439
439
-
440
-
441
- if (family == " gaussian" ){
440
+ if (family == " gaussian" ) {
442
441
lm_y = lm(y ~ X_E - 1 )
443
442
sigma_resid = sqrt(sum(resid(lm_y )^ 2 ) / lm_y $ df.resid )
444
443
observed_target = lm_y $ coefficients
445
444
W_E = diag(rep(1 ,n ))
446
445
observed_internal = c(observed_target , t(X_minusE ) %*% (y - X_E %*% observed_target ))
447
- } else if (family == " binomial" ){
446
+ } else if (family == " binomial" ) {
448
447
glm_y = glm(y ~ X_E - 1 )
449
448
sigma_resid = sqrt(sum(resid(glm_y )^ 2 ) / glm_y $ df.resid )
450
449
observed_target = as.matrix(glm_y $ coefficients )
0 commit comments