@@ -14,34 +14,57 @@ set.seed(43)
14
14
kkt_tol = 1.e-12
15
15
objective_tol = 1.e-16
16
16
maxiter = 500
17
- soln_R = selectiveInference ::: solve_QP(t(X ) %*% X / n , lam , maxiter , soln_R , - t(X ) %*% Y / n , grad , ever_active , nactive , kkt_tol , objective_tol , p )
18
- print(' active' )
19
- print(nactive )
20
- print(ever_active )
21
- print(soln_R $ ever_active )
22
- soln_R = soln_R $ soln
23
- soln_R_old = soln_R
24
- print(soln_R )
25
- Xtheta = rep(0 , n )
17
+ soln_R = rep(0 , p )
18
+ grad = - t(X ) %*% Y / n
19
+ ever_active = as.integer(c(1 , rep(0 , p - 1 )))
20
+ nactive = as.integer(1 )
21
+ kkt_tol = 1.e-12
22
+ objective_tol = 1.e-16
23
+ maxiter = 500
24
+ soln_R = selectiveInference ::: solve_QP(t(X ) %*% X / n , lam , maxiter , soln_R , - t(X ) %*% Y / n , grad , ever_active , nactive , kkt_tol , objective_tol , p )$ soln
25
+
26
+ # test wide solver
27
+ Xtheta = rep(0 , n )
26
28
nactive = as.integer(1 )
27
29
ever_active = as.integer(c(1 , rep(0 , p - 1 )))
28
- soln_R = rep(0 , p )
30
+ soln_R_wide = rep(0 , p )
29
31
grad = - t(X ) %*% Y / n
30
- # test wide solver
31
- soln_R_wide = selectiveInference ::: solve_QP_wide(X , lam , maxiter , soln_R * 1 . , - t(X ) %*% Y / n , grad , Xtheta , ever_active , nactive , kkt_tol , objective_tol , p )
32
- print(nactive )
33
- print(soln_R_wide $ ever_active )
32
+ soln_R_wide = selectiveInference ::: solve_QP_wide(X , lam , maxiter , soln_R_wide , - t(X ) %*% Y / n , grad , Xtheta , ever_active , nactive , kkt_tol , objective_tol , p )$ soln
33
+
34
+ # soln_R = selectiveInference:::solve_QP(t(X) %*% X / n, lam, maxiter, soln_R, -t(X) %*% Y / n, grad, ever_active, nactive, kkt_tol, objective_tol, p)
35
+ # print('active')
36
+ # print(nactive)
37
+ # print(ever_active)
38
+ # print(soln_R$ever_active)
39
+ # soln_R = soln_R$soln
40
+ # soln_R_old = soln_R
41
+ # print(soln_R)
42
+ # Xtheta = rep(0, n)
43
+ # nactive = as.integer(1)
44
+ # ever_active = as.integer(c(1, rep(0, p-1)))
45
+ # soln_R = rep(0, p)
46
+ # grad = - t(X) %*% Y / n
47
+ # # test wide solver
48
+ # soln_R_wide = selectiveInference:::solve_QP_wide(X, lam, maxiter, soln_R*1., -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p)
49
+ # print(nactive)
50
+ # print(soln_R_wide$ever_active)
34
51
35
- print(' diff' )
36
- print(soln_R_wide $ soln - soln_R_old )
37
- print(soln_R_wide $ gradient [soln_R_wide $ ever_active ])
38
- print(max(abs(soln_R_wide $ gradient [- soln_R_wide $ ever_active ])))
39
- print(soln_R_wide $ kkt_check )
40
- print(soln_R_wide $ iter )
41
- # print(Xtheta - X %*% soln_R_wide$soln)
42
- # print(Xtheta)
52
+ print(' diff' )
53
+ print(soln_R_wide - soln_R )
54
+ # print(soln_R_wide$gradient[soln_R_wide$ever_active])
55
+ # print(max(abs(soln_R_wide$gradient[-soln_R_wide$ever_active])))
56
+ # print(soln_R_wide$kkt_check)
57
+ # print(soln_R_wide$iter)
58
+ # print(max(abs( Xtheta - X %*% soln_R_wide$soln)) )
59
+ # # print(Xtheta)
43
60
44
- soln_R_wide = selectiveInference ::: solve_QP_wide(X , 0.7 * lam , maxiter , soln_R_wide $ soln , - t(X ) %*% Y / n , grad , Xtheta , ever_active , nactive , kkt_tol , objective_tol , p )
45
- # print(Xtheta - X %*% soln_R_wide$soln)
46
- # print(soln_R_wide$soln)
47
- soln_R_wide = selectiveInference ::: solve_QP_wide(X , 0.5 * lam , maxiter , soln_R_wide $ soln , - t(X ) %*% Y / n , grad , Xtheta , ever_active , nactive , kkt_tol , objective_tol , p )
61
+ # print('R objective')
62
+ # print(0.5 * sum(Xtheta^2)/n - sum(Xtheta*Y)/n + lam * 0.7 * sum(abs(soln_R_wide$soln)))
63
+ # print(max(abs(soln_R_wide$gradient - t(X) %*% X %*% soln_R_wide$soln / n + t(X) %*% Y / n)))
64
+ # print(lam)
65
+ # print(max(abs(soln_R_wide$gradient[soln_R_wide$soln != 0])))
66
+ # print(which(soln_R_wide$soln != 0))
67
+ # soln_R_wide = selectiveInference:::solve_QP_wide(X, 0.7 * lam, maxiter, soln_R_wide$soln, -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p)
68
+ # # print(Xtheta - X %*% soln_R_wide$soln)
69
+ # # print(soln_R_wide$soln)
70
+ # soln_R_wide = selectiveInference:::solve_QP_wide(X, 0.5 * lam, maxiter, soln_R_wide$soln, -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p)
0 commit comments