<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao, sto provando a creare uno script dinamico che creerà tabelle di contingenza in un report e statistiche associate basate su assegnazioni di colonne selezionate dall'utente. Questo è il mio primo tentativo di JSL quindi sono un principiante assoluto. Ho la forma utente e la creazione di tabelle di lavoro, ma sto lottando con la comprensione di come fare riferimento alle diverse parti del report generato al fine di fare cose semplici come impostare il formato decimale per la statistica kappa. Alla fine mi piacerebbe anche essere in grado di estrarre i valori dalle tabelle di contingenza visualizzate e fare calcoli e visualizzare i risultati da qualche altra parte nel report. Ho letto degli abbonati e sto cercando di usare questo concetto per scavare nel rapporto, ma non riesco a capire come usarli correttamente. So che ho bisogno di capire bene questo concetto perché l'utente sarà in grado di selezionare da 2 colonne a 10 e quindi lo script può produrre ovunque da 1 a 25 tabelle di contingenza di cui devo tenere traccia e riferirmi a dopo. Quindi so che potrebbe essere meglio assegnare le variabili a ciascuno, ma non riesco a capirlo perché la costruzione delle tabelle è automatizzata da JMP piuttosto che usare qualcosa come un ciclo For. Qualsiasi aiuto è molto apprezzato Mi piacerebbe anche qualsiasi feedback sullo scripting JSL non correlato alle mie specifiche domande (es. Best practice, ecc.) Per scopi di apprendimento.
La parte con cui sto combattendo è la sezione commentata con / * ------ * /. Scusate per il commento eccessivo ma essendo il mio primo script cerco di catturare concetti che il mio futuro può guardare indietro. Sto usando JMP 10.0.1 versione 2 su Windows 7. Non sono riuscito a trovare un set di dati di esempio già in JMP che è tipico di quello con cui sto lavorando, quindi ecco una versione in miniatura:
| SampleID | Assay # 1 | Assay # 2 | Riferimento |
| 307HV093 | Negativo | Negativo | Negativo |
| 307HV093 | Negativo | Negativo | Negativo |
| 307HV094 | Positivo | Positivo | Positivo |
| 307HV094 | Positivo | Positivo | Positivo |
| 307HV095 | Positivo | Positivo | Positivo |
| 307HV095 | Positivo | Positivo | Positivo |
| 307HV096 | Positivo | Positivo | Positivo |
| 307HV096 | Positivo | Positivo | Positivo |
| 307HV097 | Negativo | Negativo | Negativo |
| 307HV097 | Negativo | Negativo | Negativo |
| 307HV098 | Negativo | Negativo | Negativo |
// Basato su "Costruire alberi di visualizzazione" pg 363 di JMP Scripting Guide per JMP 10
chiari globali () ;
Nomi predefiniti qui ( 1 ) ; // tutte le variabili non di ambito sono locali
Se ( è vuoto ( dt = currentdatatable ()) , dt = Aperto ( pickfile ( "Scegli un file di dati di input:" ))) ;
// savedir = pickdirectory ("Scegli una cartella di destinazione per i file di riepilogo:"); // usalo più tardi
dt = currentDataTable () ; nc = ncol ( dt ) ; // ottiene il numero di colonne nella tabella
lbWidth = 130 ;
non implementato = espr ( Nuova finestra ( "Funzionalità non ancora implementata" , << Modale , ButtonBox ( "OK" ))) ; // Non ho idea di cosa << modal faccia
clusterDlg = Nuova finestra ( "Tabelle e statistiche di contingenza 2x2" , // crea una nuova finestra per User Selection of Columns
BorderBox ( sinistra ( 3 ) , superiore ( 2 ) ,
VListBox (
Casella di testo ( "Confronto dei saggi" ) ,
HlistBox (
VListBox (
PanelBox ( "Seleziona colonne" , // box per elencare le colonne disponibili
colListData = ColListBox ( Tutti , larghezza ( lbWidth ) , NRigheVuote ( min ( nc , 10 ))) // listbox di tutte le colonne nella tabella dati utilizzando la larghezza standard lbWidth (130)
) ,
) ,
PanelBox ( "Trasmetti colonne selezionate in ruoli" , // box per designare le colonne per l'analisi
LineupBox ( NCol ( 2 ) , Spaziatura ( 3 ) ,
ButtonBox ( "Test, Colonne" ,
colListY << Aggiungere ( colListData << GetSelected )) , // prende le colonne selezionate e le aggiunge alla listbox colListY
colListY = ColListBox ( larghezza ( lbWidth ) , NRigheVuote ( 5 )) , // il numero di righe è limitato a 5 e può essere ampliato, ma dovrebbe essere sufficiente per la maggior parte degli studi
ButtonBox ( "Test di riferimento o comparativo, colonna" ,
colListB << Aggiungere ( colListData << GetSelected )) , // designare 1 colonna come riferimento o un test "comparativo" da confrontare con gli altri (questo finirà come X e influenzerà le statistiche future)
colListB = ColListBox ( larghezza ( lbWidth ) , NRigheVuote ( 5 )) // il numero di righe è limitato a 5, aumentando i risultati in confronti aggiuntivi
// l'ordine sarà 1o riferimento (X) a ciascuno dei saggi (Y), 2 ° riferimento a ciascuno dei saggi e così via
) ,
) ,
PanelBox ( "Azione" ,
LineupBox ( NCol ( 1 ) ,
ButtonBox ( "OK" ,
contwin = Nuova finestra ( "Risultati di contingenza" || carbonizzare ( formato ( come data ( oggi ()) , "DdMonyyyy" )) ,
Tabbox ( "Tabella di contingenza" , HListBox (
cont = Contingenza ( // cont è un riferimento alla piattaforma (livello di analisi)
Y ( colListB << ottenere oggetti ) ,
X ( colListY << ottenere oggetti )) ; //contingenza
cont << Tabella di contingenza (
Contare ( 1 ) ,
Totale % ( 0 ) ,
Col% ( 0 ) ,
Riga% ( 0 ) ,
Previsto ( 0 ) ,
Deviazione ( 0 ) ,
Cell Chi Squared ( 0 ) ,
Col Cum ( 0 ) ,
Col Cum% ( 0 ) ,
Fila Cum ( 0 ) ,
Riga Cum% ( 0 ) ,
) ;
cont << finestra delle dimensioni ( 500 , 700 ) ; // Voglio che il contingency table smetta di tagliare le parole ma non riesco a renderlo più grande
cont << Trama di mosaico ( 0 ) ; //Spegni
cont << test ( 0 ) ;
cont << Statistica dell'accordo ( 1 ) ; //accendere
rcont = cont << rapporto ; // un riferimento al report
/ * rcont ["Accordo Statistico", "Prove di Bowker"] << chiudi (1)
per (i = 1, i <= nitems (rcont), i ++,
kap = rcont (Contingency Table (i) ["Accordo Statistico", "Kappa Coefficient"]);
kapset = Kap [NumberColbox ( "Kappa")];
kap << formato impostato (8,3);
kap << imposta il Formato Condizionale ("Correlazione");
rcont (SendToReport (
Spedizione (// forse la spedizione funzionerebbe meglio?
{"Statistica dell'accordo", "coefficiente Kappa"},
"Kappa",
NumberColBox,
{Imposta formato (8, 3), Imposta formato condizionale ("Correlazione")}
));, * /
) , // H List Box
"copia di Contingenza 2x2" , // seconda scheda
// testval = reportcont [TableBox (1)]; bisogno di capire come afferrare i valori della tabella di contingenza
// matrixbox (testval << ottieni come matrice))
)) // tabbox
) ; // finestra, rimuovendo ";" "i risultati nella finestra di dialogo non si chiudono
clusterDlg << Chiudi la finestra ) , // Pulsante OK
ButtonBox ( "Annulla" ,
clusterDlg << Chiudi la finestra ) ,
Casella di testo ( "" ) ,
ButtonBox ( "Rimuovere" , // rimuove le colonne selezionate dai due elenchi di controllo
colListY << Rimuovi i selezionati ;
colListB << Rimuovi i selezionati ;
) ,
ButtonBox ( "Richiamare" , non implementato ) , // non è stato programmato
ButtonBox ( "Aiuto" , non implementato )) // non è stato programmato
) // riquadro del riquadro
) // hlistbox
) // vlistbox
) // borderbox
) ; // window (cluster dlg)