All’inizio di quest’anno, il mio manager mi ha inviato un post molto interessante da Data Colada, un post sul blog scritto da tre scienziati comportamentali che esamina le ricerche pubblicate. Gli autori di Data Colada hanno lavorato con un team di ricercatori anonimi e hanno trovato alcune curiose anomalie in un set di dati sul chilometraggio automobilistico utilizzato in un articolo del 2012. Sono responsabile del test della piattaforma Explore Patterns in JMP , che può essere utilizzata per identificare modelli insoliti o imprevisti nei dati. In questo post utilizzo Esplora modelli, insieme ad altri utili strumenti di JMP, per cercare modelli inaspettati o insoliti nei dati sul chilometraggio dell'auto.
Sfondo
Di seguito sono mostrate le prime righe e colonne del set di dati sul chilometraggio dell'auto. Questi dati sono stati raccolti da uno studio in cui è stato chiesto a 13.488 clienti di una particolare agenzia di assicurazioni auto di riportare le loro attuali letture del contachilometri. Le letture riportate dai clienti sono incluse nei dati come colonne da update_car1 a update_car4, poiché ogni cliente ha riportato informazioni per un massimo di quattro auto. I dati contengono anche le letture del contachilometri di ciascun veicolo al momento della prima emissione delle polizze assicurative. Queste colonne sono denominate da baseline_car1 a baseline_car4. Poiché tutte le politiche non sono state emanate contemporaneamente, il tempo trascorso dallo scenario di riferimento all’aggiornamento varia per le osservazioni di questo studio.

Nel post di Data Colada, i ricercatori hanno presentato quattro anomalie riscontrate in questo set di dati. Esaminiamo ciascuno di questi risultati utilizzando JMP.
Anomalia n.1: La distribuzione dei chilometri percorsi è uniforme
Gli autori di Data Colada hanno scoperto che la distribuzione delle miglia percorse era coerente con una distribuzione uniforme che andava da 0 a 50.000 miglia.
Poiché i dati includono una colonna di riferimento e di aggiornamento per le letture del contachilometri di ciascuna automobile, creiamo colonne formula per archiviare le miglia percorse sottraendo i valori di riferimento dai valori aggiornati. In JMP utilizziamo quindi la piattaforma Distribuzione per visualizzare la distribuzione dei valori di riferimento e degli aggiornamenti, nonché i chilometri totali percorsi per ciascuna auto. Considera il rapporto di distribuzione della prima auto per ciascun cliente.

La forma della distribuzione del chilometraggio di riferimento è simile alla distribuzione del chilometraggio aggiornato, con la lettura mediana del contachilometri di circa 26.000 miglia più alta al momento dell'aggiornamento. Questa scoperta non è di per sé sorprendente. Ciò che trovo più interessante riguardo alle letture di riferimento e di aggiornamento è che due partecipanti possedevano veicoli che hanno percorso quasi 1 milione di miglia! Devono avere una meccanica molto buona.
La parte più allarmante del rapporto è la terza distribuzione sopra, che mostra la differenza tra le prime due. La distribuzione delle miglia percorse tra la linea di base e i tempi di aggiornamento sembra essere uniformemente distribuita tra 0 e 50.000 miglia. Non sono presenti valori superiori a 50.000 miglia e ciascun riquadro dell'istogramma contiene all'incirca lo stesso numero di partecipanti. L'ispezione visiva fornisce in questo caso una prova concreta che i dati sono distribuiti uniformemente. Tuttavia, per i dati non così ovvi, è possibile eseguire un test di bontà di adattamento utilizzando l'opzione Fit Beta nella piattaforma di distribuzione .
Lo screenshot seguente mostra la distribuzione delle miglia percorse (aggiornamento – riferimento) per ciascuna delle auto dei partecipanti. Troviamo che ciascuna distribuzione appare uniformemente distribuita tra 0 e 50.000 anche per la seconda, terza e quarta vettura. Sulla base di questo modello di distribuzione, possiamo concludere che i valori del chilometraggio aggiornati avrebbero potuto essere generati aggiungendo valori casuali distribuiti uniformemente ai valori del chilometraggio di base.

Anomalia n. 2: il chilometraggio di base utilizzava l'arrotondamento, mentre il chilometraggio aggiornato no
Gli autori di Data Colada hanno scoperto che il chilometraggio di base aveva molti valori arrotondati al migliaio più vicino mentre il chilometraggio aggiornato non conteneva questo arrotondamento.
I ricercatori di Data Colada hanno studiato l'arrotondamento osservando le ultime tre cifre dei chilometri. Potremmo usare JSL per adottare un approccio simile, ma utilizziamo invece Explore Patterns! Se non hai mai utilizzato Esplora modelli prima, puoi trovarlo selezionando Analizza > Screening.

Dopo aver avviato Esplora modelli per esplorare ogni linea di base e aggiornare la colonna, otteniamo l'output visualizzato nello screenshot seguente. Nel report Modelli univariati, seleziona la linea di base e aggiorna i valori per la prima auto per confrontare i modelli.

Per impostazione predefinita, Esplora modelli include i report per i valori più duplicati in ogni colonna, le esecuzioni più lunghe in ogni colonna e le sequenze duplicate più lunghe in ogni colonna. Per la prima auto posseduta dai partecipanti, non c'è molto da guadagnare dai rapporti Percorsi più lunghi o Sequenze duplicate più lunghe. Tuttavia, il rapporto Valori più duplicati mostra un contrasto interessante. Nei chilometri di riferimento della prima auto posseduta, ci sono molti valori che sembrano essere arrotondati ai 10.000 più vicini. Questo non è necessariamente uno schema inaspettato da trovare; quando mi chiedono il chilometraggio del mio veicolo, rispondo sempre in tono arrotondato.
Il report dei valori più duplicati per i chilometri aggiornati è piuttosto diverso. In questo report sono presenti molti meno duplicati e i duplicati visualizzati non sono arrotondati come i valori di base. Questo è ciò che accadrebbe se le colonne di aggiornamento venissero generate aggiungendo valori casuali distribuiti uniformemente ai valori di base. Pertanto, questo risultato è coerente con l’anomalia n. 1.
Anomalia n. 3 – I dati sono stati inseriti in due caratteri e ciascuna osservazione ha un "gemello" nell'altro carattere
I ricercatori hanno notato che nel file di dati originale le osservazioni venivano registrate utilizzando due caratteri diversi. Attraverso un ordinamento intelligente, i ricercatori hanno scoperto che ciascuna osservazione di base in un carattere corrispondeva a una riga molto simile nell’altro carattere.
Mi congratulo con i ricercatori per aver notato i diversi caratteri e aver adottato questo approccio. Tuttavia, supponiamo che i dati siano tutti nello stesso carattere e che questo campanello d'allarme non sia stato alzato. Possiamo usare JMP per identificare eventuali relazioni curiose tra righe e colonne? Certo che possiamo: dopotutto questo è il blog di JMP.
Possiamo utilizzare Esplora modelli per verificare se esistono relazioni lineari tra colonne per righe contigue. Considera il seguente semplice esempio. Nelle prime quattro righe, le colonne hanno una relazione lineare esatta dove Y=2*X. Nelle tre righe successive, le due colonne hanno nuovamente una relazione lineare esatta dove Y=0,5*X.

Possiamo utilizzare Esplora modelli per cercare relazioni lineari come questa tra le colonne della linea di base. Se non avessimo già notato l'anomalia n. 1, avrebbe senso cercare relazioni lineari anche nelle colonne aggiornate.

Se ci fossero molte relazioni lineari esatte, o forse grandi serie di relazioni lineari, potrebbe essere un segno che i valori in una colonna sono stati generati utilizzando un multiplo di un'altra colonna. In questo caso sono presenti solo poche righe per le quali le colonne della linea di base hanno una relazione lineare esatta. Potremmo utilizzare l'opzione Colora per visualizzare queste celle e verificare eventuali irregolarità, ma per un set di dati di queste dimensioni con molti valori arrotondati, non è sorprendente trovare alcune relazioni lineari.
Utilizzando Esplora modelli, abbiamo esaminato se esistono relazioni lineari sospette tra le righe per due colonne per i valori di base. Tuttavia, i risultati non furono molto utili. Ora cerchiamo anche le relazioni lineari tra le colonne di due righe, sempre per i valori di base. Per fare ciò, dovremo utilizzare Explore Patterns sulla trasposizione dei nostri dati.
Ho utilizzato l'opzione Trasponi in JMP per trasporre i dati in base alle colonne di base, per i partecipanti che hanno riportato il chilometraggio per almeno tre veicoli. Ho escluso le righe in cui i partecipanti avevano due o meno auto poiché queste non avrebbero aiutato a identificare le relazioni lineari.

Nel report Esplora modelli per questi dati trasposti, sono presenti molte relazioni lineari esatte in cui la pendenza è pari a circa uno. Pertanto, ci sono molte righe nella tabella dati originale che hanno una riga quasi gemella di valori di base tra le auto. (Suggerimento: puoi fare clic con il pulsante destro del mouse sulla colonna Pendenza e utilizzare la funzione Seleziona dove per evidenziare tutte le righe in cui la pendenza è vicina a uno. Ci sono 69 coppie in cui la pendenza è compresa tra 0,99 e 1,01).

È possibile selezionare Colora sopra la tabella delle relazioni lineari per colorare tutti i valori in una relazione lineare esatta oppure è possibile fare clic con il pulsante destro del mouse sulla colonna Y per colorare valori specifici. La tabella seguente contiene i valori colorati per le prime tre righe del report Relazioni lineari.

Explore Patterns ha identificato diverse coppie di "gemelli di guida" in cui i valori di chilometraggio di base erano molto simili per tutte le auto, con un'esatta relazione lineare. Potremmo proseguire cercando più coppie che non hanno una relazione lineare esatta ma sono comunque strettamente correlate. Come illustrato nel post di Data Colada, una volta ordinato in base al valore di base per la quarta auto, è facile identificare molti gemelli alla guida.
Anomalia n. 4 – Un font ha molti valori di base arrotondati e l'altro no
I ricercatori hanno scoperto che i valori di base nel carattere Calibri erano arrotondati e i valori nel carattere Cambria non erano arrotondati.
Supponiamo ora di sapere che alcune righe sono state scritte con un carattere e le altre righe con un secondo carattere e che nei nostri dati è presente una colonna con il carattere per ciascuna riga. Potremmo utilizzare Esplora modelli con il nome del carattere come colonna Per.

Come visto nei report Esplora modelli, i valori di chilometraggio di base per le righe nel carattere Calibri hanno molti valori arrotondati, mentre i valori di base per le righe Cambria non sono arrotondati. Poiché ci aspetteremmo che le miglia riportate dai clienti vengano arrotondate, ciò suggerisce che i valori originali riportati erano le righe con il carattere Calibri e che i dati del "gemello di guida" sono stati creati e quindi inseriti nel carattere Cambria.
Conclusione
Ogni volta che acquisisci un nuovo set di dati, probabilmente esegui alcune analisi esplorative e pulizia dei dati. Forse cerchi valori anomali , controlli i dati per i valori mancanti o visualizzi la distribuzione di ciascuna variabile. Spero che questo post ti abbia incoraggiato a prendere in considerazione l'utilizzo di Esplora modelli per verificare la presenza di modelli insoliti nei tuoi dati. Non tutti i modelli che trovi utilizzando Esplora modelli sono la prova che qualcosa è sbagliato o preoccupante, ma l'utilità ti fornisce uno strumento per trovare modelli che giustificano ulteriori indagini.
CIAO @madhu . Grazie per questa domanda, condividerò due soluzioni per fare in modo che i titoli delle colonne per la tabella dei dati trasposti utilizzino questo formato.
Innanzitutto, puoi creare una nuova colonna nella tabella dei dati originale che utilizza la formula vista nello screenshot qui sotto.

Dopo aver creato questa colonna, puoi usarla come colonna Etichetta quando esegui la trasposizione.

Una seconda opzione che puoi utilizzare, poiché hai già creato la tabella dei dati trasposti, è utilizzare JSL per modificare i titoli delle colonne. Per fare ciò, apri la tabella dei dati trasposti, quindi seleziona File > Nuovo > Script e incolla lo script sottostante nella finestra dell'editor di script. L'esecuzione di questo script aggiornerà i titoli delle colonne nel formato desiderato.
dt = Data Table("Transpose of Car Mileage Data");
colNames = dt << Get Column Names(string);
For(i=2, i <= Length(colNames), i++,
Column(dt, i) << Set Name("id=" || char(colNames[i]))
);
Spero che aiuti. Grazie ancora per i tuoi commenti.
CIAO @madhu . È possibile trovare Seleziona dove in Righe > Selezione riga > Seleziona dove.

Tuttavia, se desideri utilizzare JMP in modo interattivo per selezionare queste righe, invece di utilizzare JSL, ti consiglio di aggiungere una nuova colonna e creare una formula per identificare queste righe. Per fare ciò, prova i seguenti passaggi.
- Seleziona Cols > Nuove colonne... dal menu in alto
- Nel menu Nuova colonna selezionare Proprietà colonna > Formula
- Nell'editor di formule, inserisci la formula come di seguito

Quando hai inserito la formula, fai clic su Ok per creare la colonna. Nella nuova colonna, le righe con valore 1 corrispondono a partecipanti con tre o più auto. Puoi selezionare tutte le righe con il valore 1 facendo clic con il pulsante destro del mouse su una riga con il valore 1 e facendo clic su "Seleziona celle corrispondenti" come di seguito.

Per la tua domanda sull'utilizzo di JSL per eseguire questa operazione, un ottimo punto di partenza è esaminare il registro avanzato per trovare JSL che è stato generato per le azioni che hai eseguito in modo interattivo. Ad esempio, lo screenshot seguente mostra il Log dopo aver aperto la tabella dati allegata a questa pagina, creato la nuova colonna formula sopra descritta e trasposto i dati utilizzando le righe selezionate. Puoi salvare lo script dal registro in un nuovo script che puoi eseguire di nuovo in qualsiasi momento.

Spero che questo sia utile. Grazie ancora per aver letto.
CIAO @madhu grazie per aver letto e per la domanda. Per identificare i partecipanti che hanno riportato le miglia per almeno tre veicoli, puoi utilizzare la funzione Seleziona dove di JMP per selezionare queste righe. Quindi, durante la trasposizione dei dati, puoi scegliere di utilizzare solo le righe selezionate. Ecco uno script JSL che seleziona le righe per tutti i partecipanti con tre o più auto e quindi traspone i dati utilizzando solo le righe selezionate.
Data Table( "Car Mileage Data" ) << Select Where(
Sum(Is Missing(:baseline_car1),
Is Missing(:baseline_car2),
Is Missing(:baseline_car3),
Is Missing(:baseline_car4)
) <= 1);
Data Table( "Car Mileage Data" ) << Transpose(
columns( :baseline_car1, :baseline_car2, :baseline_car3, :baseline_car4 ),
Transpose selected rows only( 1 ),
Output Table( "Transpose of Car Mileage Data" )
);