@@ -12,25 +12,94 @@ smoke_test = function() {
12
12
}
13
13
A = smoke_test()
14
14
15
- density_test = function () {
15
+ gaussian_density_test = function () {
16
16
17
+ noise_scale = 10 .
17
18
random_lasso = smoke_test()
18
19
p = nrow(random_lasso $ internal_transform $ linear_term )
19
20
internal_state = matrix (rnorm(p * 20 ), p , 20 )
20
21
optimization_state = matrix (rnorm(p * 20 ), p , 20 )
21
22
offset = rnorm(p )
22
23
23
- selectiveInference ::: log_density_gaussian_(10 . ,
24
- random_lasso $ internal_transform $ linear_term ,
25
- internal_state ,
26
- random_lasso $ optimization_transform $ linear_term ,
27
- optimization_state ,
28
- offset )
29
-
30
- selectiveInference ::: log_density_gaussian_conditional_(10 . ,
31
- random_lasso $ optimization_transform $ linear_term ,
32
- optimization_state ,
33
- offset )
24
+ V1 = selectiveInference ::: log_density_gaussian_(noise_scale ,
25
+ random_lasso $ internal_transform $ linear_term ,
26
+ internal_state ,
27
+ random_lasso $ optimization_transform $ linear_term ,
28
+ optimization_state ,
29
+ offset )
30
+ A1 = random_lasso $ internal_transform $ linear_term
31
+ A2 = random_lasso $ optimization_transform $ linear_term
32
+ arg = A1 %*% internal_state + A2 %*% optimization_state + offset
33
+ V2 = - apply(arg ^ 2 , 2 , sum ) / (2 * noise_scale ^ 2 )
34
+ print(sqrt(sum((V1 - V2 )^ 2 ) / sum(V1 ^ 2 )))
35
+
36
+ U1 = selectiveInference ::: log_density_gaussian_conditional_(noise_scale ,
37
+ random_lasso $ optimization_transform $ linear_term ,
38
+ optimization_state ,
39
+ offset )
40
+ arg = A2 %*% optimization_state + offset
41
+ U2 = - apply(arg ^ 2 , 2 , sum ) / (2 * noise_scale ^ 2 )
42
+ print(sqrt(sum((U1 - U2 )^ 2 ) / sum(U1 ^ 2 )))
43
+
44
+ # test that a single column matrix works -- numeric should not
45
+
46
+ print(selectiveInference ::: log_density_gaussian_conditional_(noise_scale ,
47
+ random_lasso $ optimization_transform $ linear_term ,
48
+ optimization_state [,1 ,drop = FALSE ],
49
+ offset ))
50
+ print(selectiveInference ::: log_density_gaussian_(noise_scale ,
51
+ random_lasso $ internal_transform $ linear_term ,
52
+ internal_state [,1 ,drop = FALSE ],
53
+ random_lasso $ optimization_transform $ linear_term ,
54
+ optimization_state [,1 ,drop = FALSE ],
55
+ offset ))
56
+
57
+ }
58
+
59
+ gaussian_density_test()
60
+
61
+ laplace_density_test = function () {
62
+
63
+ noise_scale = 10 .
64
+ random_lasso = smoke_test()
65
+ p = nrow(random_lasso $ internal_transform $ linear_term )
66
+ internal_state = matrix (rnorm(p * 20 ), p , 20 )
67
+ optimization_state = matrix (rnorm(p * 20 ), p , 20 )
68
+ offset = rnorm(p )
69
+
70
+ V1 = selectiveInference ::: log_density_laplace_(noise_scale ,
71
+ random_lasso $ internal_transform $ linear_term ,
72
+ internal_state ,
73
+ random_lasso $ optimization_transform $ linear_term ,
74
+ optimization_state ,
75
+ offset )
76
+ A1 = random_lasso $ internal_transform $ linear_term
77
+ A2 = random_lasso $ optimization_transform $ linear_term
78
+ arg = A1 %*% internal_state + A2 %*% optimization_state + offset
79
+ V2 = - apply(abs(arg ), 2 , sum ) / noise_scale
80
+ print(sqrt(sum((V1 - V2 )^ 2 ) / sum(V1 ^ 2 )))
81
+
82
+ U1 = selectiveInference ::: log_density_laplace_conditional_(noise_scale ,
83
+ random_lasso $ optimization_transform $ linear_term ,
84
+ optimization_state ,
85
+ offset )
86
+ arg = A2 %*% optimization_state + offset
87
+ U2 = - apply(abs(arg ), 2 , sum ) / noise_scale
88
+ print(sqrt(sum((U1 - U2 )^ 2 ) / sum(U1 ^ 2 )))
89
+
90
+ # test that a single column matrix works -- numeric should not
91
+
92
+ print(selectiveInference ::: log_density_laplace_conditional_(noise_scale ,
93
+ random_lasso $ optimization_transform $ linear_term ,
94
+ optimization_state [,1 ,drop = FALSE ],
95
+ offset ))
96
+ print(selectiveInference ::: log_density_laplace_(noise_scale ,
97
+ random_lasso $ internal_transform $ linear_term ,
98
+ internal_state [,1 ,drop = FALSE ],
99
+ random_lasso $ optimization_transform $ linear_term ,
100
+ optimization_state [,1 ,drop = FALSE ],
101
+ offset ))
102
+
34
103
}
35
104
36
- density_test ()
105
+ laplace_density_test ()
0 commit comments