Skip to content

Commit f85a568

Browse files
test of wide solver
1 parent bf65665 commit f85a568

File tree

1 file changed

+49
-26
lines changed

1 file changed

+49
-26
lines changed

test.R

Lines changed: 49 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,34 +14,57 @@ set.seed(43)
1414
kkt_tol = 1.e-12
1515
objective_tol = 1.e-16
1616
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)
2628
nactive = as.integer(1)
2729
ever_active = as.integer(c(1, rep(0, p-1)))
28-
soln_R = rep(0, p)
30+
soln_R_wide = rep(0, p)
2931
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)
3451

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)
4360

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

Comments
 (0)