Skript zum Exportieren von AIC in eine neue Datentabelle<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich vergleiche AIC-Ergebnisse für mehrere Modelle in der Fit Parametric Survival-Plattform. Zu diesem Zeitpunkt habe ich ein Skript zum Ausführen aller Modelle, das mehrere Fenster erzeugt, und ich kopiere/füge den AIC und andere Ausgaben nacheinander in eine Excel-Datei ein. Heutzutage ist dies ein zeitaufwändiger und verschwenderischer Prozess. Ich bin ein Neuling in JSL. Kann mir jemand helfen, einen automatisierten Prozess zu erstellen, um AIC und andere Informationen aus den mehreren Berichtsfenstern zu extrahieren und sie in einem einzigen Datenfenster zu speichern? Die zusätzlichen Informationen, die ich auswerte, sind Parameterkonvergenz, verwendete Beobachtungen und Anzahl der zensierten und unzensierten Werte.
Vielen Dank für jede Hilfe!
Verwenden des VBA-Makros zum Importieren von Daten in JMP und Zurückgeben der JMP-Ergebnisse an die Excel-Tabelle von Weibull AnalysisHallo Leute,
Zunächst möchte ich mich bei Ihnen für die Weitergabe Ihrer Skripterkenntnisse bedanken, die mir dabei geholfen haben, meinen Datenabfrageprozess zu automatisieren. Ich verwende VBA-Makro-Excel, um meine Tabelle in JMP zu kopieren, um die Weibull-Analyse durchzuführen, die Skalierungs- und Formwerte zu erhalten und in meine VBA-Makro-Excel-Datei zu kopieren. Unten ist der Code, den ich verwendet habe. Ich hoffe, es wird auch für andere hilfreich sein.
VBA-Makro Excel.
Sub JMP()
App als JMP.Application dimmen
Dokument als JMP-Dokument dimmen
Setze app = CreateObject("JMP.Application")
app.Visible = True
Setze doc = app.OpenDocument("C:\Users\ABC\Desktop\WS.jsl")
End Sub
JSL-Skripte (im WS.jsl-Format gespeichert)
//! <<>>.
dt = Open( "C:\Benutzer\ABC\Desktop\Book1.xlsm" ); <<< JSL öffnet die Excel-Datei in der JMP-Datentabelle, um die Weibull-Analyse unten auszuführen>>>
fm = Lebensverteilung(
Y( :Name( "TTF,Hr" ) ),
Zensor( :Zensor ),
Zensurcode( 1 ),
Freq( :Freq ),
<
Konfidenzintervallmethode (Wahrscheinlichkeit),
<
<
Intervalltyp (gleichzeitig),
<
{Probability Paper( Profiler( 1, Konfidenzintervalle( 1 ), Term Value( Name( "TTF,Hr" )(4846.6174375, Lock( 0 ), Show( 1 )) ) ) ),
Weibull-Verteilung( Profiler( 1, Konfidenzintervalle( 1 ), Term Value( Name( "TTF,Hr" )(4846.6, Lock( 0 ), Show( 1 )) ) ) ),
Weibull-Quantil( Profiler( 1, Konfidenzintervalle( 1 ), Termwert( Wahrscheinlichkeit( 0,5, Lock( 0 ), Show( 1 ) ) ) ),
Weibull Hazard( Profiler( 1, Konfidenzintervalle( 1 ), Term Value( Name( "TTF,Hr" )(4846.6, Lock( 0 ), Show( 1 )) ) ) ),
Weibull-Dichte( Profiler( 1, Term Value( Name( "TTF,Hr" )(4846.6, Lock( 0 ), Show( 1 )) ) ) ), Custom Estimation( Weibull, 0 )}
),
SendToReport(
Dispatch( {"Compare Distributions"}, "Life Distribution", FrameBox, {Grid Line Order( 2 ), Reference Line Order( 3 )} ),
Dispatch( {"Statistik", "Modellvergleiche"}, "", TableBox, {Sort By Column( 2, 1 )} )
)
);
// Um die Parametic Estimate-Daten automatisch in eine neue Datentabelle zu kopieren (z. B. untitled.jmp-Format)
fmrep = fm << Bericht;
fmrep[Outline Box("Parametric Estimate ?" )][Table Box( 1 )] << kombinierte Datentabelle erstellen;
dt1 = Aktuelle Datentabelle();
dt1 << SaveAs( "c:\Benutzer\ABC\Desktop\AAA.xlsx" ); // um die untitled.jmp-Datei als Excel-Datei (in diesem Fall habe ich sie als AAA.xlsx bezeichnet) am Desktop-Speicherort zu speichern.
Close( dt, No Save );
Close( dt1, No Save );
Die oben genannten Skripte funktionieren bei mir perfekt.
Ich dachte nur daran, mit meinen jüngsten Erkenntnissen und Erkenntnissen einen Beitrag zu dieser Community zu leisten.
Danke!
Jim
Betreff: Skript zum Exportieren von AIC in eine neue DatentabelleEUREKA!!! Danke Jeff, Mark und Ian! Ihr habt mir in kurzer Zeit viel beigebracht und mir die Lösung gegeben, die mir stundenlanges unnötiges Klicken, Kopieren und Einfügen erspart!
Wenn einer von Ihnen nun weiß, wie man eine Spalte für den Warntext hinzufügt, wenn Modelle nicht konvergieren, wäre das das Tüpfelchen auf dem i. Aber ich bin zufrieden mit dem, was wir erreicht haben!
Betreff: Skript zum Exportieren von AIC in eine neue DatentabelleWenn Sie By() bei einem Plattformstart verwenden, gibt JMP eine Liste der resultierenden Plattformen zurück. Ohne sie gibt JMP eine einzelne Plattform zurück, nicht in einer Liste.
Da in den Beispielen hier By() verwendet wurde, mussten sie in der Liste der Plattformen einen Index erstellen, um für jede einzelne Gruppe auf eine bestimmte Plattform zu verweisen. Das ist die [1] in:
fmrep1[1][Outlinebox("Parametric ?")][TableBox(1)]<<make combined data table;Sie verwenden By() bei keinem Ihrer Plattformstarts, daher benötigen Sie [1] nicht.
Um alle Tabellen in einer einzigen Datentabelle zusammenzufassen, wäre es am einfachsten, mit allen Berichten in einem einzigen Fenster zu beginnen.
Sie können dies tun, indem Sie New Window() verwenden, um Ihr eigenes Berichtsfenster zu erstellen.
dt = Open( "$SAMPLE_DATA\Reliability\Tobit2.jmp" );
myWin = New Window( "My Window",
fm1 = dt << Fit Model(
Y( :YLow, :YHigh ),
Effects( :age, ),
Personality( Parametric Survival ),
Distribution( LogNormal ),
Run( Likelihood Ratio Tests( 1 ) ),
);
fm2 = dt << Fit Model(
Y( :YLow, :YHigh ),
Effects( :liquidity ),
Personality( Parametric Survival ),
Distribution( LogNormal ),
Run( Likelihood Ratio Tests( 1 ) ),
);
fm3 = dt << Fit Model(
Y( :YLow, :YHigh ),
Effects( :age, :liquidity ),
Personality( Parametric Survival ),
Distribution( LogNormal ),
Run( Likelihood Ratio Tests( 1 ) ),
);
);
combined = myWin[Outline Box( "Parametric ?" )][Table Box( 1 )] << make combined data table;
Beachten Sie, dass wir das Berichtsobjekt nicht abrufen müssen, da wir einen Verweis auf das Berichtsfenster haben. myWin , bereits.
Um eine Tabelle zu erhalten, die der in Ihrem ursprünglichen Beitrag gezeigten ähnelt, müssen Sie die Tabelle, die Sie aus der kombinierten Datentabelle erhalten, mit Split() teilen.
combined <<Split(
Split By( :Column 1 ),
Split( :Column 2 ),
Remaining Columns( Drop All )
);
Ich weiß, dass Sie auch eine Spalte wünschen, die angibt, welches Modell die Zeilen darstellen. Je nachdem, wie Sie entscheiden, welche Modelle Sie ausführen möchten, kann es einfacher sein, diese Liste selbst zu führen und selbst eine Spalte mit diesen Informationen zur Datentabelle hinzuzufügen.
Wenn Sie nicht wissen, welche Modelle Sie angegeben haben, können Sie diese aus den parametrischen Überlebensberichten extrahieren, aber das ist nicht so einfach.
-Jeff
Betreff: Skript zum Exportieren von AIC in eine neue DatentabelleOkay, wir kommen also näher. Obwohl ich das falsche Skript eingefügt habe, gab mir Jeff die richtige Antwort. Das folgende Skript stellt die gewünschte Tabelle für die Beispieldaten bereit:
dt = Offen ( „$SAMPLE_DATA/Reliability/Tobit2.jmp“ ) ;
// Eine zufällige „by“-Spalte hinzufügen
von Col = dt << Neue Spalte ( "Von" , Numerisch , Nominell , Formel ( RandomInteger ( 1 , 2 ))) ;
// Den unsichtbaren Bericht erstellen
fm = dt << Modell anpassen (
Y ( : YNiedrig , : YHoch ) ,
Auswirkungen ( : Alter , : Liquidität ) ,
Von ( : Von ) ,
Persönlichkeit ( Parametrisches Überleben ) ,
Verteilung ( LogNormal ) ,
Laufen ( Likelihood-Ratio-Tests ( 1 ) ) ,
) ;
// Einen Verweis auf die Berichtsschicht abrufen
fmrep = fm << Bericht ;
fmrep [ 1 ][ Gliederungsbox ( „Parametrisch?“ )][ TableBox ( 1 )] << Erstellen Sie eine kombinierte Datentabelle ;
Schließen ( dt , NeinSpeichern ) ;
// Dieses Skript funktioniert wie es soll!!
Aber warum ist das so, wenn ich es entferne? von Col = dt << Neue Spalte ( ...) Und Von ( : Von ) , das Skript erzeugt keine Tabelle mehr?
Und da es mein Ziel ist, eine einzelne kombinierte Datentabelle aus mehreren Berichten zu erstellen, wie bringe ich das folgende Beispielskript zum Laufen:
dt = Offen ( „$SAMPLE_DATA/Reliability/Tobit2.jmp“ ) ;
// Den unsichtbaren Bericht erstellen
fm1 = dt << Modell anpassen (
Y ( : YNiedrig , : YHoch ) ,
Auswirkungen ( : Alter , ) ,
Persönlichkeit ( Parametrisches Überleben ) ,
Verteilung ( LogNormal ) ,
Laufen ( Likelihood-Ratio-Tests ( 1 ) ) ,
) ;
fm2 = dt << Modell anpassen (
Y ( : YNiedrig , : YHoch ) ,
Auswirkungen ( : Liquidität ) ,
Persönlichkeit ( Parametrisches Überleben ) ,
Verteilung ( LogNormal ) ,
Laufen ( Likelihood-Ratio-Tests ( 1 ) ) ,
) ;
fm3 = dt << Modell anpassen (
Y ( : YNiedrig , : YHoch ) ,
Auswirkungen ( : Alter , : Liquidität ) ,
Persönlichkeit ( Parametrisches Überleben ) ,
Verteilung ( LogNormal ) ,
Laufen ( Likelihood-Ratio-Tests ( 1 ) ) ,
) ;
// Einen Verweis auf die Berichtsschicht abrufen
fmrep1 = fm1 << Bericht ;
fmrep1 [ 1 ][ Gliederungsbox ( „Parametrisch?“ )][ TableBox ( 1 )] << Erstellen Sie eine kombinierte Datentabelle ;
DANKE AN ALLE!!!
JP
Betreff: Skript zum Exportieren von AIC in eine neue DatentabelleIn dieser Zeile sind einige Subskriptionsfehler aufgetreten:
fmrep[1]["Parameter Estimates"][TableBox(1)] << Make Combined Data Table;
Stattdessen sollte es lauten:
fmrep[Outlinebox("Parametric ?")][TableBox(1)]<<make combined data table;Sie könnten Outlinebox(1) verwenden oder dort den vollständigen Titel eingeben, aber das Platzhalterzeichen „?“ macht es etwas allgemeiner.
-Jeff
Betreff: Skript zum Exportieren von AIC in eine neue DatentabelleMark und Ian, vielen Dank für Ihre Zeit! Allerdings schaffe ich es immer noch nicht richtig, weil meine Version des Skripts unten immer noch keine Tabelle erzeugt. Ich habe versucht, Ihre beiden Beispiele zu kombinieren:
dt = Offen ( „$SAMPLE_DATA/Big Class.JMP“ ) ;
biv = dt << Bivariat (
Y ( : Höhe ) ,
X ( : Gewicht ) ,
Linie anpassen ,
Von ( : Sex )
) ;
fmrep = fm << Bericht ;
fmrep [ 1 ][ „Parameterschätzungen“ ][ TableBox ( 1 )] << Erstellen Sie eine kombinierte Datentabelle ;
Irgendwelche Ideen?
Danke schön,
JP
Betreff: Skript zum Exportieren von AIC in eine neue DatentabelleWährend ich im Index „Parameterschätzungen“ verwendet habe, um auf ein bestimmtes Umrissfeld abzuzielen, würden Sie stattdessen „Parametrische Überlebensanpassung – Modell 633“ verwenden.
Betreff: Skript zum Exportieren von AIC in eine neue DatentabelleUps! Wie ich sehe, wollten Sie eine Tabelle, kein Tagebuch. In diesem Fall ist „Kombinierte Datentabelle erstellen“ wahrscheinlich direkter.
Betreff: Skript zum Exportieren von AIC in eine neue DatentabelleAufbauend auf dem, was Mark erklärt hat, ist hier eine Möglichkeit:
dt = Offen ( „$SAMPLE_DATA/Reliability/Tobit2.jmp“ ) ;
// Eine zufällige „by“-Spalte hinzufügen
von Col = dt << Neue Spalte ( "Von" , Numerisch , Nominell , Formel ( RandomInteger ( 1 , 2 ))) ;
// Den unsichtbaren Bericht erstellen
fm = dt << Modell anpassen (
Y ( : YNiedrig , : YHoch ) ,
Auswirkungen ( : Alter , : Liquidität ) ,
Von ( : Von ) ,
Persönlichkeit ( Parametrisches Überleben ) ,
Verteilung ( LogNormal ) ,
Laufen ( Likelihood-Ratio-Tests ( 1 ) ) ,
Unsichtbar
) ;
// Einen Verweis auf die Berichtsschicht abrufen
fmrep = fm << Bericht ;
// Dies wird eine Liste sein, ein Element pro „nach“-Gruppe
GliederungTitel = fmRep << GetTitle ;
// Erstelle ein leeres Anzeigefeld
lub = LineUpBox ( NCol ( 1 )) ;
// Fügen Sie den Inhalt hinzu, den wir benötigen
Für ( Ö = 1 , Ö <= NItems ( GliederungTitel ) , Ö ++,
lub << Anhängen (
OutlineBox ( GliederungTitel [ Ö ] ,
( fmRep [ Ö ])[ TableBox ( 1 )] ;
) ;
) ;
) ;
Schließen ( dt , NeinSpeichern ) ;
// Erstelle ein Tagebuch
Neues Fenster ( "Bericht" , << Tagebuch , lub ) ;
Die einzige Schwierigkeit besteht darin, zu wissen, welche Tabellenboxen einbezogen werden sollen. Um dies herauszufinden, klicken Sie mit der rechten Maustaste auf das Dreieck des Gliederungsknotens und wählen Sie dann Bearbeiten > Baumstruktur anzeigen.
Betreff: Skript zum Exportieren von AIC in eine neue DatentabelleDanke für deine schnelle Antwort, Mark!! Das war sehr hilfreich und lehrreich, obwohl die Datentabelle zunächst nicht erstellt wurde, bis ich den letzten Teil umgeschrieben habe
Bericht ( biv [ 1 ] )[ „Parameterschätzungen“ ][ TableBox ( 1 )] << Erstellen Sie eine kombinierte Datentabelle ;
indem Sie diesem Beispiel folgen: 46983 – So erstellen Sie eine kombinierte Datentabelle mit zusammenfassenden Statistiken aus einem Verteilungsbericht, wenn Sie eine Nach-Variable verwenden .
Ich kann es jedoch immer noch nicht in meinen Arbeitsablauf übersetzen, vielleicht weil die gewünschte Tabelle keinen Titel hat (z. B. „Parameterschätzungen“). Nachfolgend finden Sie ein Beispiel für einen Bericht. Den eingekreisten Teil möchte ich in eine Datentabelle umwandeln. Ich habe unten ein Beispiel des Skripts eingefügt, das ich verwende. Die Herausforderung besteht darin, die eingekreisten Daten von ca. 100 gleichzeitig generierten Berichten in einer Datentabelle hinzuzufügen. Ich habe einen Screenshot der gesuchten Abschlusstabelle hinzugefügt, die ich gerade manuell in Excel eingebe (igitt). Ich bräuchte auch eine Möglichkeit, die Modellnummer (z. B. 633) zu jeder Zeile hinzuzufügen.
Danke nochmal für deine Hilfe!
JP


Hier ist ein Beispiel für das Skript, das ich verwende:
Modell anpassen (
Zensieren ( : Zerstreut ) ,
Zensurkodex ( „0“ ) ,
Y ( : Tage bis zur Zerstreuung ) ,
Auswirkungen ( : Gewicht ,: Jahr ,: Quelle ,: Translokation ,: Behandlung ,: Geologie ,: Grundstück , ) ,
Persönlichkeit ( Parametrisches Überleben ) ,
Verteilung ( Frechet ) ,
Laufen ( Likelihood-Ratio-Tests ( 1 ) ) ,
SendToReport (
Versenden (
{} ,
Parametrischer Survival-Fit ,
OutlineBox ,
{ Titel festlegen ( „Parametrischer Survival Fit – Modell 632“ )}
)
)
) ;
Modell anpassen (
Zensieren ( : Zerstreut ) ,
Zensurkodex ( „0“ ) ,
Y ( : Tage bis zur Zerstreuung ) ,
Auswirkungen ( : Gewicht ,: Jahr ,: Quelle ,: Translokation ,: Behandlung ,: Geologie , ) ,
Persönlichkeit ( Parametrisches Überleben ) ,
Verteilung ( Frechet ) ,
Laufen ( Likelihood-Ratio-Tests ( 1 ) ) ,
SendToReport (
Versenden (
{} ,
Parametrischer Survival-Fit ,
OutlineBox ,
{ Titel festlegen ( „Parametrischer Survival Fit – Modell 633“ )}
)
)
) ;
Betreff: Skript zum Exportieren von AIC in eine neue DatentabelleSie können dieses Ergebnis interaktiv erstellen, indem Sie mit der rechten Maustaste auf die Tabelle mit dem AIC-Wert in Ihrem Bericht klicken und „Kombinierte Datentabelle erstellen“ auswählen.
Das Skriptäquivalent erfordert das Senden einer Nachricht mit demselben Namen wie der Menübefehl an das Anzeigefeldobjekt, das für die Darstellung des AIC-Werts im Bericht verantwortlich ist. Nutzen Sie für diese Idee das folgende Beispiel:
- offene Große Klasse
- Starten Sie die Bivariate-Plattform mit Größe im Vergleich zu Gewicht und Geschlecht als Gruppierungsvariable
- Passen Sie eine Linie in beide Gruppen an
- Rufen Sie den Verweis auf die Berichtsebene ab
- Subskriptieren Sie den Anzeigebaum im Bericht wiederholt auf die Ebene der ersten Tabelle (z. B. Parameterschätzungen).
- Senden Sie die Nachricht
dt = Offen ( „$SAMPLE_DATA/Big Class.JMP“ ) ;
biv = dt << Bivariat (
Y( : Höhe ) ,
X( : Gewicht ) ,
Linie anpassen ,
Von( : Sex )
);
biv4 = biv << Bericht ;
bivr[ 1 ][ „Parameterschätzungen“ ][ TableBox ( 1 )] << Erstellen Sie eine kombinierte Datentabelle ;