3
3
# min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1
4
4
5
5
fixedLassoInf <- function (x , y , beta , lambda , family = c(" gaussian" ," binomial" ," cox" ),intercept = TRUE , add.targets = NULL , status = NULL ,
6
- sigma = NULL , alpha = 0.1 ,
7
- type = c(" partial" ," full" ), tol.beta = 1e-5 , tol.kkt = 0.1 ,
8
- gridrange = c(- 100 ,100 ), bits = NULL , verbose = FALSE ) {
6
+ sigma = NULL , alpha = 0.1 ,
7
+ type = c(" partial" ," full" ), tol.beta = 1e-5 , tol.kkt = 0.1 ,
8
+ gridrange = c(- 100 ,100 ), bits = NULL , verbose = FALSE , linesearch.try = 5 ) {
9
9
10
10
family = match.arg(family )
11
11
this.call = match.call()
@@ -158,7 +158,7 @@ sigma=NULL, alpha=0.1,
158
158
159
159
# Approximate inverse covariance matrix for when (n < p) from lasso_Inference.R
160
160
161
- htheta <- InverseLinfty(hsigma , n , length(S ), verbose = FALSE )
161
+ htheta <- InverseLinfty(hsigma , n , length(S ), verbose = FALSE , max.try = linesearch.try )
162
162
# htheta <- InverseLinfty(hsigma, n, verbose=FALSE)
163
163
164
164
FS = rbind(diag(length(S )),matrix (0 ,pp - length(S ),length(S )))
@@ -268,7 +268,7 @@ fixedLasso.poly=
268
268
# ## Functions borrowed and slightly modified from lasso_inference.R
269
269
270
270
# # Approximates inverse covariance matrix theta
271
- InverseLinfty <- function (sigma , n , e , resol = 1.2 , mu = NULL , maxiter = 50 , threshold = 1e-2 , verbose = TRUE ) {
271
+ InverseLinfty <- function (sigma , n , e , resol = 1.2 , mu = NULL , maxiter = 50 , threshold = 1e-2 , verbose = TRUE , max.try = 10 ) {
272
272
isgiven <- 1 ;
273
273
if (is.null(mu )){
274
274
isgiven <- 0 ;
@@ -293,13 +293,12 @@ InverseLinfty <- function(sigma, n, e, resol=1.2, mu=NULL, maxiter=50, threshold
293
293
294
294
output = NULL
295
295
296
- while ((mu.stop != 1 )&& (try.no < 10 ) ){
296
+ while ((mu.stop != 1 ) && (try.no < max.try ) ){
297
297
last.beta <- beta
298
- # print(c("#######################trying ", try.no))
299
298
output <- InverseLinftyOneRow(sigma , i , mu , maxiter = maxiter , soln_result = output ) # uses a warm start
300
299
beta <- output $ soln
301
300
iter <- output $ iter
302
- if (isgiven == 1 ){
301
+ if (isgiven == 1 ) {
303
302
mu.stop <- 1
304
303
}
305
304
else {
0 commit comments