domenicodigangi / ScoreDrivenExponentialRandomGraphs

Score Driven Exponential Random Graphs Models
MIT License
0 stars 1 forks source link

Discuss method to associate uncertainty to filtered parameters : Blasques' and/or Buccheri's methodology #32

Open domenicodigangi opened 3 years ago

domenicodigangi commented 3 years ago

Dove Aggiungerlo:

domenicodigangi commented 3 years ago

Nella call di 12/4/2020 abbiamo concordato di analizzare la coverage in simulazione sul toy model, aggiungendo anche la filtering uncertainty

domenicodigangi commented 3 years ago

Recap di quanto fatto discusso in #29

domenicodigangi commented 3 years ago

Steps necessari

  1. [x] Implementare metodo di white per stimare la matrice di varianza covarianza degli stimatori dei parametri statici per i filtri score driven DirBin0Rec0
  2. [x] Calcolo coverage da metodo di blasuqes
  3. [x] Calcolo coverage metodo Buccheri
domenicodigangi commented 3 years ago

La componente dovuta alla filtering uncertainty non sembra aggiungere molto alla parameter uncertainty. Filt + par :area rosa solo filtering : linee verdi

filter_and_conf_bands_mle_N_50_T_200

filter_and_conf_bands_pmle_N_50_T_200

filter_and_conf_bands_mle_N_300_T_200

filter_and_conf_bands_pmle_N_300_T_200

Le confidence bands sono molto conservative, con coverages piú alte del valore nominale. All aumentare di T le bande si allargano. Questo mi sembra controintuitivo e potrebbe indicare un errore. cover_conf_95_dgp_sin_dir_bin0_rec0_T_100 cover_conf_95_dgp_sin_dir_bin0_rec0_T_200 cover_conf_95_dgp_sin_dir_bin0_rec0_T_300

domenicodigangi commented 3 years ago

Le confidence bands, e rispettive coverages, nelle figure al commento precedente sono errate. Praticamente, per eliminare piccoli autovalori negativi nello stimatore di white della matrice di covarianza delle MLE ( B^(-1) A B^(-1) ) sommavo un valore fisso (10^-3) all'autovalore negativo. Inoltre, @gbormetti ha sottolineato che l'argomento per giustificare le confidence bands relative alla parameter e filtering uncertainty potrebbe non essere valido per processi deterministici.

Ho ricontrollato il codice e proceduto come segue:

  1. Verificato che la presenza di autovalori negativi fosse dovuto a errori numerici. Se la matrice di covarianza ha un autovalore negativo, controllo che questo non segua da un autovalore negativo dell'hessiana (in tal caso non uso la stima, ma non succede mai). Riscontro che gli autovalori negativi sono sempre dell'ordine della precisione macchina. Quando presenti, risolvo aggiungendo all'autovalore minimo il doppio della precisione macchina ( 10^-12). É un numero uguale per ogni diversa simulazione , ma anche il minimo utilizzabile.
  2. Utilizzo come dgp un AR1 nello spazio delle statistiche fisiche alpha e beta. Se, per almeno un t, gli alpha e beta simulati escono dalle regioni accettabili, scarto la simulazione e genero un nuovo path dal solito AR1. Dal path ottenuto per alpha e beta, ricavo un path per theta e eta invertendo, per ogni time step, la relazione tra questi ultimi e i valori medi di alpha e beta.
  3. Ho aggiunto all'overleaf una descrizione quantitativa di come definisco le medie temporali e i bounds alle dinamiche dei dgp nel piano (alpha, beta ).
  4. Ripeto le simulazioni e il calcolo delle coverages per l'AR1 al punto precedente. Seguono le figure a. Esempi di filtro misspecified con dgp AR1 b. Box plots delle coverages. Per ogni coppia T,N simulo 50 paths diversi dall'AR1, stimo e calcolo la coverage media sul tempo per i due parametri separatamente. Da queste distribuzioni empiriche delle coverages mediate sul tempo, costruisco i boxplots.

filter_and_conf_bands_mle_N_300_T_300_AR

cover_conf_95_dgp_AR_dir_bin0_rec0_BUCC_ML cover_conf_95_dgp_AR_dir_bin0_rec0_BUCC_PML

Possibili spiegazioni eventuale scarsa qualitá delle confidence bands:

Possibili soluzioni che sto esplorando per ottenere delle confidence bands che abbiano una coverage piú vicina al valore nominale:

domenicodigangi commented 3 years ago

bootstrap_distrib_white_estimators_cov_mat_SD_stat_par

In particolare tende a sottostimare la diagonale della matrice di varianza covarianza

bootstrap_distrib_white_estimators_diagonal_cov_mat_SD_stat_par

domenicodigangi commented 3 years ago

Esempi di confidence bands da stimatore di white e da parametric bootstrap. Il dgp é Score Driven filter_and_conf_bands_white_mle_N_50_T_300_SD filter_and_conf_bands_boot_mle_N_50_T_300_SD filter_and_conf_bands_white_mle_N_150_T_300_SD filter_and_conf_bands_boot_mle_N_150_T_300_SD

Non ho ancora calcolato le coverages perché servirebbe parecchio tempo e temo che continuerebbero a essere lontane dal valore nominale. Nelle prove fatte ho ottenuto risultati sempre simili.

Al momento come next steps ho in mente:

  1. Nuova iterazione di check del codice.
  2. Riscalare lo score
  3. Usare non parametric bootstrap
domenicodigangi commented 3 years ago

Lista di recenti updates

  1. Nel toy model statico, lo score scala come N^2, a parità di parametri MLE e osservazioni. Quindi, senza riscalamento, DGPs SD , con gli stessi parametri statici, generano dinamiche molto diverse al variare di N (increasingly variable al crescere di N). Questo rendeva complicato il confronto delle coverages di DGPs con parametri uguali ma N diversi.
  2. Riscalare per l'hessiano, attenua questo effetto. Tutti risultati discussi in seguito usano filtri e DGPs SD riscalati per la diagonale dell'hessiano.
  3. Sembra che le bande di confidenza, anche per la sola parameter uncertainty, sono tendenzialmente molto conservative (piu' larghe del necessario), quando i latenti "variano poco", mentre diventano eccessivamente strette quando la "variabilità" nei latenti aumenta:
    • Confronto le coverages da parameter uncertainty per due DGPs SD che differiscono solo per il valore di A= 0.3 o 3, B = 0.98, e W fissato per avere unconditional mean al centro della zona di osservabilità. Nella figura seguente riporto i box plots delle coverages delle confidence bands al 95%, per i due DGPs. Sull'asse x aggiungo anche la media su tutti i paths simulati della standard deviation sul singolo path. Nel primo panel A=0.3 nel secondo A=3:

mle_cover_conf_par_unc_95_dgp_SD_low_dir_bin0_rec0 mle_cover_conf_par_unc_95_dgp_SD_high_dir_bin0_rec0

distribution_white_estimators_dgp_SD_low_N_100_T_300

  1. Il parametric bootstrap è utilizzabile come alternativa a white, ma analizzare le coverages diventa molto time consuming. Solo per T=300 e N=300 servirebbero circa un paio di settimane per rifare un boxplot. Per risolvere, ho sperimentato un bootstrap non parametrico ispirato a Statistical mechanics of networks: Estimation and uncertainty. Non sembra funzionare bene: pmle_cover_conf_par_unc_95_dgp_SD_high_dir_bin0_rec0_nonParBoot
domenicodigangi commented 3 years ago

A questo punto direi che possiamo solo proporre le bande con i seguenti limiti: