Wie spezifiziere ich eine Korrelationsmatrix im Profiler für die Simulation?Hallo,
Ich schreibe ein Skript, um multivariate Normaldaten mit einer angegebenen Anzahl von Zeilen, Mittelwert-/Standardabweichungsvektoren und Korrelationsstruktur aus einem Satz Beispieldaten zu erstellen. Ich möchte den Simulator in der Profiler-Plattform nutzen, um die Datentabelle durch die folgenden Schritte zu generieren:
- Berechnen Sie den Stichprobenmittelwert und die Standardabweichung für jede Variable.
- Generieren Sie eine Korrelationsmatrix aus Beispieldaten.
- Simulieren Sie multivariate Daten mithilfe der zusammenfassenden Statistiken aus (1) und (2).
Derzeit generiert mein Skript die simulierte Datentabelle mit den entsprechenden Mittelwerten und Standardabweichungen für jede Variable, aber ich schaffe es nicht, die Korrelationsstruktur zwischen Variablen korrekt beizubehalten. Ich glaube, die Ursache meines Problems liegt darin, wie ich die [ NxN Korrelationen] mit X-Korrelationen Ich verwende eine Variable, anstatt die Korrelationsmatrix explizit anzugeben (z. B. [1 0,3 0, 0,3 1 0, 0 0 1]), aber meine Fähigkeiten zur Fehlerbehebung haben mir keine Lösung gelassen. Aktuelles Skript und erwartete vs. tatsächliche Ausgabe siehe unten. Vorschläge zur Umsetzung dieser Schritte sind willkommen:
JSL:
names default to here(1);
Try( Close( Data Table(dt) ) );
If( Is Empty( dt ),
Try( dt = Open(), Throw( "No data found" ) )
);
ncol = NCol(dt);
//Dialog Window.
Dlg = New Window("New Window",
<< Modal,
BorderBox(left(3), top(2),
V List Box(
TextBox("Simulate multivariate data"),
HListBox(
VListBox(
PanelBox("Select variables",
colListData = ColListBox(all,nLines,(min(ncol,10)))
),
),
PanelBox("Cast Selected Variables",
LineupBox(NCol(2), Spacing(3),
ButtonBox("Variables", colListY << Append(colListData << Get Selected)),
colListY = ColListBox(nLines(6), "numeric"))
),
//specifications - not in use.
PanelBox("Enter Specifications",
Spacer Box(Size(10, 1)),
HListBox(
VListBox(
Spacer Box(Size(5, 10)),
lsl1 = Number Edit Box(, 3),
Spacer Box(Size(5, 10)),
lsl2 = Number Edit Box(, 3),
Spacer Box(Size(5, 10)),
lsl3 = Number Edit Box(, 3),
Spacer Box(Size(5, 10)),
lsl4 = Number Edit Box(, 3)
),
SpacerBox(Size(10,10)),
VListBox(
Spacer Box(Size(5, 10)),
usl1 = Number Edit Box(, 3),
Spacer Box(Size(5, 10)),
usl2 = Number Edit Box(, 3),
Spacer Box(Size(5, 10)),
usl3 = Number Edit Box(, 3),
Spacer Box(Size(5, 10)),
usl4 = Number Edit Box(, 3)
)
),
),
PanelBox("Action",
LineupBox(NCol(1),
// OK button
Button Box("OK",
lsl_mat = J(4,1, .);
lsl_mat[1] = Eval(lsl1 << Get);
lsl_mat[2] = Eval(lsl2 << Get);
lsl_mat[3] = Eval(lsl3 << Get);
lsl_mat[4] = Eval(lsl4 << Get);
usl_mat = J(4,1, .);
usl_mat[1] = Eval(usl1 << Get);
usl_mat[2] = Eval(usl2 << Get);
usl_mat[3] = Eval(usl3 << Get);
usl_mat[4] = Eval(usl4 << Get);
// Store summary statistics
tpListY = colListY << Get Items;
tpMean = J(4, 1, 0);
tpSD = J(4, 1, 0);
for (i=1, i <= nitems(tpListY), i++,
one_col = tpListY[i];
Meani = Col Mean(Column(dt, one_col));
SDi = Col Std Dev(Column(dt, one_col));
tpMean[i] = Meani;
tpSD[i] = SDi;
);
Dlg << CloseWindow
),
// Cancel button
Button Box("Cancel", Dlg << CloseWindow),
Spacer Box(Size(10,10)),
// Remove button
Button Box("Remove", collistY << RemoveSelected)
)
),
)
)
)
);
//correlation matrix
corr = multivariate(
Y(Eval List(tpListY)),
estimation method("Row-wise"),
matrix format("Square"),
scatterplot matrix(0)
);
corr.run = corr << run;
corr.rep = corr.run << report;
corr.mat = corr.rep["Correlations"][matrix box(1)] << get(1);
//only used to launch profiler
prof.x = J(2,4 ,1);
prof.tbl = as table(prof.x, << column names(tpListY), << invisible);
prof.tbl << new column("Y",
Formula( :TP1 + :TP2 + :TP3 + :TP4)
);
prof.tbl = current data table();
random reset(1234);
//specify multivariate data from summary statistics
sim.design = Profiler(
Y(:Y),
Invisible
);
sim.design << Simulator(
1,
Factors(
TP1 << multivariate( tpMean[1], tpSD[1]),
TP2 << multivariate( tpMean[2], tpSD[2]),
TP3 << multivariate( tpMean[3], tpSD[3]),
TP4 << multivariate( tpMean[4], tpSD[4]),
),
X Correlations(
1,
tpListY,
corr.mat
),
N Runs(10000)
);
//Make data table
report( sim.design )["Simulate to Table"][button box( 1 )] << click( 1 );
sim.dt = data table( 1 );
sim.dt << set name( "Simulated multivariate data" );
sim.dt << delete columns({"Y","Obj"});Erwartete vs. tatsächliche Ausgabe:
expectedvsactualexpectedvsactualerwartet vs. tatsächlich
Automatisierung und SkripterstellungDatenexploration und -visualisierungBetreff: Wie spezifiziere ich eine Korrelationsmatrix im Profiler für die Simulation?Hallo @eangello ,
Sehr schön! Ich mag auf jeden Fall kürzeren, eleganteren Code (ich bin allerdings nicht so gut darin). Haben Sie aus Neugier überprüft, ob die Ergebnisse der Arbeit mit dem Mittelwert, den Standardabweichungen und der Korrelationsmatrix (ungefähr) die gleichen simulierten Daten liefern wie die Arbeit nur mit dem Mittelwert und der Kovarianzmatrix?
Es tut mir leid, dass dieser andere Ansatz nicht funktioniert hat, aber ich freue mich, dass Sie eine gute Lösung gefunden haben, die auf andere Daten, mit denen Sie arbeiten, übertragbar ist. Ich teste einige Modelle anhand der simulierten Daten, um zu sehen, wie sie im Vergleich zu Modellen abschneiden, die auf den tatsächlichen Daten basieren. Ich kann mir vorstellen, dass dies sehr hilfreich sein könnte, wenn der reale Datensatz relativ klein ist und die simulierten Daten Ihnen die Chance geben können, zumindest ein nicht ganz so schreckliches Modell zu erstellen, das frühzeitig bereitgestellt und dann aktualisiert werden kann, wenn mehr Daten eingehen . Das heißt, anstatt monatelang darauf zu warten, dass ein ausreichend großer Datensatz generiert wird. Manchmal ist es sinnvoll, ein Modell zu haben, auch wenn es nicht „perfekt“ ist.
Vielen Dank für die Diskussion und die Lernpunkte!
Viel Glück!,
DS
Betreff: Wie spezifiziere ich eine Korrelationsmatrix im Profiler für die Simulation?Hallo @SDF1 ,
Auf diesen Ansatz wäre ich nie gekommen, gut gemacht. Was das Dialogfenster betrifft, denke ich, dass Sie Recht haben, ich muss es mir genauer ansehen. Es stellte sich heraus, dass es weniger Kopfschmerzen bereitete, die Profiler-Plattform insgesamt zu meiden, obwohl es eine gute Idee war, dass sie für mich nicht funktionierte. Hier ist das gleiche Ergebnis, aber mit weniger Aufwand (ähnlich den Schritten, die ich zur Implementierung in R unternehme) und als Eingaben werden nur der Mittelwertvektor und die Kovarianzmatrix benötigt.
//tpListY is variables.<BR /><BR />cov = multivariate(
Y(eval list(tpListY)),
estimation method("Row-wise"),
matrix format("Lower Triangular"),
scatterplot matrix(1)
);
cov << covariance matrix(1);
cov.run = cov << run;
cov.rep = cov.run << report;
cov.mat = cov.rep["Covariance Matrix"][matrix box(1)] << get(1);
random reset(1234);
//generate X = (X1, . . . , Xn) where X ∼ MNn(µ, Σ) using the Cholesky decomposition of Σ
//to find (nxn) matrix, C, such that C*C` = Σ.
//let Z = (Z1, . . . , Zn)` where the Zi’s are IID N(µ, 1) for i = 1, . . . , n.
//mean.M is mean vector.
sim.n = 1e4;
dummy.mat = j(1,sim.n,1);
mean.mat = mean.M*dummy.mat;
n.means = n row(mean.M);
sim.C = cholesky(cov.mat);
sim.Z = j(n.means, sim.n, random normal());
sim.X = sim.C*sim.Z;
sim.X2 = sim.X + mean.mat;
sim.Xt = transpose(sim.X2);
as table(sim.Xt, << column names(tpListY));
Ich verwende lieber weniger Code, um die gleiche Aufgabe zu erledigen, daher war dies ansprechender als die Profiler-Route. Hoffentlich erleichtert dies die Implementierung an anderer Stelle.
Danke noch einmal,
eangello
Betreff: Wie spezifiziere ich eine Korrelationsmatrix im Profiler für die Simulation?Hallo @eangello ,
Ich glaube, es ist mir gelungen, ein Skript zu entwickeln, das auf N Spalten skalierbar ist. ich gebe @MS Ein RIESIGER Dank für die Hilfe bei der Verallgemeinerung des Korrelationsteils des Profilers. Dieser Thread ist Hier .
Es gibt zwei Skripte, eine eigenständige Version wie die, die Sie implementiert haben, jedoch ohne die zusätzlichen Variablen, die Sie in Ihrem ursprünglichen Beitrag hatten, sowie ein Skript, das von einer Datentabelle selbst aus ausgeführt werden kann. Die eigenständige Version befindet sich unten und die Version, die aus der Datentabelle ausgeführt werden soll, befindet sich in der Datentabelle Gendt.jmp. Es funktioniert sowohl mit Ihrer Datentabelle mit 4 Spalten als auch mit der anderen Datentabelle, die ich mit 11 Spalten erstellt habe. Ich habe versucht, das eigenständige Skript auch für Datentabellen mit anderen Spaltentypen zu verallgemeinern.
Names Default To Here( 1 );
// Expression to clear all current settings
clearRoles = Expr( ColListY << RemoveAll );
// Expression to store the current settings in global variables
recallRoles = Expr(
::ycolRecall = ColListY << GetItems
);
//get data table
Try( Close( Data Table( dt ) ) );
If( Is Empty( dt ),
Try( dt = Open(), Throw( "No data found" ) )
);
//Find the number of columns in the data table
ncol = N Col( dt );
ColList = dt << Get Column Names( Numeric, Continuous );
//Dialog Window.
Dlg = New Window( "New Window",
<<RETURN result=""></RETURN>
Außerdem denke ich, dass der Button-Box-Fehler, den Sie erhalten, mit dem <<< Return Result ersetzt und erhalte den Fehler nicht mehr. Ich habe auch einen Rückruf-Button eingebaut, aber Sie müssen ihn nicht haben.
Ich hoffe, das hilft, das war wirklich cool und ich habe viel daraus gelernt. Ich weiß, dass ich das auf jeden Fall für meine Arbeit nutzen kann!
Danke!,
DS
Betreff: Wie spezifiziere ich eine Korrelationsmatrix im Profiler für die Simulation?Hallo @eangello ,
Genau das ging mir durch den Kopf, als mir klar wurde, was Sie mit der Korrelationsstruktur machen wollten. Ich möchte Ihre Idee aufgreifen und sie an einige der spezifischen Probleme anpassen, mit denen ich konfrontiert bin. Ich habe in einem anderen Thread über die Verallgemeinerung auf N Eingaben gepostet. Ich denke, ich bin ziemlich nah dran, aber noch nicht ganz da. Ich habe Schwierigkeiten, es zu vergrößern, wenn ich X Correlations() aufrufe und die Mittel- und Standard-Abweichungswerte für die Faktoren festlege.
Im Anhang finden Sie eine Modelldatentabelle und ein Skript, an dem ich arbeite, alles basierend auf Ihrem Originalskript. Vielleicht könnt ihr die Fehler finden, die ich mache? Ich würde gerne sehen, dass dies für eine beliebige Anzahl von Spalten funktioniert. Wie Sie betonen, wäre es für historische Daten sehr hilfreich.
Danke!,
DS
Betreff: Wie spezifiziere ich eine Korrelationsmatrix im Profiler für die Simulation?Hallo @SDF1 ,
Ich simuliere häufig multivariate Datensätze zu Modellierungszwecken (darunter Modelloptimierungen), typischerweise basierend auf einigen historischen Parametern. Dieses Skript war nur eine einfache Lösung, um diese Scheindaten bereitzustellen. Ich habe derzeit keinen konkreten Anwendungsfall, aber ich beabsichtige, dieses Skript auf n-Dimensionen zu skalieren und es möglicherweise als Funktionalität zu verwenden Modul Ich kann in umfangreichere Skripte integrieren, die Techniken mit großen Samples verwenden. Angesichts der Einschränkungen beim Senden von Mittelwert-/SD-Vektoren und Korrelationsmatrix an die Profiler-Plattform werde ich wahrscheinlich darauf zurückgreifen, die linearen Operationen explizit zu schreiben, um die Simulation auf n-Dimensionen zu skalieren.
Grüße,
eangello
Betreff: Wie spezifiziere ich eine Korrelationsmatrix im Profiler für die Simulation?Hallo @eangello ,
Tolle Lösung, und ich wünschte, ich hätte daran gedacht, es so zu machen. Ich musste etwas Ähnliches tun, als ich ein Skript schrieb, um einige Modellabstimmungen zu automatisieren. Die EvalInsert()- und Escape-Zeichen für Anführungszeichen und ^^ zum Einfügen von Werten waren sehr hilfreich. Ich benutze es einfach nicht so oft und habe diese besondere Vorgehensweise vergessen.
Warum müssen Sie aus Neugier solche simulierten Daten mit der angegebenen Korrelationsstruktur generieren? Ich bin sehr interessiert, da es mir einige Ideen gegeben hat, wie ich das in einige Dinge integrieren kann, an denen ich arbeite.
Danke!,
DS
Betreff: Wie spezifiziere ich eine Korrelationsmatrix im Profiler für die Simulation?Hallo @SDF1 ,
Vielen Dank für die Hilfe bei der Fehlerbehebung, sehr geschätzt. Ich habe mit ähnlichen Funktionen herumgespielt wie Eval, Eval Expr( Expr(x) ) , Und Evalinsert und haben eine Lösung gefunden, indem wir die Auswertung der Spalten- und Matrixvariablen vor dem Senden an Profiler erzwungen haben (was X-Korrelationen scheint zu akzeptieren). Ich habe die gleiche Lösung wie oben angewendet, um meinen Profiler für verschiedene Spaltennamen flexibel zu machen. Jetzt bleibt meine Korrelationsstruktur in den simulierten Daten erhalten.
new.design = evalinsert(
"\[sim.design << Simulator(
1,
Factors(
Name( "^col1^" ) << multivariate( tpMean[1], tpSD[1]),
Name( "^col2^" ) << multivariate( tpMean[2], tpSD[2]),
Name( "^col3^" ) << multivariate( tpMean[3], tpSD[3]),
Name( "^col4^" ) << multivariate( tpMean[4], tpSD[4]),
),
X Correlations(
1,
^tpListY^,
^corr.mat^
),
N Runs(10000)) ]\");
eval(parse(new.design));
Danke noch einmal,
EA
Betreff: Wie spezifiziere ich eine Korrelationsmatrix im Profiler für die Simulation?Hallo @eangello ,
Danke für die Datentabelle. Ich kann Ihr Problem so reproduzieren, wie Sie es erwähnt haben. Eine Sache, die mir auffällt, ist, dass beim Ausführen des Simulators kein Histogramm neben dem Profiler erstellt wird, anders als im Reifenprofil-Beispiel im Hilfeindex zu X-Korrelationen.
Ich denke, da sind zwei Dinge im Gange:
1. Aufruf von tpListY
2. Aufruf von corr.mat
Ich bin mir nicht sicher, warum, aber ich denke, Sie müssen die Liste für die , TP3, TP4}. Ebenso müssen Sie dort zwischen den eckigen Klammern die tatsächliche 4x4- (oder NxN-) Korrelationsmatrix einfügen [].
Ich dachte, dass etwas wie Parse(tpListY[1]) funktionieren würde, aber ich kann es nicht zum Laufen bringen, selbst wenn ein Eval() darum gewickelt ist. Ich kann es nur automatisch zum Laufen bringen, wenn ich den JSL-Code als {TP1, TP2, TP3, TP4} eingebe. Beachten Sie, dass beim Einfügen der NxN-Korrelationsmatrix tatsächlich das untere linke Dreieck der Matrix zum Ausfüllen der Tabelle verwendet wird.
Ich dachte auch, dass das Aufrufen der Elemente von corr.mat funktionieren könnte, wie in corr.mat[1] usw., aber das funktioniert auch nicht. Wenn ich das versuche, erhalte ich die Fehlermeldung „Ungültiges Matrix-Token“ und weiß nicht genau, warum, da die Elemente von „corr.mat“ Zahlen sind.
Der folgende Code (ich habe Ihre Funktion geändert, um sie ein wenig zu verbessern) liefert zwar die erwartete Ausgabe, hilft aber nicht bei Ihrem Wunsch, von einem 4x4-System auf ein NxN-System zu erweitern.
names default to here(1);
Try( Close( Data Table(dt) ) );
If( Is Empty( dt ),
Try( dt = Open(), Throw( "No data found" ) )
);
ncol = NCol(dt);
//Dialog Window.
Dlg = New Window("New Window",
<< Modal,
BorderBox(left(3), top(2),
V List Box(
TextBox("Simulate multivariate data"),
HListBox(
VListBox(
PanelBox("Select variables",
colListData = ColListBox(all,nLines,(min(ncol,10)))
),
),
PanelBox("Cast Selected Variables",
LineupBox(NCol(2), Spacing(3),
ButtonBox("Variables", colListY << Append(colListData << Get Selected)),
colListY = ColListBox(nLines(6), "numeric"))
),
//specifications - not in use.
PanelBox("Enter Specifications",
Spacer Box(Size(10, 1)),
HListBox(
VListBox(
Spacer Box(Size(5, 10)),
lsl1 = Number Edit Box(, 3),
Spacer Box(Size(5, 10)),
lsl2 = Number Edit Box(, 3),
Spacer Box(Size(5, 10)),
lsl3 = Number Edit Box(, 3),
Spacer Box(Size(5, 10)),
lsl4 = Number Edit Box(, 3)
),
SpacerBox(Size(10,10)),
VListBox(
Spacer Box(Size(5, 10)),
usl1 = Number Edit Box(, 3),
Spacer Box(Size(5, 10)),
usl2 = Number Edit Box(, 3),
Spacer Box(Size(5, 10)),
usl3 = Number Edit Box(, 3),
Spacer Box(Size(5, 10)),
usl4 = Number Edit Box(, 3)
)
),
),
PanelBox("Action",
LineupBox(NCol(1),
// OK button
Button Box("OK",
lsl_mat = J(4,1, .);
lsl_mat[1] = Eval(lsl1 << Get);
lsl_mat[2] = Eval(lsl2 << Get);
lsl_mat[3] = Eval(lsl3 << Get);
lsl_mat[4] = Eval(lsl4 << Get);
usl_mat = J(4,1, .);
usl_mat[1] = Eval(usl1 << Get);
usl_mat[2] = Eval(usl2 << Get);
usl_mat[3] = Eval(usl3 << Get);
usl_mat[4] = Eval(usl4 << Get);
// Store summary statistics
tpListY = colListY << Get Items;
tpMean = J(4, 1, 0);
tpSD = J(4, 1, 0);
for (i=1, i <= nitems(tpListY), i++,
one_col = tpListY[i];
Meani = Col Mean(Column(dt, one_col));
SDi = Col Std Dev(Column(dt, one_col));
tpMean[i] = Meani;
tpSD[i] = SDi;
);
Dlg << CloseWindow
),
// Cancel button
Button Box("Cancel", Dlg << CloseWindow),
Spacer Box(Size(10,10)),
// Remove button
Button Box("Remove", collistY << RemoveSelected)
)
),
)
)
)
);
//correlation matrix
corr = multivariate(
Y(Eval List(tpListY)),
estimation method("Row-wise"),
matrix format("Square"),
scatterplot matrix(0)
);
corr.run = corr << run;
corr.rep = corr.run << report;
corr.mat = corr.rep["Correlations"][matrix box(1)] << get(1);
//only used to launch profiler
prof.x = J(200,4 ,1);
prof.tbl = as table(prof.x, << column names(tpListY), << invisible);
prof.tbl << new column("Y",
Formula( :TP1+:TP2^2-:TP3+:TP4*Random Normal(0,2))
);
prof.tbl = current data table();
random reset(1234);
//specify multivariate data from summary statistics
sim.design = Profiler( Y( :Y ), Invisible );
sim.design << Simulator(
1,
Factors(
TP1 << multivariate( tpMean[1], tpSD[1] ), TP2 << multivariate( tpMean[2], tpSD[2] ),
TP3 << multivariate( tpMean[3], tpSD[3] ), TP4 << multivariate( tpMean[4], tpSD[4] ),
),
Responses( Y << No Noise ),
Automatic Histogram Update( 1 ),
X Correlations( 1, {TP1, TP2, TP3, TP4},
[1 0.6401843997 0.670478399654806 0.6405126152, 0.6401843997 1 0.9443055859 0.8815992957, 0.6704783997 0.9443055859 1 0.9355872238, 0.6405126152 0.8815992957 0.9355872238 1]
),
N Runs( 10000 ),
Simulate
);
//Make data table
report( sim.design )["Simulate to Table"][button box( 1 )] << click( 1 );
sim.dt = data table( 1 );
sim.dt << set name( "Simulated multivariate data" );
sim.dt << delete columns({"Y","Obj"});Es muss eine Möglichkeit geben, dies zu tun, da Sie die Elemente von tpMean und tpSD aufrufen können, um das multivariate Rauschen für die Faktoren auszufüllen. Ich denke, dass jemand mit mehr Erfahrung in JSL nötig sein könnte, der dazu Stellung nimmt.
Abschließend denke ich, dass Sie mit einer der Schaltflächenboxen Recht haben, aber ich konnte sie auch nicht genau bestimmen – ich habe mich mehr auf den Versuch konzentriert, die Probleme mit tpListY und corr.mat zu lösen! 
Ich bin wirklich daran interessiert, was Sie herausfinden.
Viel Glück,
DS
Betreff: Wie spezifiziere ich eine Korrelationsmatrix im Profiler für die Simulation?Hallo @SDF1 ,
Ich habe vor dem Posten meiner Sorgfaltspflicht nicht nachgekommen – hier ist ein Beispiel von 10 Zeilen aus den Beispieldaten (4 X; TP1-TP4). Das aktuelle Skript ist auf 4 Variablen beschränkt, aber ich hoffe, dass ich dies skalieren kann N Variablen in der Zukunft. Diese Beispieldatentabelle wird mein Problem neu erstellen. Ich glaube, dass der ungelöste Namensfehler vom Dialogfeld herrührt (vielleicht Schaltflächen zum Abbrechen/Entfernen), aber ich habe die Grundursache nicht gefunden.
Danke,
EA
Betreff: Wie spezifiziere ich eine Korrelationsmatrix im Profiler für die Simulation?Hallo @eangello ,
Das ist eine interessante Frage, und ich würde gerne versuchen, Ihnen zu helfen, wenn ich kann, aber ich kann Ihr Problem nicht reproduzieren. Wenn ich versuche, Ihr Skript auszuführen, werde ich aufgefordert, eine Datentabelle aus dem Beispieldatenverzeichnis zu öffnen. Ein Problem hierbei ist, dass ich nicht weiß, mit welcher Datentabelle Sie arbeiten, und nicht das gleiche Problem bekomme. Können Sie die Datentabelle bereitstellen, mit der Sie arbeiten?
Wenn ich eine Datentabelle aus den Beispieldaten auswähle – z. B. die Datei example.jmp des 2D-Gaußschen Prozesses –, werde ich im nächsten Dialogfenster aufgefordert, Spalten in Rollen umzuwandeln. Wenn ich dann aber auf „OK“ klicke, erhalte ich die Fehlermeldung, dass ein ungelöster Fehler vorliegt name Überzähliger Name oder Auswertung von 'Button', Button(-1) /*###*/. Dann tritt in Zeile 124 Ihres Codes ein weiterer Fehler auf, der besagt, dass der Befehl sim.design << Simulator() send nicht gefällt.
Anscheinend haben Sie eine Datentabelle, in der das funktioniert. Kannst du es teilen? Oder geben Sie weitere Details zu der Tabelle an, die Sie zum Generieren der Ausgabe verwenden, die Sie in Ihrem Beitrag gezeigt haben?
Danke!,
DS