Assegnare per caso: selezione casuale e lista di randomizzazione
In breve
Il riquadro estrae un campione casuale semplice da una lista (numeri da 1 a N o una lista incollata con un identificativo per riga) oppure distribuisce persone in gruppi: con la randomizzazione a blocchi (rapporto dei gruppi, più dimensioni di blocco, eventualmente separatamente per strati) o con dimensioni dei gruppi fisse. Ogni lista si può salvare come CSV o copiare.
Uno strumento didattico, non una randomizzazione di uno studio reale
Il seed è visibile. Chi lo conosce, insieme al metodo, può calcolare in anticipo l’intera lista; non c’è occultamento dell’assegnazione né protocollo. Uno studio reale richiede un sistema approvato, una persona indipendente e il protocollo dell’istituzione. Per questo ogni file esportato inizia con la riga «Strumento didattico - non per studi reali (senza occultamento)», il seed e il metodo.
Seed
Il valore predefinito è 20261008. Lo stesso seed e gli stessi input danno la stessa lista; un altro seed ne dà un’altra. Il seed non viene mai dall’orologio. Con gli strati ogni strato ha un proprio flusso (numero dello strato da 1): la lista di uno strato non cambia quando un altro strato diventa più grande.
Blocchi
- Un blocco contiene ogni gruppo tante volte quanto il rapporto richiede (con 1:1 e dimensione del blocco 4, due volte ciascuno), in ordine casuale. Dopo ogni blocco completo i gruppi sono esattamente bilanciati; nel frattempo differiscono al massimo di metà della dimensione del blocco.
- Chi conosce la dimensione del blocco può indovinare l’ultimo caso di ogni blocco. Per questo si mescolano più dimensioni di blocco; i numeri dei blocchi nella tabella mostrano dove finisce un blocco.
- L’ultimo blocco può restare incompleto; i gruppi non sono allora esattamente uguali alla fine. Con «Mantieni completo l’ultimo blocco» la lista diventa più lunga del numero di posti.
- Molti strati piccoli hanno molti blocchi incompleti.
Modalità nascosta: persona per persona
- L’intera lista viene creata all’avvio dalla casualità del browser (non da un seed) e non viene mostrata. Ogni persona riceve il suo gruppo solo quando viene inserito il suo identificativo; non si può annullare, e ogni identificativo conta una sola volta.
- L’impronta (SHA-256 di un salt e della lista) vincola la lista. Va inserita nel protocollo dello studio prima del primo arruolamento. Alla fine la lista viene rivelata insieme al salt; chi ricalcola l’impronta vede che nulla è stato modificato in seguito.
- Limite: la lista è nascosta solo allo sguardo sullo schermo. Chi apre gli strumenti per sviluppatori del browser può leggerla, e chi cancella la memoria del browser perde l’esecuzione. Il registro va quindi salvato durante l’arruolamento. Uno studio reale richiede un sistema autorizzato allo scopo, in cui la persona che arruola non veda mai la lista.
Selezione da una lista
Gli identificativi vengono solo mostrati e mai inseriti in un comando; la lista resta nel browser. Gli identificativi doppi non vengono rimossi (altrimenti una persona avrebbe una probabilità doppia) ma segnalati; le righe vuote vengono saltate. Limiti: al massimo un milione di righe di al massimo 200 caratteri ciascuna. Una selezione sceglie persone, un’assegnazione le distribuisce in gruppi; sono due passi diversi.
Per specialisti
Generatore mulberry32 (32 bit) con sottoflussi mescolati da (seed, numero). Rimescolamento secondo Fisher-Yates; la selezione scambia solo k posti, per cui un milione di righe non costa quasi nulla. I metodi sono definiti, non «corretti» rispetto a uno standard: un altro generatore darebbe altre liste. Le proprietà sono verificate (ogni blocco completo bilanciato, differenza al massimo metà della dimensione del blocco, uguale frequenza di inclusione, uguale frequenza delle sei disposizioni di un blocco 1:1 di dimensione 4 per seed fissi) come pure liste prodotte nello script con una ricostruzione del generatore in R.