i18n/de/skills/model-markov-chain/SKILL.md
Diskrete oder kontinuierliche Markov-Ketten erstellen und analysieren, einschliesslich Uebergangsmatrix-Konstruktion, Zustandsklassifikation, Berechnung stationaerer Verteilungen und mittlerer Erstpassagezeiten. Verwenden beim Modellieren eines gedaechtnislosen Systems mit beobachteten Uebergangszaehlungen oder -raten, beim Berechnen von langfristigen stationaeren Wahrscheinlichkeiten, beim Bestimmen erwarteter Treffzeiten oder Absorptionswahrscheinlichkeiten, beim Klassifizieren von Zustaenden als transient oder rekurrent oder beim Aufbau einer Grundlage fuer Hidden Markov Models oder Reinforcement Learning MDPs.
npx skillsauth add pjt222/agent-almanac model-markov-chainInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Diskrete oder zeitkontinuierliche Markov-Ketten aus Roh-Uebergangsdaten oder Domaenenspezifikationen konstruieren, klassifizieren und analysieren, mit Berechnung stationaerer Verteilungen, mittlerer Erstpassagezeiten und simulationsbasierter Validierung. Umfasst sowohl DTMC- als auch CTMC-Workflows durchgaengig.
| Eingabe | Typ | Beschreibung |
|---------|-----|--------------|
| state_space | list/vector | Vollstaendige Aufzaehlung aller Zustaende in der Kette |
| transition_data | Matrix, Data Frame oder Kantenliste | Roh-Uebergangszaehlungen, eine Wahrscheinlichkeitsmatrix oder eine Ratenmatrix (fuer CTMC) |
| chain_type | string | Entweder "discrete" (DTMC) oder "continuous" (CTMC) |
| Eingabe | Typ | Standard | Beschreibung |
|---------|-----|----------|--------------|
| initial_distribution | vector | uniform | Startzustandswahrscheinlichkeiten |
| time_horizon | integer/float | 100 | Anzahl der Schritte (DTMC) oder Zeiteinheiten (CTMC) fuer Simulation |
| tolerance | float | 1e-10 | Konvergenztoleranz fuer iterative Berechnungen |
| absorbing_states | list | auto-detect | Explizit als absorbierend markierte Zustaende |
| labels | list | state indices | Menschenlesbare Namen fuer jeden Zustand |
| method | string | "eigen" | Loesermethode: "eigen", "power" oder "linear_system" |
1.1. Alle unterscheidbaren Zustaende aufzaehlen. Bestaetigen, dass die Liste vollstaendig und sich gegenseitig ausschliessend ist.
1.2. Bei Arbeit mit Rohbeobachtungen die Uebergangszaehlungen in eine n x n Zaehlmatrix C tabellieren, wobei C[i,j] die Anzahl beobachteter Uebergaenge von Zustand i zu Zustand j ist.
1.3. Fuer zeitkontinuierliche Ketten die Verweilzeiten in jedem Zustand zusammen mit den Uebergangsdestinationen erfassen.
1.4. Verifizieren, dass kein Zustand in der Aufzaehlung fehlt, indem geprueft wird, dass jeder beobachtete Ursprung und jede Destination im Zustandsraum vorkommt.
1.5. Datenquelle, Beobachtungszeitraum und etwaige angewandte Filterung dokumentieren. Dieser Herkunftsnachweis ist wesentlich fuer die Reproduzierbarkeit der Analyse und die Erklaerung von Anomalien.
Erwartet: Ein wohldefinierter Zustandsraum der Groesse n und entweder eine Zaehlmatrix oder eine Liste von (Ursprung, Destination, Rate/Zaehlung)-Tupeln, die alle beobachteten Uebergaenge abdecken. Der Zustandsraum sollte klein genug fuer Matrixoperationen sein (typischerweise n < 10000 fuer dichte Methoden).
Bei Fehler: Wenn Zustaende fehlen, die Quelldaten erneut untersuchen und die Aufzaehlung erweitern. Wenn der Zustandsraum zu gross fuer Matrixmethoden ist, das Zusammenfassen seltener Zustaende in einen aggregierten „Sonstige"-Zustand erwaegen oder auf simulationsbasierte Analyse umsteigen. Wenn die Zaehlmatrix extrem duenn besetzt ist, pruefen ob der Beobachtungszeitraum lang genug ist, um typische Uebergaenge zu erfassen.
2.1. Diskrete Zeit (DTMC): Jede Zeile der Zaehlmatrix normalisieren, um die Uebergangswahrscheinlichkeitsmatrix P zu erhalten:
P[i,j] = C[i,j] / sum(C[i,])2.2. Kontinuierliche Zeit (CTMC): Die Raten-(Generator-)Matrix Q konstruieren:
Q[i,j] = Rate des Uebergangs von i nach jQ[i,i] = -sum(Q[i,j] fuer j != i)2.3. Nullzaehlungszeilen (Zustaende, die nie als Urspruenge beobachtet wurden) behandeln, indem eine Glaettungsstrategie gewaehlt wird: Laplace-Glaettung, Absorptionskonvention oder Kennzeichnung zur Ueberpruefung.
2.4. Die Matrix in einem fuer nachgelagerte Berechnungen geeigneten Format speichern (dicht fuer kleine Ketten, duenn besetzt fuer grosse).
Erwartet: Eine gueltige stochastische Matrix P (Zeilen summieren sich zu 1) oder Generatormatrix Q (Zeilen summieren sich zu 0) ohne negative Nebendiagonaleintraege in P und ohne positive Diagonaleintraege in Q.
Bei Fehler: Wenn Zeilensummen ueber die Toleranz hinaus abweichen, auf Datenkorruption oder Gleitkommaprobleme pruefen. Renormalisieren oder Quelldaten erneut untersuchen.
3.1. Die Kommunikationsklassen berechnen, indem die stark zusammenhaengenden Komponenten des gerichteten Graphen gefunden werden, der durch die Uebergangsmatrix induziert wird (nur Kanten mit positiver Wahrscheinlichkeit).
3.2. Fuer jede Kommunikationsklasse bestimmen:
P[i,i] = 1 besteht.3.3. Die Periodizitaet fuer jede rekurrente Klasse pruefen, indem der GGT aller Zykluslaengen berechnet wird, die von jedem Zustand in der Klasse erreichbar sind.
3.4. Bestimmen, ob die Kette irreduzibel (einzelne Kommunikationsklasse) oder reduzibel (mehrere Klassen) ist.
3.5. Zusammenfassen: jede Klasse auflisten mit Typ (transient/rekurrent), Periode und ob absorbierende Zustaende existieren.
Erwartet: Eine vollstaendige Klassifikation: jeder Zustand einer Kommunikationsklasse zugeordnet mit Bezeichnungen (transient, positiv rekurrent, null-rekurrent, absorbierend) und Periodizitaet.
Bei Fehler: Wenn die Graphanalyse inkonsistent ist, die Uebergangsmatrix auf negative Eintraege und korrekte Zeilensummen pruefen. Fuer sehr grosse Ketten iterative Graphalgorithmen statt voller Matrixpotenzen verwenden.
4.1. Irreduzible aperiodische Kette: pi * P = pi unter der Nebenbedingung sum(pi) = 1 loesen.
pi * (P - I) = 0 mit der Normierungsbedingung.pi ist der linke Eigenvektor von P zum Eigenwert 1, normiert auf Summe 1.4.2. Irreduzible periodische Kette: Die stationaere Verteilung existiert weiterhin, aber die Kette konvergiert nicht im ueblichen Sinne von beliebigen Startzustaenden. Berechnung wie in 4.1.
4.3. Reduzible Kette: Die stationaere Verteilung fuer jede rekurrente Klasse unabhaengig berechnen. Die Gesamtverteilung ist eine Konvexkombination, abhaengig von Absorptionswahrscheinlichkeiten aus transienten Zustaenden.
4.4. CTMC: pi * Q = 0 mit sum(pi) = 1 loesen.
4.5. Verifizieren: das berechnete pi mit P (oder Q) multiplizieren und bestaetigen, dass das Ergebnis pi innerhalb der Toleranz entspricht.
4.6. Fuer reduzible Ketten die Absorptionswahrscheinlichkeiten von jedem transienten Zustand zu jeder rekurrenten Klasse berechnen. Diese Wahrscheinlichkeiten, kombiniert mit den klassenweisen stationaeren Verteilungen, ergeben das langfristige Verhalten bedingt auf den Startzustand.
4.7. Die Spektralluecke erfassen (Differenz zwischen dem groessten und zweitgroessten Eigenwertbetrag). Diese Groesse bestimmt die Konvergenzrate zur Stationaritaet und ist nuetzlich fuer die Bestimmung der benoetigten Simulationsschritte in Schritt 6.
Erwartet: Ein Wahrscheinlichkeitsvektor pi der Laenge n mit allen nicht-negativen Eintraegen, Summe 1, der die Gleichgewichtsgleichungen innerhalb der Toleranz erfuellt. Die Spektralluecke sollte fuer aperiodische irreduzible Ketten positiv sein.
Bei Fehler: Wenn der Eigenwertloeser nicht konvergiert, die iterative Potenzmethode versuchen (pi_k+1 = pi_k * P bis Konvergenz). Wenn mehrere Eigenwerte gleich 1 sind, ist die Kette reduzibel — gemaess Schritt 4.3 behandeln. Wenn die Spektralluecke extrem klein ist, mischt die Kette langsam und erfordert sehr lange Simulationen zur Validierung.
5.1. Die mittlere Erstpassagezeit m[i,j] als die erwartete Anzahl von Schritten definieren, um Zustand j ausgehend von Zustand i zu erreichen.
5.2. Fuer eine irreduzible Kette das System linearer Gleichungen loesen:
m[i,j] = 1 + sum(P[i,k] * m[k,j] fuer k != j) fuer alle i != jm[j,j] = 1 / pi[j] (mittlere Rekurrenzzeit)5.3. Fuer absorbierende Ketten Absorptionswahrscheinlichkeiten und erwartete Zeiten bis zur Absorption berechnen:
P in transiente (Q_t) und absorbierende Bloecke partitionieren.N = (I - Q_t)^{-1}N * 1 (Spaltenvektor aus Einsen)N * R wobei R der Transient-zu-Absorbierend-Block ist.5.4. Fuer CTMC Schrittzaehlungen durch erwartete Verweilzeiten unter Verwendung der Generatormatrix ersetzen.
5.5. Ergebnisse als Matrix oder Tabelle paarweiser Erstpassagezeiten fuer wichtige Zustandspaare darstellen.
Erwartet: Eine Matrix mittlerer Erstpassagezeiten, bei der Diagonaleintraege den mittleren Rekurrenzzeiten entsprechen (1/pi[j]) und Nebendiagonaleintraege fuer kommunizierende Zustandspaare endlich sind.
Bei Fehler: Wenn das lineare System singulaer ist, hat die Kette transiente Zustaende, die das Ziel nicht erreichen koennen. Unerreichbare Paare als unendlich melden. Die Kettenstruktur aus Schritt 3 verifizieren.
6.1. K unabhaengige Stichprobenpfade der Kette fuer T Schritte simulieren, startend von der Anfangsverteilung.
6.2. Die stationaere Verteilung empirisch schaetzen, indem Zustandsbelegungshaeufigkeiten ueber alle Pfade gezaehlt werden, nach Verwerfen einer Einbrennphase.
6.3. Simulierte Haeufigkeiten mit der analytischen stationaeren Verteilung vergleichen. Die Totalvariationsdistanz oder Chi-Quadrat-Statistik berechnen.
6.4. Mittlere Erstpassagezeiten empirisch schaetzen, indem die erste Treffzeit fuer jeden Zielzustand ueber Replikationen erfasst wird.
6.5. Uebereinstimmungsmetriken berichten:
6.6. Wenn Abweichungen die Toleranz ueberschreiten, die Uebergangsmatrix-Konstruktion und Klassifikationsschritte erneut untersuchen.
Erwartet: Simulierte stationaere Verteilung innerhalb von 0,01 Totalvariationsdistanz zur analytischen Loesung (bei ausreichend langen Laeufen). Simulierte mittlere Erstpassagezeiten innerhalb von 10% der analytischen Werte.
Bei Fehler: Simulationslaenge T oder Anzahl der Replikationen K erhoehen. Wenn Abweichungen bestehen bleiben, kann die analytische Loesung numerische Fehler haben — mit hoeherer Praezision neu berechnen.
P hat alle nicht-negativen Eintraege und jede Zeile summiert sich zu 1 (oder Q-Zeilen summieren sich zu 0 fuer CTMC)pi ist ein gueltiger Wahrscheinlichkeitsvektor, der pi * P = pi erfuellt1/pi[j] fuer jeden rekurrenten Zustand jP haben Betrag hoechstens 1, mit genau einem Eigenwert gleich 1 pro rekurrenter KlasseN = (I - Q_t)^{-1} hat alle positiven Eintraege (erwartete Besuchszaehlungen sind positiv)pi[i] * P[i,j] = pi[j] * P[j,i] fuer alle i,jpi[i] * P[i,j] = pi[j] * P[j,i] vor der Verwendung reversibilitaetsabhaengiger Ergebnisse verifizierenpi * P akkumuliert Rundungsfehler. pi waehrend der Potenziteration periodisch auf Summe 1 renormalisierentesting
Launch all available agents in parallel waves for open-ended hypothesis generation on problems where the correct domain is unknown. Use when facing a cross-domain problem with no clear starting point, when single-agent approaches have stalled, or when diverse perspectives are more valuable than deep expertise. Produces a ranked hypothesis set with convergence analysis and adversarial refinement.
tools
Write integration tests for a Node.js CLI application using the built-in node:test module. Covers the exec helper pattern, output assertions, filesystem state verification, cleanup hooks, JSON output parsing, error case testing, and state restoration after destructive tests. Use when adding tests to an existing CLI, testing a new command, verifying adapter behavior across frameworks, or setting up CI for a CLI tool.
development
Screen a proposed trademark for conflicts and distinctiveness before filing. Covers trademark database searches (TMview, WIPO Global Brand Database, USPTO TESS), distinctiveness analysis using the Abercrombie spectrum, likelihood of confusion assessment using DuPont factors and EUIPO relative grounds, common law rights evaluation, and goods/services overlap analysis. Produces a conflict report with a risk matrix. Use before adopting a new brand name, logo, or slogan — distinct from patent prior art search, which uses different databases, legal frameworks, and analysis methods.
tools
Scaffold a new CLI command using Commander.js with options, action handler, three output modes (human-readable, quiet, JSON), and optional ceremony variant. Covers command naming, option design, shared context patterns, error handling, and integration testing. Use when adding a command to an existing Commander.js CLI, designing a new CLI tool from scratch, or standardizing command structure across a multi-command CLI.