Qualche (poche) definizioni preliminari sui data base in una versione per statistici: 1. TABELLA (table) : è la “nostra” matrice dei dati, una riga per ciascuna unità statistica, una colonna per ciascuna variabile misurata sulle unità statistiche. Naturalmente, di norma, in una (o più) colonna della tabella c’è un codice IDENTIFICATIVO UNIVOCO dell’unità (codice, numero progressivo, nome cognome etc..). Tale identificativo viene denominato CHIAVE 2. RECORD: una riga (intera) di una tabella, cioè il (i) codici dell’unità e i valori che le variabili assumono per quella unità 3. CAMPO: una colonna intera della tabella, cioè l’insieme dei valori che una variabile assume nel collettivo 4. DATA BASE: genericamente un insieme di tabelle 5. DATA BASE RELAZIONALE: un insieme di tabelle tra le quali è possibile stabile relazioni di corrispondenza , mediante i codici identificativi o altri campi 6. QUERY, VISTE, REPORT, MASCHERE: strumenti per selezionare, alimentare, visualizzare il contenuto di un data base (vedremo in seguito) Qualche precisazione sulla TIPOLOGIA DELLE RELAZIONI DI CORRISPONDENZA Supponiamo di avere 2 tabelle: una (A) in cui il record è la famiglia (riporta ad esempio il reddito famigliare) e una in cui il record rappresenta tutti i componenti delle famiglie del collettivo (riporta ad esempio l’età di ciascuno). Le due tabelle sono collegate mediante una CHIAVE che è l’identificativo della famiglia (un numero) che è presente sia in A che in B. MA mentre in A i record hanno un identificativo univoco (un numero diverso per ogni famiglia), in B più record condividono lo stesso identificativo di famiglia (sono i componenti di un unico nucleo famigliare). Questo tra l’altro significa che per identificare univocamente i record di B ho bisogno di un’altra chiave (per esempio un numero d’ordine all’interno del nucleo: primo componente, secondo componente….). Naturalmente le tabelle hanno un numero di record diverso. TIPOLOGIA DELLE RELAZIONI DI CORRISPONDENZA (Vedremo presto un esempio) TRA LE 2 TABELLE (A e B) esiste una relazione che si presenta in due modi: 1. UNO A UNO: ad ogni record di A corrisponde (o può corrispondere) un numero di record di B compreso tra 0 e 1 (esempio: ad ogni componente corrisponde una e una sola famiglia) In questo caso le due tabelle hanno una chiave comune che sarà l’identificativo della famiglia e assocerò ogni componente alla famiglia di cui fa parte sulla base di questa chiave. Per esempio posso sapere quale reddito famigliare caratterizza ciascun componente. La tabella derivata avrà tanti record quanti sono i COMPONENTI DI TUTTE LE FAMIGLIE. 2. UNO A MOLTI (MOLTI A UNO): ad ogni record di A(B) corrispondono (o possono corrispondere) un numero di record di B(A) 0 (esempio: ad ogni famiglia corrispondono più componenti) In questo caso utilizzerò ancora la chiave comune “famiglia” per accoppiare le tabelle, ma la tabella derivata avrà tanti record quante sono le FAMIGLIE, ciò implica che le informazioni della tabella B vanno in qualche modo sintetizzate. Ad esempio posso contare quanti record di B hanno la stessa chiave, cioè accoppiare il reddito con il NUMERO di componenti. Oppure calcolare l’età media o quella massima, oppure riportare SULLO STESSO RECORD tutte le età dei componenti Ancora sulla TIPOLOGIA DELLE RELAZIONI DI CORRISPONDENZA Nell’esempio utilizzato, non rimangono record “isolati” cioè non accoppiati (ogni componente ha una famiglia e ogni famiglia ha almeno un componente) Ma non è necessariamente così. Ad esempio la relazione Figli Padre coabitante È una relazione UNO a UNO, ma qualche figlio può non coabitare col padre Mentre la relazione Padre coabitante Figli E’ una relazione UNO a MOLTI ma può esiste un padre che non ha figli coabitanti X= Padri XY Coabitanti Y= Figli Si tratta di decidere se nella tabella derivata ci debba essere X, Y , XY o XY, tranne che per l’intersezione si avranno record “non accoppiati” cioè con campi “vuoti” Accesso ai metadati • Ricerca Google: “banca italia indagine sui bilanci delle famiglie” https://www.google.it/?gws_rd=ssl#q=banca+d%27italia+indagine+sui+bilanci+delle+famiglie • Documentazione per l'utilizzo dei microdati • Indagine sul 2012 • Descrizione degli archivi Scegliamo di lavorare sui file: CARCOM caratteristiche dei componenti la famiglia RFAM redditi famigliari RISFAM risparmio e consumo famigliare RICFAM attività passività della famiglia (patrimonio) Gli ultimi 3 contengono dati per famiglia, il primo per componente Accesso ai dati • Distribuzione dei microdati • Indagine sul 2012 - ASCII Importazione dati dal file di testo .csv: “Dati esterni””File di testo””Selezionare l’origine e la destinazione dei dati”OK Specifiche di importazione: “Delimitato””Avanti”Check su ”Nomi di campo nella prima riga” ”Avanzate”in “separatore decimali” inserire “.” (punto)”OK” ”Avanti” ”Avanti” check su “nessuna chiave primaria” ”Avanti” ”Fine” File da importare: CARCOM12.csv RFAM12.csv RICFAM12.csv RISFAM12.csv RPER12.csv Dati anagrafici sui componenti Conto del reddito per le famiglie Conto patrimoniale per le famiglie Consumi e risparmio per le famiglie Reddito dei componenti Chiave: NQUEST NORD Chiave: NQUEST Chiave: NQUEST Chiave: NQUEST Chiave: NQUEST NORD Semplifichiamo la tabella CARCOM12, creiamo una QUERY (tabella virtuale) che contenga solo: CLETA5 = classe di età (1=fino a 34 anni, 2=35-44, 3=45-54, 4=55-64, 5=oltre 65) NCOMP = numero di componenti della famiglia NPERC = numero di percettori della famiglia PERC = percettore di reddito Q = status del lavoratore (1=dipendente, 2=autonomo, 3=condiz. non profess.) Naturalmente anche le chiavi NQUEST e NORD Istruzioni di menù: “Crea””Struttura Query”Selezionare “CARCOM12””Aggiungi” ”Chiudi” Compilare (selezionando trascinando i campi di CARCOM nella parte inferiore del modulo in modo da ottenere la impostazione seguente: Da menù: “Esegui” ! Risultato: Chiudere la query con “X” Rispondere “Si” alla richiesta di salvataggio Inserire il nome: “COMP_RID” A questo punto la query “COMP_RID” è una tabella (virtuale) inserita nel data base e può essere trattata come una Tabella quasiasi Creiamo 2 nuove tabelle che contengono le label dei campi Q e CLETA5 Istruzioni di menù: “Crea””Struttura Tabella”Inserire i campi “codice” (numerico) e “Label” (testo) Come segue Chiudere (“X”) Alla richiesta salvare come “CODQ” (senza chiave primaria) alimentiamo la tabella: Doppio click su “CODQ”, si apre una griglia su cui possiamo scrivere per inserire i dati 3 righe con codice e label come segue: IDEM PER “CODETA” codici e label per le classi di età Vediamo quanti sono i dipendenti, autonomi e non profess. Creiamo una query di “SELEZIONE” “Crea””Struttura Query”Selezionare “query” e “comp_rid””Aggiungi” ”Chiudi” Selezionare il campo “Q” e inserire nel campo “criteri” il valore “1” così: “ESEGUI” Otteniamo: Quindi ci sono 5380 persone che Hanno codice =1 (dipendente) Dovremmo ripetere l’operazione per tutti I codici ….. Scomodo infatti esiste una scorciatoia La query di AGGREGAZIONE Query di aggregazione: “Crea””Struttura Query”Selezionare “query” e “comp_rid””Aggiungi” ”Chiudi” Selezionare il campo “Q” e il campo NQUEST In alto a dx click su nella parte bassa compare un’altra riga: Click sulla nuova riga e sulla colonna NQUEST scegliere “Conteggio” come segue: “ESEGUI”, Otteniamo: Cioè ci sono 5380 codici=1 (dipendenti) 1326 codici=2 (autonomi) e 13316 codici=3 (non prof.) Cioè è una tavola statistica. Se vogliamo dargli una “forma” più comprensibile aggiungiamo le label Con un JOIN alla tabella con le label: “Crea””Struttura Query”Seelezionare “CODQ” ”Aggiungi” ” Selezionare “query” e “comp_rid””Aggiungi” ”Chiudi” La parte “alta” adesso è così: Dobbiamo dichiarare quali campi mettono in corrispondenza le tabelle: Sono il campo “CODICE” di codq e il campo “Q” di comp_rid. Click su “codice” di codq Trascinare fino a selezionare “Q” di comp_rid Alla fine dell’operazione vedremo questo: Ripetiamo la query di aggregazione inserendo anche il campo “label”: Ricordarsi il click su La parte “bassa” dovrà essere così: “ESEGUI” Otteniamo la tavola con le label: Che può essere salvata, copiata in Word o Excell. Altri tipi di query: CAMPI INCROCIATI tavole a doppia entrata ELIMINAZIONE AGGIORNAMENTO ACCODAMENTO elimina i record che soddisfano un criterio modifica il contenuto dei campi per alcuni o tutti i record aggiunge record Query a campi incrociati: esempio qualifica e classe di età sulla tabella “comp_rid” Occorre costruire una query di aggregazione E poi specificare “a campi incrociati” Indicando cosa si vuole in riga, cosa in colonna e cosa nelle celle delle tavola. La struttura della query sarà la seguente: E questo il risultato: Questa la configurazione per avere le label: E questo il risultato: