Brian Corcoran - Direttore dello sviluppo software, SAS
JMP offre diverse modalità per importare un'ampia gamma di formati di dati nel prodotto. Offre inoltre un numero considerevole di modi per esportare i risultati. Il motivo del primo è abbastanza ovvio. Nel corso degli anni sono stati sviluppati numerosi strumenti per raccogliere e formattare i dati. Nella maggior parte dei casi, questi strumenti non consentono di convertire i dati in tabelle dati JMP. Il motivo dell'esportazione è la necessità di condividere i risultati con un vasto pubblico, molti dei quali non possiedono JMP.
Questo articolo si propone di fornire un piccolo esempio di come utilizzare alcune delle funzionalità di importazione, query ed esportazione di JMP 13. Sebbene per gli screenshot del desktop venga utilizzata la versione Windows, tutte le funzionalità illustrate in questo articolo sono disponibili anche nella versione Mac di JMP. Utilizzerò una forma narrativa perché semplifica la visualizzazione del flusso di lavoro completo end-to-end. Ho scelto un esempio reale verificatosi di recente.
Ho due figli, uno sta per laurearsi e l'altro è al primo anno. Il figlio maggiore ha cambiato corso di studi durante il secondo anno. In quel periodo, abbiamo avuto molte discussioni su possibili carriere. Cosa ti interessa? Dove pensi di poter dare un contributo alla società? Preferisci un lavoro d'ufficio o un lavoro più dinamico? Vuoi viaggiare? E così via.
Il figlio più giovane ha un piano di studi, ma non è del tutto sicuro che sia la scelta giusta. Questa volta, penso, vorrei avere qualche dato in più per aiutarlo nel processo decisionale. Quali sono le prospettive per vari lavori? Potrebbe aiutare mio figlio a confermare la sua scelta attuale o a valutarne altri. Parlando con lui, ha detto che non gli dispiacerebbe conseguire un master, ma probabilmente non vorrebbe intraprendere la strada del dottorato. Probabilmente vorrebbe un campo tecnico, ma è aperto ad altri. Gli piace l'idea di migliorare i processi e magari di camminare mentre lavora. Infine, vuole un lavoro nella fascia alta della scala salariale. OK.
A quanto pare, l'Ufficio di Statistica del Lavoro degli Stati Uniti ha degli strumenti utili in questo senso. Il sito web bls.gov contiene grandi quantità di dati sulla crescita occupazionale e sugli stipendi, sui requisiti di istruzione e persino sulle descrizioni delle mansioni, per dare ai visitatori un'idea di cosa comporti il settore. I dati sono disponibili per il download e per me sono stati un ottimo punto di partenza per esplorare.
Cercando sul sito BLS, la sezione Employment Projections, Occupational Employment Databases mi è sembrata la più pertinente. [1] Il sito web ha un visualizzatore per i dati, ma voglio importarli in JMP. Fortunatamente, c'è un pulsante per scaricare i dati grezzi in formato Excel XLSX. Perfetto. Ho scaricato il file, che è di 500.000.000. Ci sono dodici tabelle nella cartella di lavoro, ma la tabella 1.7 con le offerte di lavoro per il 2014, con proiezioni fino al 2024, sembra la migliore. Uso File->Apri di JMP sulla cartella di lavoro e la procedura guidata di Excel mostra le impostazioni predefinite. Seleziono la Tabella 1.7 in Fogli di lavoro per modificare le impostazioni di importazione:
Anteprima del foglio di lavoro con impostazioni predefinite
Contiene molte informazioni di intestazione. Dopo aver provato i pulsanti di selezione di JMP per le intestazioni di colonna e l'inizio dei dati, arrivo a impostazioni più esteticamente gradevoli. Due righe di intestazioni, le intestazioni iniziano dalla riga 2 e i dati dalla riga 5.
Anteprima del foglio di lavoro con impostazioni modificate
Premo il pulsante Importa e le mie oltre 1000 righe di dati arrivano. BLS fornisce set di dati molto più dettagliati, ma questo set di dati di riepilogo sembra adatto alle mie esigenze. L'unico inconveniente è che la mia tabella JMP sembra avere problemi con la conversione delle colonne in formato carattere. Cosa è andato storto?

Il testo giustificato a sinistra indica il formato del carattere
Se scorro i dati, vedo che alla fine della tabella ci sono quattro righe di note a piè di pagina.

Per impostazione predefinita, JMP analizza le prime 100 righe di dati per determinarne il tipo. Questo garantisce un'anteprima efficiente e reattiva. Tuttavia, una volta completata l'importazione effettiva, TUTTE le righe vengono analizzate e la colonna viene convertita in formato Carattere per evitare perdite di dati. Naturalmente, posso modificare direttamente il tipo di colonna, ma posso anche tornare indietro ed eseguire l'importazione in un modo diverso. Nel pannello "Aggiorna riquadro anteprima", c'è una casella di controllo per "Mostra tutte le righe". Quando la seleziono, non solo vengono mostrate tutte le righe della tabella nel riquadro di anteprima, ma vengono utilizzate tutte le righe per la tipizzazione delle colonne.

Mostra tutte le righe
Ora posso andare alla fine della tabella e specificare che i dati terminino sopra le note a piè di pagina. Devo premere il pulsante "Avanti" nella procedura guidata per accedere alla seconda pagina di opzioni. Faccio clic sull'ultima riga nell'anteprima dati che desidero includere, quindi premo il pulsante verde con il segno più accanto a "I dati terminano con la riga" nel secondo riquadro della procedura guidata. La procedura guidata inserirà il numero di riga corretto e potrò premere nuovamente Importa per formattare correttamente i dati.
Ora ho i miei dati ordinati in JMP, con oltre mille professioni da cercare. Le prime due colonne hanno nomi enormi e confusi, quindi li ho abbreviati in Titolo Matrice e Codice Matrice, seguendo i nomi più lunghi del BLS. Ora, sarebbe bello restringere il campo. La tabella contiene una colonna chiamata Tipo di occupazione che in realtà non sembra affatto tale. Per questa colonna, ogni riga riporta semplicemente "Riepilogo" e "Voce di riga". A quanto pare, Riepilogo significa che la riga si riferisce a tutte le posizioni di un certo tipo, come tutti gli ingegneri. Una "Voce di riga" potrebbe essere un ingegnere meccanico. Quindi, la prima cosa che vorrei fare è rimuovere tutte le righe di riepilogo. Potrei usare un comando come "Seleziona dove" e poi creare un sottoinsieme della tabella per rimuovere le righe di riepilogo. Tuttavia, vorrei applicare filtri aggiuntivi. Query Builder sarebbe l'ideale per questo.
Se non si ha familiarità con JMP Query Builder, si tratta di un potente strumento di query che fornisce un'interfaccia utente grafica per creare query SQL su tabelle dati JMP. Esistono versioni equivalenti con la stessa interfaccia per interrogare database tramite ODBC e tabelle SAS tramite il connettore JMP-SAS. Tuttavia, non è necessario conoscere SQL per utilizzare Query Builder. È possibile creare query tramite l'interfaccia utente e salvarle per riutilizzarle, senza mai dover analizzare il codice SQL sottostante.
Il Generatore di Query per le tabelle JMP si richiama dal menu Tabelle. La finestra di dialogo di selezione delle tabelle che si apre per prima consente di specificare le tabelle da unire per la query. In questo caso, mi interessa solo filtrare i dati, quindi sceglierò la tabella che abbiamo già importato come tabella primaria e andrò avanti.

Selezione della tabella del generatore di query
Selezionando "Crea query" si aprirà la finestra di dialogo principale per la costruzione della query. Le prime due colonne contengono il nome e il codice della professione BLS, ancora in qualche modo denominati "Titolo matrice" e "Codice matrice" . Il codice non mi interessa, quindi lo ignorerò. Non sono ancora soddisfatto del nome della colonna della professione, quindi dopo aver aggiunto la colonna alla query cliccherò su "Nome JMP" per visualizzare una casella di modifica e modificare il titolo del risultato post-query in "Titolo professione" .

Modifica del nome della colonna post-query
Aggiungerò anche la colonna "Tipo di occupazione" perché voglio escludere voci di riepilogo. Aggiungerò "Variazione occupazionale, 2014-2024 - Numero" perché sono interessato al numero effettivo di posti di lavoro aggiunti. La colonna "Crescita percentuale" sembra interessante, ma può essere fuorviante. Una delle professioni in più rapida crescita è quella del personale addetto alla manutenzione delle turbine eoliche. Tuttavia, questa cifra sta crescendo da cinquemila a diecimila, quindi è ancora piccola rispetto a molti settori. Quindi, userò il numero di posti di lavoro aggiunti anziché la crescita percentuale.
Aggiungerò anche lo stipendio annuo mediano , perché era uno dei criteri di mio figlio, così come il livello di istruzione tipico richiesto per l'ingresso . Infine, aggiungerò anche quella che si rivela forse la colonna più importante di tutte: Offerte di lavoro dovute a crescita e sostituzioni, 2014-2024 . A quanto pare, molte professioni hanno una crescita relativamente lenta, ma hanno bisogno di sostituire così tanti lavoratori in pensione che c'è un'enorme opportunità per i lavoratori entry-level. Un esempio è l'ingegneria meccanica. C'è una crescita moderata di 14.600 posti di lavoro (5%) nell'arco di dieci anni. Tuttavia, il totale dei posti di lavoro aggiunti considerando anche le sostituzioni è di 102.500 posti di lavoro sui 277.500 posti di lavoro nella professione! Questo è un rapporto tipico. Gli statistici devono sostituire il 50% delle loro posizioni in quel lasso di tempo. Ecco la selezione delle colonne del Generatore di query prima di effettuare qualsiasi filtro:

Query prima del filtraggio
Vorrei includere una colonna che rifletta la percentuale di sostituzione e crescita occupazionale. Posso selezionare il menu a forma di triangolo rosso accanto a "Colonne disponibili" e selezionare "Aggiungi colonna calcolata". Posso selezionare "Offerte di lavoro..." come numeratore e "Occupazione-2014" come divisore e premere "OK".
Aggiungi colonna calcolata
La colonna è stata creata con il nome Calc1 . Posso usare il menu contestuale per cambiare il nome in "Lavori per totale" e aggiungerlo alle mie Colonne incluse. Lì, posso modificare il campo Formato in "Percentuale". Potrebbe essere necessario espandere il riquadro "Colonne incluse" per visualizzare tutti i campi a causa dei nomi lunghi delle variabili. Ora penso di essere pronto per iniziare a ridurre la ricerca con alcuni filtri.
Per prima cosa, posso trascinare " Tipo di occupazione" nel pannello Filtri. Lì, posso cliccare su "Voce di riga" per includere solo le righe che NON sono di tipo riassuntivo. Ora, filtrerò in base allo stipendio annuo medio , includendo solo le posizioni lavorative superiori a $ 75.000 all'anno. Quando trascino lo stipendio annuo proprio sotto il filtro "Tipo di occupazione" , verrà eseguita un'operazione AND di default. Questo è ciò che desidero. Se si desidera un'operazione OR, è necessario avviarla cliccando sul pulsante OR. Ho anche inserito "Tipo di istruzione necessaria " e ho esteso la selezione a "Laurea triennale", "Laurea magistrale" e il trattino, che significa "non codificato". Infine, noto che molte delle posizioni rimanenti sono di tipo manageriale. È molto improbabile che una persona entry-level ottenga una posizione manageriale, quindi vorrei escludere queste posizioni. Posso farlo con un filtro "Contiene", impostandolo su "Non contiene". Per farlo, trascino la variabile "Titolo matrice". Quindi, tramite il menu a tendina con il triangolo rosso, posso selezionare "Tipo di filtro -> Contiene". Apparirà un elenco a tendina accanto a Titolo , dove potrò selezionare "Non contiene" e poi inserire "Manager". Ora posso fare la stessa cosa per "Dirigente" per rimuovere gli Amministratori Delegati (in calo del 3% in 10 anni, tra l'altro). L'elenco dei filtri al termine della ricerca apparirà così:
Filtri completati
Ora posso premere "Esegui query" e ottenere la tabella con i dati desiderati. Abbiamo ridotto più di mille righe a cinquantotto. Possiamo salvare la query per riaprirla in seguito per eventuali modifiche. La query utilizzata per generare la tabella viene salvata anche come script di tabella all'interno della tabella dati. È possibile modificarla per vedere cosa viene fatto, eseguirla per ricreare i dati o persino modificare la query (attenzione, questo è importante).

Script sorgente nella tabella dati
Ora che ho i miei dati, selezionerò "Titolo di lavoro" come etichetta nei miei grafici. Avvierò Graph Builder e inserirò "Stipendio annuo mediano" per il valore X e "Offerte di lavoro" per Y. Per aggiungere qualche informazione in più, selezionerò "Tipico titolo di studio richiesto" per il colore e imposterò la dimensione dell'indicatore come percentuale, che mostra quanti lavori vengono aggiunti rispetto all'intero bacino di lavoratori, trascinando "Lavori per totale" nell'area di rilascio "Dimensione". Mentre scorrevo questo grafico, ho notato che i lavori nel settore software hanno una posizione piuttosto prominente. Incarno i lavori nel settore software applicativo e di sistema in indicatori a forma di diamante. Posso inviarlo a mio figlio maggiore, laureando in informatica, per rassicurarlo che ha fatto una buona scelta. Il grafico, dopo un'ultima modifica al titolo, appare così:

Output del generatore di grafici in JMP
Decido di inviare questo output a mio figlio maggiore come report HTML interattivo. Sarà facile per lui passare il mouse sui punti ed esplorare i dati mentre lavora o, con altrettanta probabilità, mentre gioca a un gioco sul suo desktop. L'HTML interattivo invia i dati dell'analisi all'interno del report HTML, quindi tenetelo presente se state utilizzando dati sensibili. Posso creare facilmente il report usando File->Salva con nome (File->Esporta su Mac) e selezionando "HTML interattivo con dati" dal menu a discesa "Salva come tipo". Posso inviare questo report autonomo via email a mio figlio, che potrà aprirlo in un browser web e passare il mouse sui punti per visualizzarlo:
Report HTML interattivo in Chrome
Mio figlio più piccolo, il pubblico originale, usa molto il suo iPad. Vorrei inviargli una prima occhiata a questi dati, ma permettergli di esplorarli più a fondo in autonomia. Graph Builder per iPad aprirà una tabella dati JMP e, se trova uno script Graph Builder al suo interno, lo aprirà automaticamente in Graph Builder. Posso preparare la mia tabella dati con un'analisi e poi permettere a mio figlio di esplorare i dati da solo. Voglio enfatizzare maggiormente il numero di posizioni aperte in questo grafico. Inizio con Offerte di lavoro… come Y e Titolo di lavoro come X, con lo stipendio come intervallo di colori. Tuttavia, sembra un po' caotico e disordinato:

Tentativo iniziale
Posso riaprire il pannello di controllo del Generatore di Grafici e con un solo clic sul pulsante Mappa ad Albero ottengo un grafico che mi piace di più. La parte migliore è che è facile passare il mouse su un quadrato e ottenere maggiori informazioni:
Mappa ad albero del generatore di grafici
Prima di inviare la mia tabella dati, devo incorporarvi lo script del Generatore di Grafici. Lo faccio utilizzando il menu a discesa con il triangolo rosso accanto al nodo Struttura del Generatore di Grafici e selezionando Salva Script -> Nella Tabella Dati. Mi viene chiesto di assegnare un nome allo script, che chiamo "Offerte di Lavoro" e premo OK. Questo incorporerà lo script della mappa ad albero nella tabella.
Ora posso salvare la mia tabella dati in una cartella di archiviazione cloud come Dropbox, iCloud o Google Drive. JMP Graph Builder per iPad sa come visualizzare queste caselle e posso scaricare rapidamente la mia tabella sull'iPad. Inizialmente, ci sarà solo una grande icona JMP per selezionare la tabella.
Riquadro di selezione della tabella
Una volta cliccato, l'app Graph Builder aprirà la tabella, cercherà il primo script Graph Builder incorporato nella tabella e visualizzerà tale analisi.
Il grafico si apre automaticamente
Ora che mio figlio ha i dati e la mia analisi iniziale, può sperimentare con i dati e i grafici da solo. Ad esempio, può premere "Filtra" e selezionare una qualsiasi delle colonne da esplorare. Un esempio potrebbe essere filtrare in base a "Tipo di studio richiesto per l'ingresso" per vedere quali posizioni richiedono una laurea triennale e quali una laurea magistrale:

Filtraggio per titolo di studio richiesto
Un'altra caratteristica davvero interessante dell'app Graph Builder è che è possibile provare la maggior parte dei grafici forniti nella versione desktop di Graph Builder. Quindi, se mio figlio volesse visualizzare elementi visivi diversi o persino trascinare colonne diverse per visualizzare i dati in modo diverso, può farlo. Ci sono delle "grip" accanto ai nomi delle colonne per indicare che è possibile trascinarle, e le familiari zone di rilascio di Graph Builder si evidenzieranno mentre si trascinano le variabili. Sono disponibili anche funzionalità di personalizzazione per i marcatori, i colori di sfondo e gli assi. Potrebbe modificare l'output in qualcosa di simile a questo:

Creazione di un nuovo grafico con l'app per iPad
Questo completa il mio lavoro. Ho inviato a ogni figlio un report interattivo da analizzare. Mio figlio, che sta ancora esplorando, potrà creare i propri report e, si spera, ottenere qualche spunto per le sue scelte.
Esistono molti altri modi per importare dati in JMP, tra cui la connessione a SAS, l'importazione di dati di testo, dati SPSS provenienti da altre fonti, dati di sondaggi Triple-S e così via. Consulta la finestra di dialogo "Apri file" per visualizzare le numerose opzioni disponibili e tieni presente che i report generati possono essere condivisi con altri in modo interattivo, anche se il destinatario non dispone di JMP.
[1] Stati Uniti. Ufficio di statistica del lavoro. Proiezioni sull'occupazione . Ufficio di statistica del lavoro, nd Web. 18 agosto 2017. https://www.bls.gov/emp/ep_data_occupational_data.htm