Wie automatisiere ich die Generierung von Zufallsstichproben aus verschiedenen Verteilungstypen?Nehmen wir an, ich habe eine Tabelle mit 5 Zeilen und 2 Spalten. Die erste Spalte ist für Verteilungstypen (z. B. Normal, Lognormal, Weibull usw.) und die zweite Spalte für die jeweiligen Parameter. Ich möchte eine for-Schleife erstellen, die eine neue Datentabelle für jede der 5 Zeilen erstellt, wobei in dieser neuen Datentabelle eine neue Spalte mit einer Zufallsstichprobenfunktion basierend auf den Parametern der Zeile hinzugefügt wird.
zB Zeile 1 -> Normal, (0.1,0.02); Erstellen Sie eine neue Datentabelle mit einer Spalte mit der Formel
randomnormal(0.1,0.02)
Meine aktuelle Herausforderung besteht darin, dass unterschiedliche Verteilungstypen eine unterschiedliche Anzahl von Parametern erfordern. Ich freue mich über einige Einblicke, wie ich das angehen sollte.
Qualitäts- und VerfahrenstechnikBetreff: Wie automatisiere ich die Generierung von Zufallsstichproben aus verschiedenen Verteilungstypen?Es funktioniert, Jim! Danke
Betreff: Wie automatisiere ich die Generierung von Zufallsstichproben aus verschiedenen Verteilungstypen?Hallo,
Für das Problem, bei dem die Groß-/Kleinschreibung beachtet wird, finden Sie hier die Lösung:
Match( Uppercase( :Distribution ),
"NORMAL", Random Normal( :Parameter 1, :Parameter 2 ),
"LOGNORMAL", Random Lognormal( :Parameter 1, :Parameter 2 ),
.
)
Bezüglich der Beschränkung der Spaltenanzahl werde ich noch einmal darauf zurückkommen, da es etwas schwieriger ist.
Am besten,
TS
Betreff: Wie automatisiere ich die Generierung von Zufallsstichproben aus verschiedenen Verteilungstypen?Danke Thierry, irgendwelche Vorschläge, ob ich die Anzahl der Spalten für die Parameter begrenzen möchte?
Eine weitere Sorge, die ich habe, ist, dass ich glaube, dass bei der Match()-Formel die Groß-/Kleinschreibung beachtet wird. Ich kann versuchen, dies zu kontrollieren, indem ich eine Listenprüfung für die Spalte durchführe. Gibt es andere Möglichkeiten, dies zu kontrollieren/verwalten?
Betreff: Wie automatisiere ich die Generierung von Zufallsstichproben aus verschiedenen Verteilungstypen?Hier ist ein einfaches Beispiel dafür, wie Sie das tun, was Sie angefordert haben
Names Default To Here( 1 );
dt = New Table( "Sample",
Add Rows( 5 ),
New Column( "Types",
Character,
Set Values(
{"Normal", "Lognormal", "Weibull", "Uniform", "Johnson Su"}
),
Set Display Width( 79 )
),
New Column( "Parameters",
Character,
Set Values(
{"(0.1,0.02)", "(0.2,.005)", "(0.3,0.005)", "(0.1,0.5)",
"(0.5, 1, 1, 1)"}
),
Set Display Width( 101 )
)
);
For( i = 1, i <= N Rows( dt ), i++,
Eval(
Substitute(
Expr(
New Table( dt:Types[i],
add rows( 20 ),
New Column( "Random " || dt:Types[i],
set each value( __formula__ )
)
)
),
Expr( __formula__ ),
Parse( "Random " || dt:Types[i] || dt:Parameters[i] )
)
)
);
Bitte nehmen Sie sich die Zeit, die Funktionsweise des Skripts vollständig zu verstehen. Wenn Sie es nicht verstehen, antworten Sie bitte darauf, damit die Community Ihnen die zusätzlichen Informationen zukommen lassen kann, die Sie möglicherweise benötigen.
Betreff: Wie automatisiere ich die Generierung von Zufallsstichproben aus verschiedenen Verteilungstypen?Hallo,
Ein paar Gedanken:
1) Wenn möglich, würde ich die Parameter auf mehrere Spalten aufteilen, um die Skripterstellung der Formel zu vereinfachen
2) Ich würde die MATCH-Formel verwenden, um nach dem Namen der Verteilung zu suchen und speziell die Zufallsfunktion für die entsprechende Verteilung aufzurufen
Match( :Distribution,
"Normal", Random Normal( :Parameter 1, :Parameter 2 ),
"LogNormal", Random Lognormal( :Parameter 1, :Parameter 2 ),
.
)