<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo, ich versuche, ein dynamisches Skript zu erstellen, das Kontingenztabellen in einem Bericht und zugehörige Statistiken basierend auf vom Benutzer ausgewählten Spaltenzuweisungen erstellt. Dies ist mein erster Versuch bei JSL, also bin ich ein absoluter Anfänger. Ich habe die Erstellung der Benutzerformulare und der Tabellenerstellung, aber ich habe Schwierigkeiten zu verstehen, wie ich auf die verschiedenen Teile des generierten Berichts verweisen soll, um einfache Dinge wie das dezimale Format für die Kappa-Statistik festzulegen. Schließlich möchte ich auch in der Lage sein, die Werte aus den angezeigten Kontingenztabellen zu extrahieren und die Ergebnisse an anderer Stelle im Bericht anzuzeigen. Ich habe über Subskripte gelesen und versuche, dieses Konzept zu nutzen, um in den Bericht zu graben, aber ich kann nicht herausfinden, wie man sie richtig verwendet. Ich weiß, dass ich ein gutes Verständnis für dieses Konzept erlangen muss, da der Benutzer zwischen 2 Spalten und 10 wählen kann. Daher kann das Skript zwischen 1 und 25 Kontingenztabellen generieren, auf die ich mich konzentrieren muss später. Ich weiß, dass es am besten ist, jeder Variablen zuzuweisen, aber ich kann das auch nicht herausfinden, da das Erstellen der Tabellen durch JMP automatisiert wird, anstatt etwas wie eine For-Schleife zu verwenden. Jede Hilfe wird sehr geschätzt Ich würde mich auch über Feedback zu JSL-Skripten freuen, das nicht mit meinen spezifischen Fragen (z. B. bewährte Methoden usw.) zu Lernzwecken zusammenhängt.
Der Teil, mit dem ich zu kämpfen habe, ist der Abschnitt, der mit / * ------ * / kommentiert wird. Tut mir leid für das übermäßige Kommentieren, aber als mein erstes Skript versuche ich, Konzepte zu erfassen, auf die mein zukünftiges Ich zurückblicken kann. Ich verwende JMP 10.0.1 Version 2 unter Windows 7. Ich konnte in JMP keinen Beispieldatensatz finden, der typisch für das ist, mit dem ich arbeite. Hier ist eine Miniaturversion:
| SampleID | Test Nr. 1 | Test Nr. 2 | Referenz |
| 307HV093 | Negativ | Negativ | Negativ |
| 307HV093 | Negativ | Negativ | Negativ |
| 307HV094 | Positiv | Positiv | Positiv |
| 307HV094 | Positiv | Positiv | Positiv |
| 307HV095 | Positiv | Positiv | Positiv |
| 307HV095 | Positiv | Positiv | Positiv |
| 307HV096 | Positiv | Positiv | Positiv |
| 307HV096 | Positiv | Positiv | Positiv |
| 307HV097 | Negativ | Negativ | Negativ |
| 307HV097 | Negativ | Negativ | Negativ |
| 307HV098 | Negativ | Negativ | Negativ |
// Basierend auf "Erstellen von Anzeigebäumen", Seite 363 des JMP-Skripthandbuchs für JMP 10
klare globals () ;
Namensvorgabe bis hier ( 1 ) ; // Alle Variablen außerhalb des Bereichs sind lokal
ob ( ist leer ( dt = Stromdatierung ()) . dt = öffnen ( Pickfile ( "Wählen Sie eine Eingabedatendatei:" ))) ;
// savedir = pickdirectory ("Wählen Sie einen Zielordner für die Zusammenfassungsdateien:"); // benutze das später
dt = currentDataTable () ; nc = ncol ( dt ) ; // Holen Sie sich die Anzahl der Spalten in der Tabelle
lbWidth = 130 ;
nicht implementiert = Ausdruck ( Neues Fenster ( "Feature noch nicht implementiert" , << Modal . ButtonBox ( "OK" ))) ; // Ich habe keine Ahnung, was << Modal macht
clusterDlg = Neues Fenster ( "2x2 Kontingenztabellen & Statistiken" . // ein neues Fenster für die Benutzerauswahl von Spalten erstellen
BorderBox ( links ( 3 ) . oben ( 2 ) .
VListBox (
Textfeld ( Vergleich der Assays ) .
HlistBox (
VListBox (
PanelBox ( "Spalten auswählen" . // Feld, um die verfügbaren Spalten aufzulisten
colListData = ColListBox ( Alles . Breite ( lbWidth ) . nLines ( Mindest ( nc . 10 ))) // Listbox aller Spalten in der Datentabelle mit Standardbreite lbWidth (130)
) .
) .
PanelBox ( "Ausgewählte Spalten in Rollen umwandeln" . // Feld, um Spalten für die Analyse festzulegen
LineupBox ( NCol ( 2 ) . Abstand ( 3 ) .
ButtonBox ( Assay, Säulen .
colListY << Anhängen ( colListData << GetSelected )) . // nimm die ausgewählten Spalten und füge sie der colListY-Listbox hinzu
colListY = ColListBox ( Breite ( lbWidth ) . nLines ( 5 )) . // Die Anzahl der Zeilen ist auf 5 begrenzt und kann erweitert werden, sollte aber für die meisten Studien ausreichend sein
ButtonBox ( Referenz- oder Vergleichstest, Spalte .
colListB << Anhängen ( colListData << GetSelected )) . // 1 Spalte als Referenz oder "Vergleichstest" zum Vergleich mit den anderen festlegen (dies wird als X enden und zukünftige Statistiken beeinflussen)
colListB = ColListBox ( Breite ( lbWidth ) . nLines ( 5 )) // Die Anzahl der Zeilen ist auf 5 begrenzt, was zu zusätzlichen Vergleichen führt
// Die Reihenfolge ist 1. Verweis (X) für jeden der Assays (Y), 2. Verweis auf jeden der Assays und so weiter
) .
) .
PanelBox ( "Aktion" .
LineupBox ( NCol ( 1 ) .
ButtonBox ( "OK" .
contwin = Neues Fenster ( "Kontingenzergebnisse" || verkohlen ( Format ( als datum ( heute ()) . "ddMonyyyy" )) .
Tabbox ( "Kontingenztabelle" . HListBox (
cont = Kontingenz ( // cont ist ein Verweis auf die Plattform (Analyseebene)
Y ( colListB << Gegenstände erhalten ) .
X ( colListY << Gegenstände erhalten )) ; //Kontingenz
cont << Kontingenztabelle (
Anzahl ( 1 ) .
Gesamt% ( 0 ) .
Col% ( 0 ) .
Reihe % ( 0 ) .
Erwartet ( 0 ) .
Abweichung ( 0 ) .
Cell Chi Squared ( 0 ) .
Col Cum ( 0 ) .
Col Cum% ( 0 ) .
Row Cum ( 0 ) .
Row Cum% ( 0 ) .
) ;
cont << größe fenster ( 500 . 700 ) ; // Ich möchte, dass die Kontingenztabelle nicht länger Wörter abschneidet, aber ich kann es nicht vergrößern
cont << Mosaikplot ( 0 ) ; //abschalten
cont << Tests ( 0 ) ;
cont << Übereinstimmungsstatistik ( 1 ) ; //anschalten
rcont = cont << Bericht ; // ein Verweis auf den Bericht
/ * rcont ["Vereinfachungsstatistik", "Bowkers Test"] << schließen (1)
für (i = 1, i <= Nitems (rcont), i ++,
kap = rcont (Kontingenztabelle (i) ["Vereinbarungsstatistik", "Kappa-Koeffizient"]);
kapset = kap [NumberColbox ("Kappa")];
kap << Format (8,3) einstellen;
kap << set Bedingtes Format ("Korrelation");
rcont (SendToReport (
Versand (// Vielleicht würde der Versand besser funktionieren?
{"Vereinbarungsstatistik", "Kappa-Koeffizient"},
"Kappa",
NumberColBox,
{Format einstellen (8, 3), Bedingtes Format einstellen ("Korrelation")}
));, * /
) . // H Listenfeld
"Kopie von 2x2 Contingency" . // zweite Registerkarte
// testval = reportcont [TableBox (1)]; müssen herausfinden, wie die Werte für die Kontingenztabelle abgerufen werden können
// matrixbox (testval << als Matrix erhalten))
)) // tabbox
) ; // Fenster, das Entfernen von ";" "führt dazu, dass das Dialogfenster nicht geschlossen wird
clusterDlg << Fenster schließen ) . // OK-Schaltflächenfeld
ButtonBox ( "Stornieren" .
clusterDlg << Fenster schließen ) .
Textfeld ( "" ) .
ButtonBox ( "Löschen" . // ausgewählte Spalten aus den beiden Assay-Listboxen entfernen
colListY << RemoveSelected ;
colListB << RemoveSelected ;
) .
ButtonBox ( "Erinnern" . nicht implementiert ) . // wurde nicht programmiert
ButtonBox ( "Hilfe" . nicht implementiert )) // wurde nicht programmiert
) // Panel-Box
) // hlistbox
) // vlistbox
) // Borderbox
) ; // Fenster (Cluster-DLG)