Preparazione dataset per analisi con software statistico

mtallon
Salve a tutti,
avrei gentilmente bisogno di un consiglio per come esportare dei dati da un database relazionale al fine di generare un file da analizzare con un software statistico (STATA o SPSS o SAS).
Semplificando al massimo: i dati riguardano uno studio clinico su 1000 pazienti. Ogni paziente può effettuare n visite durante le quali vengono rilevate circa 700 variabili. Ogni visita, associata ad un paziente, è codificata da una tipologia visita (BS=baseline; UP=follow up;FC=final; etc.) e da un numero progressivo. Ipotizzando le varie rilevazioni per una generica variabile “Pressione”, attualmente viene esportato un dataset tipo:

| idPaziente | TipoVisita | NrVisita | Pressione | ... | altra variabile | ... |
| 15 | BS | 01 | 140 | ... | altra variabile | ... |
| 15 | UP | 01 | 120 | ... | altra variabile | ... |
| 15 | UP | 02 | 130 | ... | altra variabile | ... |
| 15 | UP | 03 | 120 | ... | altra variabile | ... |
| 15 | FC | 01 | 120 | ... | altra variabile | ... |
| 44 | BS | 01 | 120 | ... | altra variabile | ... |
| 44 | UP | 01 | 90 | ... | altra variabile | ... |
| 44 | UP | 02 | 100 | ... | altra variabile | ... |
| 44 | UP | 03 | 130 | ... | altra variabile | ... |
| 44 | FC | 01 | 140 | ... | altra variabile | ... |
..................................

Quello che non mi è chiaro è che lo statistico che dovrà analizzare i dati ha chiesto di esportare un dataset del genere:

| idPaziente | BS01_Pressione | UP01_Pressione | UP02_Pressione | UP03_Pressione | FC01_Pressione | ... | BS01_altro |...|
| 15 | 140 | 120 | 130 | 120 |120 | ... | altro valore | ... |
| 44 | 120 | 90 | 100 | 130 |140 | ... | altro valore | ... |
......................................................

Unitamente ad un file “DataDictionary” così composto:

| Variable_Label | TipoVisita | NumeroVisita | Variable_Name |
| Pressione | BS | 01 | BS01_Pressione |
| Pressione | UP | 01 | UP01_Pressione |
| Pressione | UP | 02 | UP02_Pressione |
| Pressione | UP | 03 | UP03_Pressione |
| Pressione | FC | 01 | FC01_Pressione |
..................................................................
Contenente differenti nomi di variabile a seconda della tipologia/numero della visita e con una colonna "label" che li raggruppa....

In questo modo anzichè avere una visita per ogni riga con circa 700 colonne corrispondenti alle variabili rilevate, si avrebbe un paziente per ogni riga ma con circa 700 * nVisite colonne...

C’è una qualche ragione pratica (magari legata al software statistico utilizzato?) per volere un dataset del genere? Oppure è una complicazione inutile?
Grazie in anticipo,
Marco

Risposte
bassi0902
In statistica generalmente i dati si raggruppano in forma matriciale, una matrice $n \times p$ per l'esattezza, dove $n$ é il numero di unitá statistiche (in questo caso la singola persona, ma possono essere anche diverse osservazioni dello stesso soggetto in diversi istanti di tempo) e $p$ é il numero di covariate (variabili osservate per unitá).

Questa notazione é piuttosto standard, e i maggiori software statistici la usano. Nel tuo caso hai osservazioni multiple dello stesso soggetto, che peró é considerato una singola unitá statistica (questo puó anche non accadere, specialmente se hai un solo soggetto osservato in diverse situazioni), quindi direi che é lecito apportare questa modifica al tuo dataset.
Non penso che sia un grosso lavoro, perché ad esempio con SPSS o R puoi raggruppare facilmente righe in base all´id del paziente.

mtallon
"bassi0902":
In statistica generalmente i dati si raggruppano in forma matriciale, una matrice $ n \times p $ per l'esattezza, dove $ n $ é il numero di unitá statistiche (in questo caso la singola persona, ma possono essere anche diverse osservazioni dello stesso soggetto in diversi istanti di tempo) e $ p $ é il numero di covariate (variabili osservate per unitá).

Questa notazione é piuttosto standard, e i maggiori software statistici la usano. Nel tuo caso hai osservazioni multiple dello stesso soggetto, che peró é considerato una singola unitá statistica (questo puó anche non accadere, specialmente se hai un solo soggetto osservato in diverse situazioni), quindi direi che é lecito apportare questa modifica al tuo dataset.
Non penso che sia un grosso lavoro, perché ad esempio con SPSS o R puoi raggruppare facilmente righe in base all´id del paziente.


Ciao, innanzitutto grazie per la risposta molto chiara.
Forse però non sono riuscito a spiegare bene il mio dubbio/esigenza. Non sono io che devo analizzare i dati con SPSS o R: io devo semplicemente fornire il dataset ad uno statistico. Poichè il primo dataset di esempio indicato è il frutto di complesse operazioni di elaborazione (trasposte e cose varie, non sto qui a spiegare perchè) mi chiedevo se, visto che mi confermi che con R o SPSS è relativamente semplice effettuare dei raggruppamenti, non fosse per me più sensato fornire allo statistico il dataset già così come è (considerando quindi la visita come singola unità statistica, piuttosto che perdere tempo a rielaborare i dati di partenza. Adesso praticamente gli passerei un file con circa 10.000 righe (le visite, circa 10 a a paziente per 1000 pazienti) e circa 700 colonne (le variabili registrate ad ogni visita), mentre lui vorrebbe un file con 1000 righe (i pazienti) e 7000 colonne (le varie variabili...). Quello che non riesco ad immaginare è come possa lui riassociare le osservazioni multiple della stessa variabile che avrebbe nomi diversi per ogni visita... spero di essermi spiegato meglio...

axpgn
A me sembra più logico il tuo punto di vista però più che una questione statistica mi pare solo una questione di chi ha maggior potere contrattuale ... :wink:

mtallon
"axpgn":
A me sembra più logico il tuo punto di vista però più che una questione statistica mi pare solo una questione di chi ha maggior potere contrattuale ... :wink:


Secondo il mio capo lo statistico che sta a Londra NON sa usare il software (STATA in questo caso) e quindi si è "inventato" questa cosa. Io poi, come si dice, attacco l'asino dove vuole il padrone.. quindi se devo ricodificare i nomi di tutte le variabili lo faccio, volevo solo CAPIRE se avesse senso o logica fare una cosa del genere visto che in quel modo da 700 variabili arriviamo a 7000... sinceramente è la prima volta che mi capita una richiesta del genere, fino ad oggi in oltre 10 anni di esperienza ho sempre fornito i dati come il primo dataset e poi è stato chi li ha analizzati ad aver eventualmente trasposto le righe in colonne, ecco perchè mi chiedevo se l'esigenza di averli nell'altro modo fosse un limite del software statistico (visto che sono arrivati a dirmi che non sono in grado di gestire un database relazionale...)

axpgn
Non sono un esperto ma come la penso l'ho scritto prima ... :D

Comunque può essere che non abbiano un sw adatto oppure che non siano in grado di usarlo per bene ma anche che sia più efficiente farlo fare a voi ... alla fine però si fa come dice chi comanda (o meglio, chi paga ... :-D )

Se io fossi uno statistico (ma non lo sono ... :D ) e avessi i mezzi (tempo e strumenti) preferirei avere i dati più grezzi possibile (tutti e corretti ovviamente ma grezzi) per poi elaborarmeli come mi pare e piace ...

Cordialmente, Alex

mtallon
"axpgn":
Non sono un esperto ma come la penso l'ho scritto prima ... :D

Comunque può essere che non abbiano un sw adatto oppure che non siano in grado di usarlo per bene ma anche che sia più efficiente farlo fare a voi ... alla fine però si fa come dice chi comanda (o meglio, chi paga ... :-D )

Se io fossi uno statistico (ma non lo sono ... :D ) e avessi i mezzi (tempo e strumenti) preferirei avere i dati più grezzi possibile (tutti e corretti ovviamente ma grezzi) per poi elaborarmeli come mi pare e piace ...

Cordialmente, Alex


Concordo pienamente, anche io preferisco i dati più grezzi possibile.
Per il "chi paga" purtroppo nessuno... è un progetto europeo e io lavoro per un ente pubblico quindi nessun compenso extra.
Però mi sarebbe piaciuto capire se stavo seguendo la strada giusta.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.