Wie automatisiere ich die Erzeugung von Zufallsstichproben aus verschiedenen Verteilungstypen?Angenommen, 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 hinzugefügt wird, die auf den Parametern der Zeile basiert.
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. Schätzen Sie einige Erkenntnisse darüber, wie ich das angehen soll.
SkriptingBetreff: Wie automatisiere ich die Erzeugung von Zufallsstichproben aus verschiedenen Verteilungstypen?Hallo,
Ein paar Gedanken:
1) Wenn möglich, würde ich die Parameter auf 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 ),
.
)
Betreff: Wie automatisiere ich die Erzeugung 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, um die Funktionsweise des Skripts vollständig zu verstehen. Wenn Sie es nicht verstehen, antworten Sie bitte, damit die Community Ihnen die zusätzlichen Informationen zur Verfügung stellen kann, die Sie möglicherweise benötigen.
Betreff: Wie automatisiere ich die Erzeugung von Zufallsstichproben aus verschiedenen Verteilungstypen?Danke Thierry, irgendwelche Vorschläge, wenn ich die Anzahl der Spalten für die Parameter begrenzen möchte?
Ein weiteres Problem, das ich habe, ist, dass die Match () - Formel zwischen Groß- und Kleinschreibung unterscheidet. Ich kann versuchen, dies zu kontrollieren, indem ich eine Listenprüfung in die Spalte setze. Gibt es andere Möglichkeiten, dies zu steuern / zu verwalten?