relazione - Istat.it

Transcript

relazione - Istat.it
Il software per la statistica ufficiale:
dai sistemi proprietari a quelli open source
Roma, 4 marzo 2008
L’uso di R per il calcolo delle stime e degli errori:
risultati ottenuti e lavori in corso
Diego Zardetto, Monica Scannapieco
Istat – Direzione centrale per le tecnologie ed il supporto metodologico
Sintesi
La presente relazione documenta in modo sintetico i risultati conseguiti dagli autori con
riferimento alle due seguenti attività: 1) test di fattibilità della migrazione da SAS ad R di una
specifica fase del processo di produzione delle indagini campionarie: la calibrazione dei dati ed
il calcolo di stime ed errori, 2) progettazione e sviluppo di un software interamente basato su R
in grado di sostituire una applicazione di uso comune in Istat e basata su SAS: il software
GENESEES.
1
Introduzione
Da tempo in Istat è in corso una riflessione sulla possibilità – e l’opportunità – di sostituire una
parte dei software proprietari utilizzati con software liberi (free) ed a codice sorgente aperto
(open source). Tale riflessione coinvolge a pieno titolo il sistema SAS1 che, entrato in Istituto
nei primi anni ’80 come software per l’analisi dei dati e la ricerca statistica, è divenuto nel
tempo il sistema di elaborazione dominante in buona parte dei processi di produzione
dell’informazione statistica. E’ in questo contesto che deve essere collocato il lavoro di cui la
presente relazione intende dare conto. Essa ha, infatti, lo scopo di documentare in modo
sintetico i risultati conseguiti dagli autori con riferimento a due attività logicamente
interconnesse, sebbene distinte e temporalmente sequenziali: la prima attività, che definiremo
di “sperimentazione”, si è concretizzata nel test di fattibilità della migrazione da SAS ad R di
una specifica fase del processo di produzione delle indagini campionarie: la calibrazione dei
dati ed il calcolo di stime ed errori; la seconda attività, innescata dall’esito positivo del test e
tuttora in corso, concerne la progettazione e lo sviluppo di un software interamente basato su
R in grado di sostituire una applicazione di uso comune in Istat e basata su SAS: il software
GENESEES.
2
Necessità del test di fattibilità
Oggi R viene generalmente ritenuto il candidato naturale a sostituire, in una ottica di medio
periodo, il sistema SAS in Istat. Tuttavia, quando – circa due anni fa – si diede inizio allo studio
sistematico di R, in Istituto esistevano due punti di vista radicalmente divergenti sul nuovo
strumento software: da una parte si registrava un consenso unanime sulle grandi potenzialità
di R nell’analisi dei dati e nella ricerca statistica, dall’altra, un diffuso scetticismo sulla capacità
di R, come sistema di elaborazione tout court, di incontrare le esigenze tipiche dei processi di
produzione dell’Istat. Lo scetticismo si articolava su tre dubbi principali:
1) Gestione di grosse moli di dati.
Alcune delle fasi in cui è tradizionalmente scomposto, in un istituto di statistica ufficiale, il
processo di produzione delle informazioni statistiche, richiedono l’elaborazione automatica
di ingenti moli di dati. Oltre al caso evidente dei Censimenti Generali, questa
considerazione si applica, in Istat, alle principali indagini campionarie condotte su vasta
scala. Il dubbio sulle potenzialità di R discende, a questo proposito, direttamente da un
noto punto debole del sistema: la gestione della memoria. In effetti, R, al contrario del
SAS, non dispone di un sofisticato sistema di buffering in grado di ottimizzare la gestione
dello swapping su memoria secondaria. R delega questa operazione al sistema operativo.
Per conseguenza, se un processo R usa più memoria della RAM disponibile, tipicamente
diventa molto lento. Inoltre una sessione R su piattaforma Windows a 32 bit non può
ottenere dal sistema operativo più di 3GB di memoria allocabile.
1
Il CNIPA, nel parere trasmesso nel 2004 in occasione del rinnovo delle licenze fornite dal SAS Institute, premeva affinché l’Istat
effettuasse una sperimentazione “di prodotti software alternativi, anche di tipo open source, al fine di eliminare, o di contenere, la
dipendenza dei sistemi – e di conseguenza dell’attività istituzionale dell’Istituto – da un unico fornitore e da un’unica tecnologia
proprietaria”. Nel parere del 2005 il CNIPA ribadiva quanto sopra ed invitava l’Istat a procedere in tempi brevi a sperimentare tali
prodotti.
2
2) Velocità di elaborazione.
Le elaborazioni cui vengono sottoposti i dati di indagine sono, talvolta, caratterizzate da
elevata complessità computazionale. Se si considera che, come accennato al punto
precedente, esse coinvolgono spesso ingenti moli di dati, si comprende facilmente
l’esigenza di sistemi software particolarmente efficienti. Da questo punto di vista il dubbio
su R discende direttamente dalla sua natura di linguaggio interpretato. Tale caratteristica
penalizza in modo particolare l’efficienza dei programmi R che fanno ricorso a cicli: essi
risultano, infatti, 2 ordini di grandezza più lenti di compilati C o Fortran. R, d’altra parte,
dispone di metodi di vettorizzazione davvero efficienti e flessibili, che consentono, nella
maggior parte dei casi, di evitare le strutture di ciclo.
3) Affidabilità dei package aggiuntivi.
L’Istat, come istituto di statistica ufficiale, ha il dovere di garantire il rispetto, nella propria
attività di elaborazione dei dati, dei più severi standard metodologici. Ciò richiede, dal
punto di vista informatico, di accertare in modo rigoroso l’affidabilità dei processi software
cui venga demandata la soluzione automatica di specifici problemi statistici. Il dubbio su R
riguarda, in questo rispetto, proprio la sua natura free e open source: l’assenza, cioè, di
una software-house grande ed importante (come il SAS Institute) in grado di “certificare”
(per così dire) i programmi resi disponibili. Fra i tre dubbi esposti, quest’ultimo appare
certamente il più insidioso. Infatti la maggiore ricchezza del software R risiede proprio nei
suoi oltre 1.500 (ad oggi) package aggiuntivi, dedicati alla soluzione di problemi specifici.
Sebbene costituiscano un enorme patrimonio di risorse informatiche (per di più in continua
e veloce crescita) tali package sono prodotti – e resi disponibili a titolo gratuito alla
comunità mondiale degli utilizzatori – da una libera comunità di sviluppatori nonprofessionisti, generalmente provenienti dal mondo accademico e della ricerca.
Nessuno dei tre dubbi esposti poteva essere astrattamente liquidato come destituito di
fondamento. Per conseguenza, l’iniziale scetticismo registrato sulla proposta di R come
alternativa al SAS in Istat esigeva attenzione e risposte difendibili. Allo scopo di ricercare tali
risposte, fondandole su evidenze empiriche e su risultati riproducibili, si è ritenuto necessario
dare inizio ad una sperimentazione finalizzata a testare la fattibilità della migrazione da SAS ad
R di una specifica fase del processo di produzione.
3
Caratteristiche del test di fattibilità
Il primo passo da compiere, nel progettare il test di fattibilità, riguardava la scelta di una
specifica fase del processo di produzione. Abbiamo ritenuto opportuno selezionare la fase di
calibrazione (o ponderazione vincolata) dei dati, propedeutica all’utilizzo degli “stimatori di
calibrazione” per il calcolo delle stime e degli errori standard.
Occorreva, poi, isolare una particolare indagine campionaria, i cui dati potessero fungere da
terreno concreto di sperimentazione. La nostra scelta è ricaduta sull’indagine “Forze di Lavoro”
(FOL), una delle maggiori indagini correnti condotte dall’Istat.
In terzo luogo è stato necessario “setacciare” la ricca offerta di package aggiuntivi di R, per
individuarne uno che coprisse, almeno in parte, le esigenze tipiche della fase di calibrazione. Il
candidato migliore è stato individuato nel package survey, un package maturo (cioè giunto ad
una versione stabile) sviluppato da Thomas Lumley, professore di biostatistica dell’università di
Washington e membro del “R-Core development team”.
Il criterio in base al quale sono state operate le scelte (i) della fase di calibrazione e (ii)
dell’indagine FOL, obbedisce alla volontà di determinare, nel test di fattibilità, il banco di prova
più severo possibile per R. Si è inteso, in altri termini, selezionare le elaborazioni che si
presumeva fossero in grado di mettere in massima difficoltà il software, sollecitandone proprio
i punti deboli illustrati nel capitolo 2: gestione di elaborazioni di elevata complessità
computazionale su grandi moli di dati. E’ del tutto evidente, fra l’altro, che condurre il test di
fattibilità nel cosiddetto worst-case scenario avrebbe avuto il vantaggio di garantire,
nell’eventualità di un esito positivo del test, la fattibilità della migrazione in tutti i contesti
applicativi più semplici di quello esplicitamente indagato.
3
Relativamente alla dimensione delle strutture dati manipolate, occorre precisare come
l’indagine FOL non sia stata scelta tanto per la sua, pur cospicua, dimensione campionaria,
quanto, piuttosto, per il fatto che nella fase di calibrazione dei dati FOL viene imposto un
numero molto elevato di vincoli. E’, infatti, proprio l’elevato numero di vincoli a far “esplodere”
la dimensione delle strutture dati che il software deve elaborare per risolvere il problema di
calibrazione.
3.1 Il problema di calibrazione
Come già accennato, la fase di calibrazione dei dati è, nelle indagini campionarie, propedeutica
all’utilizzo degli “stimatori di calibrazione” per il calcolo delle stime e dei relativi errori standard
ed intervalli di confidenza.
Gli stimatori di calibrazione possono essere visti come un raffinamento dei più semplici
stimatori di Horvitz-Thompson (HT). Gli stimatori HT sono costruiti a partire dai cosiddetti “pesi
diretti” delle unità selezionate nel campione. I pesi diretti dipendono solo dal disegno di
campionamento adottato (eguagliano, per la precisione, gli inversi delle probabilità di
inclusione delle unità nel campione) ed il loro calcolo non presenta, in genere, alcuna difficoltà.
D’altra parte, gli stimatori HT, pur essendo corretti (almeno in assenza di mancate risposte
totali), non sono particolarmente efficienti.
Gli stimatori di calibrazione, solo asintoticamente corretti, sono in grado di determinare,
rispetto a quelli HT, un notevole guadagno di efficienza, vale a dire una cospicua riduzione
della varianza campionaria delle stime. Tale notevole proprietà discende dal fatto che gli
stimatori di calibrazione fanno esplicitamente uso di informazioni ausiliarie, relative alla
popolazione obiettivo dell’indagine ma derivate da fonti ad essa esterne. Queste informazioni
vengono tipicamente rappresentate nella forma di “totali noti” di “variabili ausiliarie”: ci si
deve, allora, attendere (in genere) un guadagno in efficienza tanto maggiore quanto maggiore
risulti la correlazione fra le “variabili ausiliarie” e le “variabili di interesse” su cui si intenda
calcolare le stime.
Il prezzo da pagare per fruire dei vantaggi degli stimatori di calibrazione consiste nel fatto che
essi fanno ricorso a pesi più complessi dei “pesi diretti” usati dagli stimatori HT. In effetti il
calcolo dei cosiddetti “pesi calibrati” (o “pesi finali”) richiede di risolvere un complesso
problema di ottimizzazione vincolata.
La funzione da minimizzare è una funzione di distanza G tra i pesi diretti dk e i pesi calibrati
wk, e i vincoli sono rappresentati da condizioni di uguaglianza delle stime campionarie dei totali
delle variabili ausiliarie con i rispettivi totali noti della popolazione:
min ∑ G ( d k , wk )

k ∈s

 ∑ wk x k = X
 k ∈s
(1)
Nell’equazione precedente è stato indicato con X il vettore dei totali noti e con xk il vettore
delle variabili ausiliare osservate sulla k-esima unità campionaria.
Al problema formulato nell’equazione (1) vengono, molto spesso, aggiunti ulteriori vincoli, detti
“vincoli di range”, del tipo seguente:
L≤
wk
≤U
dk
k∈s
con
0 ≤ L ≤1≤U
(2)
Attraverso il sistema di disequazioni (2) è, infatti, possibile eliminare il rischio che i pesi finali,
soluzione del problema (1), presentino valori patologici (ad esempio, negativi) o indesiderati
(ad esempio, enormi rispetto ai pesi diretti).
L’espressione “problema di calibrazione” è comunemente usata per designare il complesso
delle equazioni (1) e (2).
4
3.2 La calibrazione in Istat
Nei contesti applicativi reali il problema di calibrazione non può essere risolto analiticamente.
Occorre, dunque, demandarne la soluzione ad appositi programmi di calcolo che operino per
via numerica. Un software che risolva il “problema di calibrazione” acquisirà come dati di input
i pesi diretti dk, la funzione distanza G, le variabili ausiliarie xk, i totali noti X, ed i bounds
[L,U] e restituirà, come output principale, il vettore dei pesi calibrati wk.
Il calcolo dei pesi calibrati per le indagini campionarie dell’Istat è correntemente effettuato da
un sistema software dedicato: GENESEES. Il sistema GENESEES (GENEralized Sampling
Estimates and Errors in Surveys) è stato sviluppato in Istat a partire dalla fine degli anni ’90, è
disponibile nella versione stabile attuale dal 2001/2002 ed è interamente implementato in SAS
(principalmente in SAS Macro e IML, per gli algoritmi di calcolo, e in SAS/AF con SCL, per
l’interfaccia utente di tipo grafico).
Oltre alla funzionalità di calibrazione, il sistema rende disponibili agli utenti funzionalità per il
calcolo delle stime, degli errori standard e degli intervalli di confidenza degli stimatori di uso
più comune (totali, medie, rapporti). Il metodo di stima della varianza campionaria che
implementa è il cosiddetto metodo analitico, basato sulla linearizzazione di Taylor e sulla teoria
degli stimatori di regressione generalizzata.
Come è stato illustrato nel capitolo 3, il test di fattibilità oggetto della presente relazione
riguarda la migrazione da SAS ad R del processo di calibrazione dei dati FOL. In questo
contesto il candidato naturale a giocare il ruolo di sistema di benchmark è, ovviamente, proprio
GENESEES.
4
Fasi del test di fattibilità
Il test di fattibilità introdotto nel capitolo 3 è stato strutturato nel modo sintetizzato dallo
Schema 1. Esso si articola in tre macro fasi temporalmente sequenziali (che, però, si scambiano
informazioni in modo non banale, come rappresentato nello schema dalle frecce), a loro volta
decomposte in sottofasi logicamente distinte (seppure non necessariamente sequenziali).
Fase 1: Definizione dell’ambiente di test
1.1: Selezione sistema
di benchmark
1.2: Selezione dati
di benchmark
1.3: Ambiente
HW e SW di
sperimentazione
Fase 2: Sviluppo prototipale per il test
2.1: Definizione dell’ambiente
di prototipazione
2.2: Test di efficacia
Fase 3: Realizzazione del test di fattibilità
2.3: Test di efficienza
3.1: Test di efficienza
e ottimizzazione
3.2: Test di efficacia
e correzione
Schema 1: Scomposizione del test di fattibilità in macro fasi temporali e sottofasi logiche
5
Lo scopo delle tre macro fasi, le operazioni in esse effettuate ed i risultati conseguiti sono
concisamente illustrati in quanto segue.
Fase 1: Definizione dell’ambiente di test.
In questa fase è stato definito “l’ambiente di test”, sono state, cioè, operate le scelte definitive
(1.1) del sistema software di benchmark, (1.2) dei dataset su cui condurre il test e (1.3) delle
caratteristiche software (SW) ed hardware (HW) delle piattaforme tecnologiche da utilizzare.
Sulla base di quanto argomentato nelle sezioni 3 e 3.2, il sistema di benchmark coincide con il
sistema da cui migrare: GENESEES/SAS. La volontà di condurre il test nel cosiddetto worstcase scenario (come anticipato nel capitolo 3) ha, poi, comportato la selezione dei dataset
dell’indagine FOL come dati di benchmark. Infine, le caratteristiche HW e SW delle piattaforme
sono state scelte in modo da rispecchiare le dotazioni standard disponibili in Istat: PC Windows
XP, 760 MB RAM, CPU da 3 GHz e Server Linux, 10 GB RAM, 4 CPU da 2 GHz.
Fase 2: Sviluppo prototipale per il test.
La fase di sviluppo prototipale si è rivelata fondamentale per il progetto dei test comparativi di
efficacia ed efficienza eseguiti nella successiva fase 3. Grazie ad essa è stato possibile (i)
prendere dimestichezza con il package survey di R, comprenderne l’architettura generale e
testarne in modo estensivo le singole funzioni, (ii) stabilire esattamente in quale misura le
soluzioni proposte da survey/R fossero sovrapponibili a quelle di GENESEES\SAS e (iii)
adattarle ad esse mediante interventi mirati di programmazione.
Il test delle funzioni è stato condotto, in questa fase, variando quanto più possibile le
configurazioni dei parametri di input ed operando su dataset di prova di dimensione ridotta, in
modo da posporre ogni considerazione relativa alla loro efficienza su dataset realistici (quali
quelli di benchmark). In ogni caso, gli esiti dei test prototipali di efficacia (2.1) ed efficienza
(2.2), oltre a segnalare con prontezza errori e/o malfunzionamenti, hanno fornito preziose
indicazioni su quale fosse il modo più opportuno di realizzare i test effettivi della fase 3.
Fase 3: Realizzazione del test di fattibilità.
Una volta garantito, come esito della fase di sviluppo prototipale per il test, che il software
survey/R “adattato” risolvesse esattamente lo stesso problema della funzione di calibrazione di
GENESEES/SAS, si è proceduto al test comparativo dei due sistemi sui dati di benchmark
dell’indagine FOL. Lo studio ha previsto il confronto sistematico delle performance dei due
software, sia dal punto di vista dell’efficacia (correttezza dei risultati) che dell’efficienza (in
termini di gestione della memoria e tempi di esecuzione). Gli esiti principali sono brevemente
discussi nel capitolo 5.
5
Risultati del test di fattibilità
In quanto segue riportiamo in estrema sintesi i principali risultati conseguiti nel test
comparativo di survey/R e GENESEES/SAS sul problema di calibrazione dell’indagine FOL.
5.1 Efficacia
Il modo più semplice ed immediato per valutare l’efficacia della funzionalità di calibrazione di
survey/R, usando GENESEES/SAS come benchmark, consiste nel confrontare gli oltre 70.000
pesi finali ottenuti, a partire dai dati dell’indagine FOL, con i due sistemi.
Nello scatter plot di Figura 1 sono riportati in ascissa i pesi calibrati calcolati con il sistema di
benchmark GENESEES/SAS ed in ordinata le differenze relative fra i pesi in ascissa e quelli
calcolati con il sistema survey/R. La scala dell’asse delle ascisse fornisce immediatamente la
sensazione di un ottimo accordo fra i due software.
6
Figura 1: Scatter plot (in ordinata i pesi calibrati da GENESEES/SAS, in ascissa le
differenze relative fra i pesi in ascissa e quelli calcolati con il sistema survey/R)
Una valutazione più precisa della misura di tale accordo può essere ricavata dallo studio delle
distribuzioni delle differenze relative fra i pesi prodotti in output dai due software. In Figura 2 è
riportata la sintesi della distribuzione delle differenza relative ottenuta usando la funzione
summary di R.
La massima differenza relativa fra il peso finale attribuito da GENESEES/SAS ad un arbitrario
record del data set di Forze Lavoro ed il corrispondente peso calcolato da survey/R è di ordine
10-7 (la media addirittura di ordine 10-10). E’, per conseguenza, lecito asserire che i risultati
prodotti dai due software sono, a tutti gli effetti pratici, identici.
> summary(abs(pesi_GENESEES-pesi_SURVEY)/pesi_GENESEES)
Min.
1st Qu.
Median
Mean
3rd Qu.
Max.
8.405e-16
7.460e-12
2.326e-11
5.590e-10
1.189e-10
1.086e-7
Figura 2: Sintesi della distribuzione delle differenza relative fra i pesi calibrati
da GENESEES/SAS e survey/R
5.2 Efficienza
La funzione cui è demandata, nel package survey, la soluzione del problema di calibrazione
(nella formulazione generale espressa nelle equazioni (1) e (2) della sezione 3.1) è la funzione
calibrate. L’esito dei test di efficienza della funzione calibrate è sintetizzato nella Tabella 1:
righe successive della tabella si riferiscono a versioni cronologicamente successive della
funzione.
7
In ambiente server, i primi tentativi di invocazione della calibrate sui dataset completi
dell’indagine FOL non sono andati a buon fine. Il comportamento dell’applicazione era
scoraggiante: dopo esser stata attiva per circa 4 giorni ed aver compiuto le 50 iterazioni di
default, la calibrate terminava senza convergere. Tale circostanza appariva preoccupante per
due ragioni concettualmente distinte: (i) la mancata convergenza dell’algoritmo di NewtonRaphson, nonostante il problema di calibrazione fosse certamente compatibile ed il numero di
iterazioni effettuate congruo; (ii) l’estrema lentezza dell’applicazione, nonostante la cospicua
dotazione di RAM e CPU del server.
Per individuare la causa della mancata convergenza è stato necessario procedere ad una
analisi puntuale del codice della calibrate. Ciò ci ha condotto all’individuazione di un bug del
programma: un errore commesso nel calcolo della derivata prima della funzione di calibrazione
associata alla distanza logaritmica. L’errore in questione degradava a tal punto la velocità di
convergenza dell’algoritmo di Newton-Raphson da renderlo, a tutti gli effetti, inutilizzabile.
La correzione del bug ha portato alla scrittura di una nuova funzione calibrate (“calibrate
corretta” in Tabella 1) che è stata sostituita a quella originariamente fornita dal package survey.
Il tempo di esecuzione della nuova calibrate su server è risultato di circa 2 ore e mezza, e la
convergenza è stata raggiunta in 5 iterazioni. In ultimo, il bug individuato è stato segnalato
all’autore di survey che ha provveduto a “fissarlo” nella successiva release del package.
La correzione del bug, sebbene abbia velocizzato l’algoritmo risolutivo della calibrate
(diminuendo il numero di iterazioni necessarie per ottenerne la convergenza), non si è rivelata
sufficiente a risolvere alla radice il problema della “lentezza” della funzione. Anzi, lo studio del
comportamento della calibrate in ambiente PC ha confermato in modo evidente come la
funzione non fosse dispendiosa solo in termini di cicli CPU, ma anche – e in certo senso più
gravemente – in termini di memoria. In effetti, il tentativo di invocare su PC la calibrate (con
gli stessi parametri utilizzati in ambiente server) ha portato alla saturazione della memoria
disponibile (si veda la prima riga della Tabella 1).
Funzione
Ambiente
Tempo
R calibrate originaria
PC
R calibrate originaria
Server
R calibrate corretta
PC
R calibrate corretta
Server
155 minuti
R calibrate_iter
PC
84 secondi
R calibrate_iter
Server
86 secondi
–
> 4 giorni
–
Tabella 1: Tempi di esecuzione della funzione calibrate del package survey sui dati
dell’indagine FOL
La ricerca di una soluzione in grado di garantire, anche in ambiente PC, l’uso della calibrate,
ci ha condotto a riconsiderare la struttura algebrica del problema di calibrazione. L’esito
dell’analisi si è concretizzato nella progettazione di una versione iterata della funzione (indicata
con il nome “calibrate_iter” in Tabella 1). Per la precisione, in virtù della natura delle
variabili ausiliarie e dei vincoli usati nell’indagine FOL, è stato possibile decomporre l’originale
problema di calibrazione in sottoproblemi indipendenti, ciascuno dei quali relativo ad una sola
sotto-popolazione regionale. I benefici di tale decomposizione del problema riguardano sia la
memoria che il carico computazionale, e, quindi, il tempo di elaborazione. In effetti la
calibrate_iter, oltre ad evitare la saturazione della memoria del PC, si è rivelata
particolarmente efficiente, ottenendo il risultato atteso in circa 90 secondi; il tempo di
esecuzione registrato in ambiente server è confrontabile con quello osservato in ambiente PC.
8
In GENESEES/SAS l’esecuzione della funzione riponderazione, con input costituito dal dataset
dell’indagine FOL, ha comportato un tempo totale di esecuzione di circa 9 minuti (in ambiente
PC). Poiché il processo di calibrazione eseguito da GENESEES/SAS è anch’esso iterativo, il
tempo in esame deve essere paragonato a quello della calibrate_iter in ambiente PC. Da
tale confronto risulta che la calibrate_iter è circa 6 volte più veloce della funzione di
riponderazione del sistema di benchmark. La differenza di performance è imputabile a
molteplici fattori, che includono certamente la diversa natura dei linguaggi di programmazione
utilizzati (R e SAS/IML) e la diversa progettazione del software. In più va ricordato che la
funzione di riponderazione di GENESEES/SAS, oltre a calcolare i pesi finali del processo di
calibrazione, produce anche data set e report di diagnostica (funzionalità, quest’ultima, non
prevista dalla calibrate).
In conclusione, l’esito del test di fattibilità si è rivelato positivo. Al prezzo di un numero
contenuto di interventi mirati di programmazione è stato, infatti, possibile ottenere con il
software survey/R risultati comparabili (se non addirittura superiori) a quelli del sistema di
benchmark (sia in termini di efficacia, sia in termini di efficienza).
6
Il progetto di migrazione di GENESEES
L’esito positivo del test di fattibilità condotto sulla fase di calibrazione ed analoghi,
incoraggianti risultati nel calcolo di stime ed errori standard, hanno consentito di avviare un
progetto più ambizioso: l’effettiva migrazione del sistema GENESEES da SAS ad R. Obiettivo
minimo di tale migrazione è il progetto e lo sviluppo di un sistema interamente basato su R
(che indicheremo, in quanto segue, col nome GENESEES/R) in grado di replicare le funzionalità
principali di GENESEES/SAS.
E’ chiaro che la migrazione di un sistema complesso come GENESEES dall’ambiente SAS
all’ambiente R, dotato di caratteristiche tecnologiche e paradigma di programmazione
profondamente diversi, non possa realisticamente ridursi ad una operazione di semplice
traduzione di codice. Occorre, al contrario, ripensare le soluzioni adottate e riprogettare,
almeno parzialmente, l’applicazione. Da questo punto di vista la migrazione di GENESEES può
essere riguardata come una occasione per re-ingegnerizzare il software, tentando di
migliorarne la qualità complessiva. La Tabella 2 riporta in modo schematico le caratteristiche
dell’originario sistema GENESEES/SAS e quelle del progetto del sistema migrato GENESEES/R.
Caratteristiche
GENESEES/SAS
GENESEES/R
LINGUAGGIO
SAS
R
ARCHITETTURA
STANDALONE
STANDALONE
INTERFACCIA
GUI
GUI
MONOLITICO ( – )
MODULARE
LEGACY
(–)
ESTENDIBILE ( + )
EFFICIENZA
(=)
EFFICIENZA
QUALITA’ DEL SOFTWARE
(+)
(=)
Tabella 2: Principali caratteristiche del sistema GENESEES/SAS e del progetto GENESEES/R
Riteniamo che il paradigma funzionale di R spinga intrinsecamente ad uno stile di
progettazione del software più spiccatamente modulare di quanto capita col SAS. Tale
caratteristica si riflette in modo naturale in una maggiore estendibilità e manutenibilità dei
programmi, al prezzo di una trascurabile perdita di efficienza.
9
In quanto segue illustriamo, seppur in modo estremamente semplificato, tre interventi di
reingegnerizzazione intrapresi nel progetto di migrazione. I primi due sono volti ad aumentare
l’usabilità del sistema migrato rispetto a quello originario, il terzo ad estenderne le funzionalità
mediante l’introduzione di nuovi metodi statistici.
6.1 Interazione con l’utente a maggiore livello di astrazione
Nella Figura 3 è rappresentata in modo semplificato una sessione di lavoro con il sistema
GENESEES/SAS. Come si vede, gli utenti interagiscono con il sistema in due specifici punti del
flusso di elaborazione: “a monte” ed “a valle” del processo di calibrazione. Concentriamo, per il
momento, l’attenzione sull’interazione “a monte”. Essa è necessaria perché l’utente possa
fornire al programma di calibrazione i dati da elaborare. D’altra parte, la funzione di
calibrazione di GENESEES/SAS non è in grado di acquisire in input direttamente i dati
campionari di indagine. L’utente deve, al contrario, farsi carico di trasformare i dati campionari
di indagine in opportune strutture dati prescritte dal sistema. Tipicamente questa incombenza
richiede all’utente di sviluppare appositi programmi SAS senza ricevere dal sistema alcun
supporto.
Stime ed errori di campionamento
errore
errore
standard relativo %
1531592,64 9948,24
0,65
87612,3 1827,89
2,09
Stime118096,89
ed errori di campionamento
3441,11
2,91
358668,86 4458,85
1,24
errore
errore
variabile
stima 2648,92
88532,33
2,99
standard relativo %
87612,3 1827,89
2,09
Y1
1531592,64 9948,24
0,65
118096,89
3441,11
2,91
Y2
87612,3 1827,89
2,09
358668,86
4458,85
1,24
Stime118096,89
ed errori
di 3441,11
campionamento
Y3
2,91
88532,33
2648,924458,85 2,99 1,24
Y4
358668,86
errore
errore
358668,86 4458,85
1,24
Y5
88532,33
2,99
variabile
stima 2648,92
standard
relativo %
88532,3387612,3
2648,921827,89
2,99 2,09
Y6
Y1
1531592,64 9948,24
0,65
Y7
118096,89 3441,11
2,91
Y2
87612,3 1827,89
2,09
Y8
358668,86 4458,85
1,24
Y3
118096,89 3441,11
2,91
Y9
88532,33 2648,92
2,99
Y4
358668,86 4458,85
1,24
Y10
358668,86 4458,85
1,24
Y5
88532,33 2648,92
2,99
Y11
88532,33 2648,92
2,99
Y6
87612,3 1827,89
2,09
Y7
118096,89 3441,11
2,91
Y8
358668,86 4458,85
1,24
Y9
88532,33 2648,92
2,99
Y10
358668,86 4458,85
1,24
Y11
88532,33 2648,92
2,99
variabile stima
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
Y9
Y10
Y11
GENESEES/SAS
DATI
INPUT
CALIBRAZIONE
DATI
OUTPUT
STIME
ED
ERRORI
DATI
INPUT
Figura 3: Rappresentazione schematica del flusso di lavoro del sistema GENESEES/SAS
Il punto che qui preme sottolineare è che questa modalità di interazione con l’utente presenta
almeno due serie controindicazioni. La prima è che la corretta costruzione dei dataset di input
richiede all’utente finale di studiare, comprende e rispettare una notevole quantità di istruzioni
complesse (si consideri che tali istruzioni occupano circa 50 pagine del manuale della funzione
di riponderazione di GNESEES/SAS). La seconda è che la necessità di sviluppare programmi
SAS “esterni” al sistema, senza ricevere da esso alcun supporto, aumenta significativamente il
rischio di errori nel flusso di lavoro.
Nel progetto del sistema migrato GENESEES/R l’interazione con l’utente avviene a maggiore
livello di astrazione. L’utente non ha più bisogno di manipolare i dati campionari di indagine: si
limita a passarli al software così come sono, corredandoli di metadati che descrivono in modo
simbolico (i) il disegno di campionamento ed (ii) il modello di calibrazione; è il sistema stesso,
a questo punto, a trasformare, in modo trasparente all’utente, i dati di indagine nelle strutture
necessarie a risolvere il problema di calibrazione. Queste complesse operazioni, guidate dai
10
metadati di input, sono facilmente programmabili in R in virtù della potenza del linguaggio
nell’elaborazione di informazioni simboliche.
6.2 Integrazione di funzionalità
Passiamo a considerare l’interazione che l’utente di GENESEES/SAS ha con il sistema “a valle”
del processo di calibrazione. Il punto nodale è, in questo caso, che il modulo di calcolo stime ed
errori non è in grado di acquisire in input direttamente i dataset prodotti in output dal modulo
di calibrazione. E’, ancora una volta, l’utente a doversi far carico di svolgere tutte le operazioni
di trasformazione dati necessarie. In termini sintetici: le due funzionalità fondamentali di
GENESEES/SAS, pur contenuti nel medesimo sistema software, non sono realmente integrate.
Il progetto del sistema migrato GENESEES/R integra effettivamente le due funzionalità,
sgravando l’utente dagli oneri menzionati e garantendo un significativo miglioramento
dell’usabilità del sistema e della sua robustezza rispetto a possibili errori.
calmodel=~(X+Y:Z)
partition=~D1:D2
...
Stime ed errori di campionamento
errore
errore
standard relativo %
1531592,64 9948,24
0,65
87612,3 1827,89
2,09
Stime118096,89
ed errori di campionamento
3441,11
2,91
358668,86 4458,85
1,24
errore
errore
variabile
stima 2648,92
88532,33
2,99
standard relativo %
87612,3 1827,89
2,09
Y1
1531592,64 9948,24
0,65
118096,89
3441,11
2,91
Y2
87612,3 1827,89
2,09
358668,86
4458,85
1,24
Stime118096,89
ed errori
di 3441,11
campionamento
Y3
2,91
88532,33
2648,924458,85 2,99 1,24
Y4
358668,86
errore
errore
358668,86 4458,85
1,24
Y5
88532,33
2,99
variabile
stima 2648,92
standard
relativo %
88532,3387612,3
2648,921827,89
2,99 2,09
Y6
Y1
1531592,64 9948,24
0,65
Y7
118096,89 3441,11
2,91
Y2
87612,3 1827,89
2,09
Y8
358668,86 4458,85
1,24
Y3
118096,89 3441,11
2,91
Y9
88532,33 2648,92
2,99
Y4
358668,86 4458,85
1,24
Y10
358668,86 4458,85
1,24
Y5
88532,33 2648,92
2,99
Y11
88532,33 2648,92
2,99
Y6
87612,3 1827,89
2,09
Y7
118096,89 3441,11
2,91
Y8
358668,86 4458,85
1,24
Y9
88532,33 2648,92
2,99
Y10
358668,86 4458,85
1,24
Y11
88532,33 2648,92
2,99
variabile stima
GENESEES/R
CALIBRAZIONE
STIME
ED
ERRORI
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
Y9
Y10
Y11
Figura 4: Rappresentazione schematica del flusso di lavoro del sistema GENESEES/R
Senza entrare in dettagli di natura tecnica, osserviamo come l’integrazione delle funzionalità di
calibrazione e calcolo stime ed errori non si sia risolta in una banale ri-direzione di input: il
risultato ha, al contrario, richiesto delicate modifiche dell’algoritmo di calibrazione.
Nella Figura 4 è rappresentata in modo semplificato una sessione di lavoro con il sistema
GENESEES/R. Il confronto con la Figura 3 rende evidenti i benefici effetti, in termini di
semplicità, usabilità e robustezza del software, determinati dalle attività di reingegnerizzazione
documentate nelle sezioni 6.1 e 6.2.
6.3 Aggiunta di nuove funzionalità
Nel progetto del sistema GENESEES/SAS è stato ritenuto opportuno introdurre, accanto alla
tradizionale funzione di stima degli errori implementata in GENESEES/SAS, un nuovo modulo
software dedicato alla stima della varianza campionaria mediante il metodo Delete-A-Group
Jackknife (DAGJK). A questo scopo uno degli autori della relazione (Diego Zardetto) ha
sviluppato un apposito package R di nome EVER (Estimation of Variance by Efficient
Replication).
Il metodo DAGJK, proposto da Philip Kott, appartiene alla classe dei metodi di replicazione del
campione e può essere visto come una variante computazionalmente efficiente del tradizionale
11
metodo jackknife stratificato. La necessità di costruire una replica dei pesi originali per ogni
PSU inclusa nel campione rende, di fatto, irrealistico il ricorso al metodo jackknife tradizionale
per indagini “complesse e grandi” (decine di migliaia di PSU in strati numerosi e di dimensione
molto variabile). L’utilizzabilità pratica del metodo DAGJK poggia, al contrario, sulla capacità
del metodo di costruire – per una vasta gamma di stimatori e di disegni di campionamento –
stime degli errori standard (quasi) non distorte anche con un piccolo numero (qualche decina)
di repliche.
In aggiunta alla sua peculiare efficienza computazionale, il metodo DAGJK gode dei principali
vantaggi comuni ai più diffusi metodi di replicazione del campione. I più significativi, rispetto al
tradizionale metodo “analitico” (basato sulla linearizzazione di Taylor e sulla teoria degli
stimatori di regressione generalizzata) implementato in GENESEES/SAS, sono i seguenti:
- Minore complessità matematica
- Procedura di calcolo indipendente dalla forma funzionale dello stimatore e dal disegno di
campionamento
- Utilizzabile anche per stimatori non-analitici (es. stime di povertà)
7
Stato di avanzamento del progetto
La “sperimentazione” finalizzata a testare la fattibilità della migrazione da SAS ad R del
sistema GENESEES ha avuto inizio a maggio 2006 e si è conclusa a maggio 2007. In parallelo
è stato intrapreso, da gennaio 2007 a ottobre 2007, il progetto di migrazione verso R della
funzionalità di calibrazione. La migrazione della funzionalità di calcolo delle stime e degli errori
(con il metodo “analitico” di stima della varianza) è tuttora in corso. Lo sviluppo del package
EVER ha avuto inizio ad agosto 2007 ed il rilascio della prima release del software è previsto
per aprile-maggio 2008. Ad oggi non è ancora stato aperto un progetto per la realizzazione
della GUI di cui il sistema GENESEES/R dovrà essere corredato. Una versione beta del sistema,
priva di interfaccia grafica, potrebbe essere resa disponibile per luglio 2008.
8
Conclusioni
Le attività sinteticamente descritte nella presente relazione costituiscono, in Istat, una delle
prime esperienze di utilizzo di R per la realizzazione di funzionalità standard nei processi di
produzione. Il giudizio che ne deriva, in merito alla possibilità concreta di sostituire – in
un’ottica di medio periodo – il SAS con R, è pienamente positivo. Sebbene, infatti, alcuni
problemi di R non siano stati, ad oggi, completamente superati (ci riferiamo, in particolare, alla
gestione della memoria), ci sembra che essi siano più che compensati dai “punti di forza” del
sistema: (i) l’accesso al codice sorgente dei package, importante per la personalizzazione e
l’ottimizzazione delle soluzioni applicative e (ii) le grandi potenzialità di R come linguaggio di
programmazione (elevato livello di astrazione, elaborazione di informazioni simboliche,
semplicità di programmazione e tempi di sviluppo contenuti).
12
Riferimenti bibliografici
Scannapieco, M., Zardetto, D., Barcaroli, G. (2007) “La Calibrazione dei Dati con R: una
Sperimentazione sull'Indagine Forze di Lavoro ed un Confronto con GENESEES/SAS”,
Contributi Istat n. 4,
http://www.istat.it/dati/pubbsci/contributi/Contributi/contr_2007/2007_4.pdf.
Lumley, T. (2006) “survey: analysis of complex survey samples”, R package version 3.6-5,
http://cran.at.r-project.org/web/packages/survey/index.html.
Lumley, T. (2004) “Analysis of complex survey samples”. Journal of Statistical Software 9(1):
1-19.
Zardetto, D. (2008) “EVER: Estimation of Variance by Efficient Replication”, R package version
0.9-6 (to be submitted to CRAN), Istat, Italy,
http://www.istat.it/strumenti/metodi/software/produzione_stime/ever/index.html.
R Development Core Team (2008) “An Introduction to R”, R Foundation for Statistical
Computing, Vienna, Austria,
http://cran.r-project.org/doc/manuals/R-intro.pdf.
R Development Core Team (2008) “R Language Definition”, R Foundation for Statistical
Computing, Vienna, Austria,
http://cran.r-project.org/doc/manuals/R-lang.pdf.
R Development Core Team (2008) “Writing R Extensions”, R Foundation for Statistical
Computing, Vienna, Austria,
http://cran.r-project.org/doc/manuals/R-exts.pdf.
Pagliuca, D. (a cura di) (2005) “Genesees v.3.0., Funzione Riponderazione. Manuale utente ed
aspetti metodologici”, Tecniche e Strumenti, Isat, n. 2.
Pagliuca, D. (a cura di) (2005) “Genesees v.3.0., Funzione Stime ed Errori. Manuale utente ed
aspetti metodologici”, Tecniche e Strumenti, Isat, n. 3.
Gazzelloni, S. (a cura di) (2006) “La Rilevazione sulle Forze di Lavoro: Contenuti, Metodologie,
Organizzazione”, Metodi e Norme, Istat, n. 32.
Särndal C.E., Swensson B. and Wretman J. (1992) “Model Assisted Survey Sampling”, Springer
Verlag.
Deville J.C., Särndal C.E. and Sautory O. (1993) “Generalized Raking Procedures in Survey
Sampling”, Journal of the American Statistical Association, vol.88, 1993.
Kott, Phillip S. (2001) “The Delete-A-Group Jackknife”, Journal of Official Statistics, Vol.17,
No.4, pp. 521-526.
13