@@ -35,7 +35,7 @@ solve_restricted_problem = function(X, y, var, lambda_glmnet, penalty_factor, lo
35
35
return (restricted_soln )
36
36
}
37
37
38
- solve_problem_Q = function (Q_sq ,
38
+ solve_problem_Q = function (Xdesign ,
39
39
Qbeta_bar ,
40
40
lambda_glmnet ,
41
41
penalty_factor ,
@@ -46,25 +46,24 @@ solve_problem_Q = function(Q_sq,
46
46
kkt_stop = TRUE ,
47
47
objective_stop = TRUE ,
48
48
parameter_stop = TRUE ){
49
- n = nrow(Q_sq )
50
- p = ncol(Q_sq )
49
+ n = nrow(Xdesign )
50
+ p = ncol(Xdesign )
51
51
52
- Xinfo = Q_sq
53
52
linear_func = - as.numeric(Qbeta_bar )
54
53
soln = as.numeric(rep(0 . , p ))
55
54
ever_active = as.integer(rep(0 , p ))
56
55
ever_active [1 ] = 1
57
56
ever_active = as.integer(ever_active )
58
57
nactive = as.integer(1 )
59
- Xsoln = as.numeric(rep(0 , nrow( Xinfo ) ))
58
+ Xsoln = as.numeric(rep(0 , n ))
60
59
gradient = 1 . * linear_func
61
- max_active = as.integer(p )
60
+ max_active = as.integer(p )
62
61
63
62
linear_func = linear_func / n
64
63
gradient = gradient / n
65
64
66
- # solve_QP_wide solves n*slinear_func^T\beta+\beta^T Xinfo \beta+\sum\lambda_i|\beta_i|
67
- result = solve_QP_wide(Xinfo , # this is a design matrix
65
+ # solve_QP_wide solves n*slinear_func^T\beta+1/2(X \beta) ^T (X \beta) +\sum\lambda_i|\beta_i|
66
+ result = solve_QP_wide(Xdesign , # this is a design matrix
68
67
as.numeric(penalty_factor * lambda_glmnet ), # vector of Lagrange multipliers
69
68
0 , # ridge_term
70
69
max_iter ,
@@ -95,9 +94,9 @@ truncation_set = function(X,
95
94
y ,
96
95
Qbeta_bar ,
97
96
QE ,
98
- Q_sq ,
97
+ Xdesign ,
99
98
target_stat ,
100
- target_cov ,
99
+ QiE ,
101
100
var ,
102
101
active_set ,
103
102
lambda_glmnet ,
@@ -108,7 +107,7 @@ truncation_set = function(X,
108
107
if (solver == " QP" ){
109
108
penalty_factor_rest = rep(penalty_factor )
110
109
penalty_factor_rest [var ] = 10 ^ 10
111
- restricted_soln = solve_problem_Q(Q_sq ,
110
+ restricted_soln = solve_problem_Q(Xdesign ,
112
111
Qbeta_bar ,
113
112
lambda_glmnet ,
114
113
penalty_factor = penalty_factor_rest )
@@ -124,7 +123,7 @@ truncation_set = function(X,
124
123
n = nrow(X )
125
124
idx = match(var , active_set ) # active_set[idx]=var
126
125
nuisance_res = (Qbeta_bar [var ] - # nuisance stat restricted to active vars
127
- solve(target_cov ) %*% target_stat )/ n
126
+ solve(QiE ) %*% target_stat )/ n
128
127
center = nuisance_res - (QE [idx ,] %*% restricted_soln / n )
129
128
radius = penalty_factor [var ]* lambda_glmnet
130
129
return (list (center = center * n , radius = radius * n ))
@@ -158,10 +157,13 @@ tnorm.union.surv = function(z,
158
157
159
158
pval = matrix (NA , nrow = dim(intervals )[1 ], ncol = length(mean ))
160
159
160
+ print(' truncation intervals' )
161
+ print(intervals )
162
+
161
163
for (jj in 1 : dim(intervals )[1 ]){
162
164
if (z < = intervals [jj ,1 ]){
163
165
pval [jj ,] = 1
164
- }else if (z > = intervals [jj ,2 ]){
166
+ } else if (z > = intervals [jj ,2 ]){
165
167
pval [jj ,] = 0
166
168
}else {
167
169
pval [jj ,] = tnorm.surv(z , mean , sd , intervals [jj ,1 ], intervals [jj ,2 ], bits = bits )
@@ -321,7 +323,7 @@ setup_Qbeta = function(X,
321
323
Qi = solve(Q ) # # (X^TWX)^{-1}
322
324
QiE = Qi [active_set ,][, active_set ]
323
325
324
- Q_sq = W_root %*% X
326
+ Xdesign = W_root %*% X
325
327
beta_bar = soln - Qi %*% gradient(X , y , soln , loss = loss )
326
328
Qbeta_bar = Q %*% soln - gradient(X , y , soln , loss = loss )
327
329
beta_barE = beta_bar [active_set ]
@@ -342,12 +344,12 @@ setup_Qbeta = function(X,
342
344
M2 = M_active %*% t(W_root %*% X )
343
345
QiE = M2 %*% t(M2 ) # size |E|\times |E|
344
346
QE = hessian_active(X , soln , loss , active_set )
345
- Q_sq = W_root %*% X
347
+ Xdesign = W_root %*% X
346
348
Qbeta_bar = t(QE )%*% soln [active_set ] - G
347
349
}
348
350
349
351
return (list (QE = QE ,
350
- Q_sq = Q_sq ,
352
+ Xdesign = Xdesign ,
351
353
Qbeta_bar = Qbeta_bar ,
352
354
QiE = QiE ,
353
355
beta_barE = beta_barE ,
@@ -395,7 +397,7 @@ ROSI = function(X,
395
397
use_debiased = use_debiased )
396
398
397
399
QE = as.matrix(setup_params $ QE )
398
- Q_sq = setup_params $ Q_sq
400
+ Xdesign = setup_params $ Xdesign
399
401
QiE = as.matrix(setup_params $ QiE )
400
402
beta_barE = setup_params $ beta_barE
401
403
Qbeta_bar = setup_params $ Qbeta_bar
@@ -426,8 +428,8 @@ ROSI = function(X,
426
428
y = y ,
427
429
Qbeta_bar = Qbeta_bar ,
428
430
QE = QE ,
429
- Q_sq = Q_sq ,
430
- target_cov = target_cov , # this Hessian, i.e. without dispersion
431
+ Xdesign = Xdesign ,
432
+ QiE = QiE [ i , i , drop = FALSE ], # this is part of inverse Hessian, i.e. without dispersion
431
433
target_stat = target_stat ,
432
434
var = active_set [i ],
433
435
active_set = active_set ,
@@ -484,6 +486,7 @@ ROSI = function(X,
484
486
pvalues = c(pvalues , NA )
485
487
sel_intervals = rbind(sel_intervals , c(NA , NA ))
486
488
warning(" observation not within the truncation limits!" )
489
+ print(" observation not within the truncation limits!" )
487
490
}
488
491
}
489
492
@@ -528,10 +531,8 @@ print.ROSI <- function(x, ...) {
528
531
529
532
# Some little used functions -- not exported
530
533
531
-
532
534
compute_coverage = function (ci , beta ){
533
- print(ci )
534
- print(beta )
535
+
535
536
nactive = length(beta )
536
537
coverage_vector = rep(0 , nactive )
537
538
for (i in 1 : nactive ){
@@ -554,7 +555,6 @@ loss_label = function(family) {
554
555
}
555
556
}
556
557
557
-
558
558
family_label = function (loss ){
559
559
if (loss == " ls" ){
560
560
return (" gaussian" )
0 commit comments