@@ -30,7 +30,6 @@ gaussian_instance = function(n, p, s, sigma=1, rho=0, signal=6, X=NA,
30
30
conditional_density = function (noise_scale , lasso_soln ){
31
31
32
32
active_set = lasso_soln $ active_set
33
- inactive_set = lasso_soln $ inactive_set
34
33
observed_raw = lasso_soln $ observed_raw
35
34
opt_linear = lasso_soln $ optimization_transform $ linear_term
36
35
opt_offset = lasso_soln $ optimization_transform $ offset_term
@@ -41,15 +40,14 @@ conditional_density = function(noise_scale, lasso_soln){
41
40
beta_offset = observed_raw + opt_offset
42
41
p = length(observed_opt_state )
43
42
if (nactive < p ){
44
- U = opt_linear [,(nactive + 1 ): p ]
45
- beta_offset = + U %*% observed_opt_state [(nactive + 1 ): p ]
43
+ beta_offset = beta_offset + (opt_linear [,(nactive + 1 ): p ] %*% observed_opt_state [(nactive + 1 ): p ])
46
44
}
47
- opt_transform = list (linear_term = B , offset_term = beta_offset )
45
+ opt_transform = list (linear_term = B ,
46
+ offset_term = beta_offset )
48
47
reduced_B = chol(t(B ) %*% B )
49
48
reduced_beta_offset = solve(t(reduced_B )) %*% (t(B ) %*% beta_offset )
50
49
51
50
log_condl_optimization_density = function (opt_state ) {
52
-
53
51
if (sum(opt_state < 0 ) > 0 ) {
54
52
return (- Inf )
55
53
}
@@ -77,25 +75,24 @@ run_instance = function(X,y,sigma, lam, noise_scale, ridge_term){
77
75
78
76
# lasso_soln = conditional_density(noise_scale, lasso_soln)
79
77
80
- observed_raw = lasso_soln $ observed_raw
81
- opt_linear = lasso_soln $ optimization_transform $ linear_term
82
- opt_offset = lasso_soln $ optimization_transform $ offset_term
83
- observed_opt_state = lasso_soln $ observed_opt_state
84
- opt_transform = lasso_soln $ optimization_transform
85
-
86
- dim = length(observed_opt_state )
78
+ dim = length(lasso_soln $ observed_opt_state )
79
+ print(paste(" chain dim" , dim ))
87
80
S = selectiveInference ::: sample_opt_variables(lasso_soln , jump_scale = rep(1 / sqrt(n ), dim ), nsample = 10000 )
88
81
opt_samples = S $ samples [2001 : 10000 ,]
89
82
print(paste(" dim opt samples" , toString(dim(opt_samples ))))
90
83
91
84
X_E = X [, active_set ]
92
85
X_minusE = X [, inactive_set ]
93
- target_cov = solve(t(X_E )%*% X_E )* sigma ^ 2
86
+ target_cov = solve(t(X_E ) %*% X_E )* sigma ^ 2
94
87
cov_target_internal = rbind(target_cov , matrix (0 , nrow = p - nactive , ncol = nactive ))
95
88
observed_target = solve(t(X_E ) %*% X_E ) %*% t(X_E ) %*% y
96
89
observed_internal = c(observed_target , t(X_minusE ) %*% (y - X_E %*% observed_target ))
97
90
internal_transform = lasso_soln $ internal_transform
98
91
92
+ observed_opt_state = lasso_soln $ observed_opt_state
93
+ opt_transform = lasso_soln $ optimization_transform
94
+ observed_raw = lasso_soln $ observed_raw
95
+
99
96
pivots = rep(0 , nactive )
100
97
for (i in 1 : nactive ){
101
98
target_transform = selectiveInference ::: linear_decomposition(observed_target [i ],
@@ -122,7 +119,7 @@ run_instance = function(X,y,sigma, lam, noise_scale, ridge_term){
122
119
return (pivots )
123
120
}
124
121
125
- collect_results = function (n ,p ,s , nsim = 2 ){
122
+ collect_results = function (n ,p ,s , nsim = 1 ){
126
123
rho = 0.3
127
124
lam = 1 .
128
125
sigma = 1
0 commit comments