算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
simulate-stochastic-process【设计与创意】Stochastische Prozesse (Markov-Ketten, Random Walks, SDEs, MCMC) mit Konvergenzdiagnostik, Varianzreduktion und Visualisierung simulieren. Verwenden beim Erzeugen von Stichprobenpfaden fuer Schaetzung, Vorhersage oder Visualisierung; wenn analytische Loesungen nicht handhabbar sind; bei Monte-Carlo-Schaetzung mit Konvergenzgarantien; bei Validierung …
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Stichprobenpfade aus stochastischen Prozessen simulieren -- einschliesslich diskreter Markov-Ketten, zeitkontinuierlicher Prozesse, stochastischer Differentialgleichungen und MCMC-Sampler -- mit Konvergenzdiagnostik, Varianzreduktionstechniken und Trajektorienvisualisierung.
| Eingabe | Typ | Beschreibung |
|---|---|---|
process_type | string | Art des Prozesses: "dtmc", "ctmc", "random_walk", "brownian_motion", "sde", "mcmc" |
parameters | dict | Prozessspezifische Parameter (Uebergangsmatrix, Drift-/Diffusionskoeffizienten, Zieldichte, etc.) |
n_paths | integer | Anzahl unabhaengiger zu simulierender Stichprobenpfade |
n_steps | integer | Anzahl der Zeitschritte pro Pfad (oder Gesamt-MCMC-Iterationen) |
| Eingabe | Typ | Standard | Beschreibung |
|---|---|---|---|
initial_state | scalar/vector | prozessspezifisch | Startzustand oder -verteilung fuer jeden Pfad |
dt | float | 0.01 | Zeitschrittgroesse fuer zeitkontinuierliche Diskretisierung |
seed | integer | zufaellig | Zufallsseed fuer Reproduzierbarkeit |
burn_in | integer | n_steps / 10 | Anzahl anfaenglich zu verwerfender Schritte (MCMC) |
thinning | integer | 1 | Jeden k-ten Sample behalten zur Autokorrelationsreduktion |
variance_reduction | string | "none" | Methode: "none", "antithetic", "stratified", "control_variate" |
target_function | callable | keine | Funktion zur Auswertung entlang der Pfade fuer Monte-Carlo-Schaetzung |
1.1. Prozesstyp identifizieren und alle erforderlichen Parameter zusammenstellen:
P und Zustandsraum. Validieren dass P zeilenstochastisch ist.Q. Validieren dass Zeilen sich zu 0 summieren und Nebendiagonaleintraege nicht-negativ sind.{-1, +1} mit gleicher Wahrscheinlichkeit), gegebenenfalls Grenzen.mu, Volatilitaet sigma, Dimension d.a(x,t), Diffusionsfunktion b(x,t).1.2. Parameterkonsistenz validieren:
1.3. Zufallsseed fuer Reproduzierbarkeit setzen.
Erwartet: Ein vollstaendig spezifiziertes stochastisches Modell mit validierten Parametern und einem reproduzierbaren Zufallszustand.
Bei Fehler: Wenn Parameter inkonsistent sind (z.B. nicht-stochastische Matrix), vor dem Fortfahren korrigieren. Wenn SDE-Koeffizienten pathologisch sind, ein anderes Diskretisierungsschema in Betracht ziehen.
2.1. Den geeigneten Algorithmus basierend auf dem Prozesstyp waehlen:
| Prozess | Methode | Schluesseleigenschaft |
|---|---|---|
| DTMC | Direkte Stichprobenziehung aus Uebergangszeile | Exakt |
| CTMC | Gillespie-Algorithmus (SSA) | Exakt, ereignisgesteuert |
| CTMC (approx.) | Tau-Leaping | Approximativ, schneller bei hohen Raten |
| Random Walk | Direkte Stichprobenziehung der Inkremente | Exakt |
| Brownsche Bew. | Kumulative Summe Gauss'scher Inkremente | Exakt fuer festes dt |
| SDE (allgemein) | Euler-Maruyama | Ordnung 0.5 stark, Ordnung 1.0 schwach |
| SDE (hoehere Ord.) | Milstein | Ordnung 1.0 stark (skalares Rauschen) |
| SDE (steif) | Implizites Euler-Maruyama | Stabil fuer steife Drift |
| MCMC (allgemein) | Metropolis-Hastings | Asymptotisch exakt |
| MCMC (Gradient) | Hamiltonsches Monte Carlo (HMC) | Besseres Mixing in hohen Dimensionen |
| MCMC (bedingt) | Gibbs-Sampler | Exakte Bedingungsverteilungen wenn verfuegbar |
2.2. Fuer SDE-Methoden dt klein genug fuer numerische Stabilitaet waehlen. Nuetzliche Heuristik: mit dt = 0.01 beginnen und halbieren bis Ergebnisse stabil sind.
2.3. Fuer MCMC die Vorschlagsskala anpassen um eine Akzeptanzrate von ungefaehr zu erreichen:
2.4. Wenn Varianzreduktion angefordert, diese konfigurieren:
Z auch mit -Z simulieren.Erwartet: Ein ausgewaehlter Simulationsalgorithmus passend zum Prozesstyp mit geeigneten Abstimmungsparametern.
Bei Fehler: Wenn die gewaehlte Methode instabil ist (z.B. Euler-Maruyama divergiert), zu einer impliziten Methode wechseln oder dt reduzieren.
3.1. Speicher fuer n_paths Trajektorien zuweisen, jeweils der Laenge n_steps (oder dynamisch fuer ereignisgesteuerte Methoden wie Gillespie).
3.2. Fuer jeden Pfad i = 1, ..., n_paths:
DTMC / Random Walk:
x[0] = initial_state setzent = 1, ..., n_steps: x[t] aus der Uebergangsverteilung gegeben x[t-1] ziehenCTMC (Gillespie):
x[0] = initial_state setzen, time = 0time < T_max:
lambda = -Q[x, x] berechnentau ~ Exp(lambda) ziehenQ[x, j] / lambda fuer j != x ziehentime += tau aktualisieren, Uebergang aufzeichnenSDE (Euler-Maruyama):
x[0] = initial_state setzent = 1, ..., n_steps:
dW = sqrt(dt) * N(0, I) (Wiener-Inkrement)x[t] = x[t-1] + a(x[t-1], t*dt) * dt + b(x[t-1], t*dt) * dWMCMC (Metropolis-Hastings):
x[0] = initial_state setzent = 1, ..., n_steps:
x' ~ q(x' | x[t-1]) vorschlagenalpha = min(1, p(x') * q(x[t-1]|x') / (p(x[t-1]) * q(x'|x[t-1]))) berechnenalpha akzeptieren: x[t] = x' falls akzeptiert, sonst x[t] = x[t-1]3.3. Wenn target_function angegeben, diese an jedem Zustand entlang jedes Pfades auswerten und Werte speichern.
3.4. Thinning anwenden: jeden thinning-ten Sample behalten.
3.5. burn_in Samples vom Beginn jedes Pfades verwerfen (hauptsaechlich fuer MCMC).
Erwartet: n_paths vollstaendige Trajektorien im Speicher, mit optionalen Funktionsauswertungen. MCMC-Akzeptanzrate liegt im Zielbereich.
Bei Fehler: Wenn die Simulation NaN- oder Inf-Werte erzeugt, dt fuer SDE-Methoden reduzieren oder Parametergueltigkeit pruefen. Wenn die MCMC-Akzeptanzrate nahe 0% oder 100% liegt, Vorschlagsskala anpassen.
4.1. Trace-Plots: Den Wert jeder Komponente ueber die Zeit fuer eine Teilmenge der Pfade darstellen. Visuelle Inspektion auf Stationaritaet (keine Trends, stabile Varianz).
4.2. Gelman-Rubin-Diagnostik (R-hat): Fuer MCMC mit mehreren Ketten:
W und Zwischen-Ketten-Varianz B berechnen.R_hat = sqrt((n-1)/n + B/(n*W))R_hat < 1.01 (streng) oder R_hat < 1.1 (nachsichtig).4.3. Effektive Stichprobengroesse (ESS):
ESS = n_samples / (1 + 2 * sum(autocorrelations))ESS > 400 fuer zuverlaessige Posterior-Zusammenfassungen.4.4. Geweke-Diagnostik: Mittelwert der ersten 10% und der letzten 50% jeder Kette vergleichen. Der z-Score sollte innerhalb [-2, 2] fuer Konvergenz liegen.
4.5. Fuer Nicht-MCMC-Prozesse: Sicherstellen dass zeitgemittelte Statistiken (Mittelwert, Varianz) mit zunehmender Pfadlaenge stabilisieren. Laufende Durchschnitte darstellen.
4.6. Eine Zusammenfassungstabelle erstellen:
| Diagnostik | Wert | Schwellenwert | Status |
|---|---|---|---|
| R-hat (max) | ... | < 1.01 | ... |
| ESS (min) | ... | > 400 | ... |
| Geweke z (max abs) | ... | < 2.0 | ... |
| Akzeptanzrate | ... | 0.15-0.50 | ... |
Erwartet: Alle Konvergenzdiagnostiken bestehen ihre Schwellenwerte. Trace-Plots zeigen stabile, gut mischende Ketten.
Bei Fehler: Wenn R-hat > 1.1, laengere Ketten laufen lassen oder den Vorschlag verbessern. Wenn ESS sehr niedrig ist, Thinning erhoehen oder zu einem besseren Sampler wechseln (z.B. HMC). Wenn Geweke fehlschlaegt, Burn-in verlaengern.
5.1. Fuer jede Groesse von Interesse (Zustandsbelegung, Funktionserwartungswert, Treffzeiten):
SE = SD / sqrt(ESS).5.2. Konfidenzintervalle konstruieren:
Schaetzung +/- z_{alpha/2} * SE5.3. Wenn Varianzreduktion angewandt wurde, den Varianzreduktionsfaktor berechnen:
VRF = Var(naiver Schaetzer) / Var(reduzierter Schaetzer)5.4. Fuer Monte-Carlo-Integrationsschaetzungen:
5.5. Fuer Verteilungsschaetzungen:
5.6. Alle Zusammenfassungsstatistiken mit ihren Unsicherheiten tabellieren.
Erwartet: Punktschaetzungen mit zugehoerigen Standardfehlern und Konfidenzintervallen. Varianzreduktion (falls angewandt) ergibt VRF > 1.
Bei Fehler: Wenn Konfidenzintervalle zu breit sind, n_paths oder n_steps erhoehen. Wenn Varianzreduktion Schaetzungen verschlechtert (VRF < 1), deaktivieren -- die Kontrollvariable oder das antithetische Schema passt moeglicherweise nicht zum Problem.
6.1. Trajektorienplots: Eine repraesentative Teilmenge von Stichprobenpfaden (5-20 Pfade) ueber die Zeit darstellen. Transparenz fuer ueberlappende Pfade verwenden.
6.2. Ensemble-Statistiken: Die mittlere Trajektorie und punktweise 95%-Konfidenzbaender ueber alle Pfade ueberlagern.
6.3. Randverteilungen: An ausgewaehlten Zeitpunkten Histogramme oder Dichteschaetzungen der Zustandsverteilung ueber Pfade darstellen.
6.4. Vergleich mit stationaerer Verteilung: Wenn eine analytische stationaere Verteilung verfuegbar ist, diese dem empirischen Histogramm der letzten Zeitscheibe ueberlagern.
6.5. Autokorrelationsplots: Fuer MCMC die Autokorrelationsfunktion (ACF) fuer jede Komponente bis zu einem vernuenftigen Lag darstellen.
6.6. Diagnostik-Dashboard: Trace-Plots, ACF-Plots, laufende Mittelwert-Plots und Randdichten zu einer einzigen Mehrfach-Paneel-Abbildung fuer umfassende Bewertung kombinieren.
6.7. Alle Abbildungen sowohl in Vektor- (PDF/SVG) als auch in Rasterformaten (PNG) fuer die Dokumentation speichern.
Erwartet: Publikationsreife Abbildungen die Trajektorienverhalten, Verteilungskonvergenz und diagnostische Zusammenfassungen zeigen. Analytische Loesungen (wo verfuegbar) stimmen mit empirischen Ergebnissen ueberein.
Bei Fehler: Wenn Visualisierungen Nichtstationaritaet oder nicht erwartete Multimodalitaet aus dem Modell zeigen, Schritte 1-2 auf Parameter- oder Methodenfehler ueberpruefen. Wenn Plots ueberladen sind, Anzahl dargestellter Pfade reduzieren oder Abbildungsgroesse erhoehen.
dt aendert Ergebnisse nicht qualitativ (Konvergenzordnungspruefung)1/sqrt(n_paths) ab (Zentraler Grenzwertsatz)