lambda1, lambda2, reg, Omega_0, Theta_0=Theta_0, eps=1e-3, verbose=False, measure=False) Theta_sol = sol['Theta'] Omega_sol = sol['Omega'] # warm start Omega_0 = Omega_sol.copy() Theta_0 = Theta_sol.copy() TPR[g1, g2] = discovery_rate(Theta_sol, Theta)['TPR'] FPR[g1, g2] = discovery_rate(Theta_sol, Theta)['FPR'] DTPR[g1, g2] = discovery_rate(Theta_sol, Theta)['TPR_DIFF'] DFPR[g1, g2] = discovery_rate(Theta_sol, Theta)['FPR_DIFF'] ERR[g1, g2] = error(Theta_sol, Theta) AIC[g1, g2] = aic(S_train, Theta_sol, N_train) BIC[g1, g2] = ebic(S_train, Theta_sol, N_train, gamma=0.1) for l in np.arange(len(gammas)): GAM[l, g1, g2] = ebic(S_train, Theta_sol, N_train, gamma=gammas[l]) # get optimal lambda ix = np.unravel_index(np.nanargmin(BIC), BIC.shape) ix2 = np.unravel_index(np.nanargmin(AIC), AIC.shape) #%%
S, sample = sample_covariance_matrix(Sigma, vecN[j]) #start = time() solA, infoA = ADMM_MGL(S, l1[j], l2[j], reg, Omega_0, eps_admm=5e-5, verbose=False, measure=True) #end = time() #RT_ADMM[j] = end-start iA[j] = infoA TPR[j] = discovery_rate(solA['Theta'], Theta)['TPR'] FPR[j] = discovery_rate(solA['Theta'], Theta)['FPR'] #start = time() solP, infoP = warmPPDNA(S, l1[j], l2[j], reg, Omega_0, eps=5e-5, eps_admm=1e-2, verbose=False, measure=True) #end = time() #RT_PPA[j] = end-start iP[j] = infoP
for g1 in np.arange(grid1): lambda1 = L1[g1,g2] lambda2 = L2[g1,g2] sol, info = ADMM_MGL(S, lambda1, lambda2, reg , Omega_0, Theta_0 = Theta_0, X_0 = X_0, tol = 1e-8, rtol = 1e-8, verbose = False, measure = False) Theta_sol = sol['Theta'] Omega_sol = sol['Omega'] X_sol = sol['X'] # warm start Omega_0 = Omega_sol.copy() Theta_0 = Theta_sol.copy() X_0 = X_sol.copy() dr = discovery_rate(Theta_sol, Theta) TPR[g1,g2] = dr['TPR'] FPR[g1,g2] = dr['FPR'] DTPR[g1,g2] = dr['TPR_DIFF'] DFPR[g1,g2] = dr['FPR_DIFF'] ERR[g1,g2] = error(Theta_sol, Theta) AIC[g1,g2] = aic(S, Theta_sol, N) BIC[g1,g2] = ebic(S, Theta_sol, N, gamma = 0.1) # get optimal lambda ix= np.unravel_index(np.nanargmin(BIC), BIC.shape) ix2= np.unravel_index(np.nanargmin(AIC), AIC.shape) l1opt = L1[ix]
Theta_0 = get_K_identity(K,p) for g1 in np.arange(grid1): for g2 in np.arange(grid2): lambda1 = L1[g1,g2] lambda2 = L2[g1,g2] sol, info = warmPPDNA(S_train, lambda1, lambda2, reg, Omega_0, Theta_0 = Theta_0, eps = 1e-3, verbose = False, measure = False) Theta_sol = sol['Theta'] Omega_sol = sol['Omega'] # warm start Omega_0 = Omega_sol.copy() Theta_0 = Theta_sol.copy() TPR[g1,g2] = discovery_rate(Theta_sol, Theta)['TPR'] FPR[g1,g2] = discovery_rate(Theta_sol, Theta)['FPR'] DTPR[g1,g2] = discovery_rate(Theta_sol, Theta)['TPR_DIFF'] DFPR[g1,g2] = discovery_rate(Theta_sol, Theta)['FPR_DIFF'] ERR[g1,g2] = error(Theta_sol, Theta) AIC[g1,g2] = aic(S_train, Theta_sol, N) BIC[g1,g2] = ebic(S_train, Theta_sol, N, gamma = 0.1) # get optimal lambda ix= np.unravel_index(np.nanargmin(BIC), BIC.shape) ix2= np.unravel_index(np.nanargmin(AIC), AIC.shape) lambda1 = L1[ix] lambda2 = L2[ix] print("Optimal lambda values: (l1,l2) = ", (lambda1,lambda2)) plot_fpr_tpr(FPR.T, TPR.T, ix[::-1], ix2[::-1])
X_0=X_0, tol=1e-8, rtol=1e-8, verbose=False, measure=False) Theta_sol = sol['Theta'] Omega_sol = sol['Omega'] X_sol = sol['X'] # warm start Omega_0 = Omega_sol.copy() Theta_0 = Theta_sol.copy() X_0 = X_sol.copy() dr = discovery_rate(Theta_sol, Theta) TPR[g1, g2] = dr['TPR'] FPR[g1, g2] = dr['FPR'] DTPR[g1, g2] = dr['TPR_DIFF'] DFPR[g1, g2] = dr['FPR_DIFF'] ERR[g1, g2] = error(Theta_sol, Theta) AIC[g1, g2] = aic(S, Theta_sol, N) BIC[g1, g2] = ebic(S, Theta_sol, N, gamma=0.1) # get optimal lambda ix = np.unravel_index(np.nanargmin(BIC), BIC.shape) ix2 = np.unravel_index(np.nanargmin(AIC), AIC.shape) l1opt = L1[ix] l2opt = L2[ix]