MCP HubMCP Hub
Retour aux compétences

simulate-stochastic-process

pjt222
Mis à jour 5 days ago
12 vues
17
2
17
Voir sur GitHub
Métaaidesign

À propos

Cette compétence simule des processus stochastiques tels que les chaînes de Markov, les EDS et les méthodes MCMC, en fournissant des trajectoires d'échantillonnage pour l'estimation, la prédiction et la visualisation. Elle inclut des fonctionnalités clés comme les diagnostics de convergence, la réduction de variance et des outils de visualisation. Utilisez-la lorsque les solutions analytiques sont inaccessibles ou lorsque vous devez effectuer des estimations par Monte Carlo avec des garanties de convergence.

Installation rapide

Claude Code

Recommandé
Principal
npx skills add pjt222/agent-almanac -a claude-code
Commande PluginAlternatif
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternatif
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/simulate-stochastic-process

Copiez et collez cette commande dans Claude Code pour installer cette compétence

Documentation

模擬隨機過程

模擬隨機過程之樣本路徑——含離散馬可夫鏈、連續時間過程、隨機微分方程與 MCMC 取樣器——附收斂診斷、變異數縮減技巧與軌跡視覺化。

適用時機

  • 須為估計、預測或視覺化從隨機過程生成樣本路徑
  • 解析解不可行而模擬為唯一可行進路
  • 執行蒙地卡羅估計而需收斂保證與不確定性量化
  • 欲以經驗模擬驗證解析結果(穩態分布、命中時間)
  • 須以 MCMC 自複雜後驗分布取樣
  • 於投入完整解析處理前先構造隨機模型雛形

輸入

必要

InputTypeDescription
process_typestringType of process: "dtmc", "ctmc", "random_walk", "brownian_motion", "sde", "mcmc"
parametersdictProcess-specific parameters (transition matrix, drift/diffusion coefficients, target density, etc.)
n_pathsintegerNumber of independent sample paths to simulate
n_stepsintegerNumber of time steps per path (or total MCMC iterations)

選擇性

InputTypeDefaultDescription
initial_statescalar/vectorprocess-specificStarting state or distribution for each path
dtfloat0.01Time step size for continuous-time discretization
seedintegerrandomRandom seed for reproducibility
burn_inintegern_steps / 10Number of initial steps to discard (MCMC)
thinninginteger1Keep every k-th sample to reduce autocorrelation
variance_reductionstring"none"Method: "none", "antithetic", "stratified", "control_variate"
target_functioncallablenoneFunction to evaluate along paths for Monte Carlo estimation

步驟

步驟一:定義過程模型與參數

1.1. 識別過程類型並收集所有必要參數:

  • DTMC:轉移矩陣 P 與狀態空間。驗證 P 為列隨機。
  • CTMC:速率矩陣 Q。驗證列和為 0 且非對角項非負。
  • 隨機漫步:步長分布(如 {-1, +1} 機率均等)、邊界(如有)。
  • 布朗運動:漂移 mu、波動率 sigma、維度 d
  • SDE(伊藤):漂移函式 a(x,t)、擴散函式 b(x,t)
  • MCMC:目標對數密度、提案機制(隨機漫步 Metropolis、Hamiltonian、Gibbs 分量)。

1.2. 驗證參數一致性:

  • 矩陣維度與狀態空間大小相符。
  • SDE 係數於所選求解器下滿足成長與 Lipschitz 條件(至少非形式地)。
  • MCMC 提案於目標分布之支撐上有良定義。

1.3. 設隨機種子以求可重現。

預期: 完整指明之隨機模型,參數已驗證且隨機狀態可重現。

失敗時: 若參數不一致(如非隨機矩陣),先修正再進。若 SDE 係數病態,考慮另一離散化方案。

步驟二:選擇模擬方法

2.1. 依過程類型選擇合適演算法:

ProcessMethodKey Property
DTMCDirect sampling from transition rowExact
CTMCGillespie algorithm (SSA)Exact, event-driven
CTMC (approx.)Tau-leapingApproximate, faster for high rates
Random walkDirect sampling of incrementsExact
Brownian motionCumulative sum of Gaussian incrementsExact for fixed dt
SDE (general)Euler-MaruyamaOrder 0.5 strong, order 1.0 weak
SDE (higher order)MilsteinOrder 1.0 strong (scalar noise)
SDE (stiff)Implicit Euler-MaruyamaStable for stiff drift
MCMC (general)Metropolis-HastingsAsymptotically exact
MCMC (gradient)Hamiltonian Monte Carlo (HMC)Better mixing for high dimensions
MCMC (conditional)Gibbs samplerExact conditionals when available

2.2. SDE 方法中,選 dt 須小至數值穩定。經驗法則:自 dt = 0.01 起並折半,直至結果穩定。

2.3. MCMC 中,調提案尺度以達約以下接受率:

  • 高維隨機漫步 Metropolis:23.4%
  • 一維目標:57.4%
  • HMC:65-90%(依軌跡長度而定)

2.4. 若請求變異數縮減,配置之:

  • 對偶變數:對每路徑之隨機增量 Z,亦以 -Z 模擬。
  • 分層取樣:劃分機率空間,於每層內取樣。
  • 控制變數:識別具已知期望之相關量以縮減變異數。

預期: 已選妥配對過程類型之模擬演算法及其調參。

失敗時: 若所選方法不穩(如 Euler-Maruyama 發散),轉至隱式方法或降 dt

步驟三:實作並執行模擬

3.1. 為 n_paths 條軌跡分配儲存空間,每條長 n_steps(或對如 Gillespie 之事件驅動方法動態分配)。

3.2. 對每路徑 i = 1, ..., n_paths

DTMC/隨機漫步:

  • x[0] = initial_state
  • t = 1, ..., n_steps:依給定 x[t-1] 之轉移分布取樣 x[t]

CTMC(Gillespie):

  • x[0] = initial_statetime = 0
  • time < T_max
    • 計算總速率 lambda = -Q[x, x]
    • 取樣保持時間 tau ~ Exp(lambda)
    • j != x,依轉移機率 Q[x, j] / lambda 取樣下一狀態
    • 更新 time += tau、記錄轉移

SDE(Euler-Maruyama):

  • x[0] = initial_state
  • t = 1, ..., n_steps
    • dW = sqrt(dt) * N(0, I)(Wiener 增量)
    • x[t] = x[t-1] + a(x[t-1], t*dt) * dt + b(x[t-1], t*dt) * dW

MCMC(Metropolis-Hastings):

  • x[0] = initial_state
  • t = 1, ..., n_steps
    • 提議 x' ~ q(x' | x[t-1])
    • 計算接受比 alpha = min(1, p(x') * q(x[t-1]|x') / (p(x[t-1]) * q(x'|x[t-1])))
    • 以機率 alpha 接受:接受則 x[t] = x',否則 x[t] = x[t-1]
    • 記錄接受決定

3.3. 若提供 target_function,於每路徑之每狀態評估之並儲存其值。

3.4. 套用稀疏化:保留每 thinning 之第 k 樣。

3.5. 自每路徑開頭丟棄 burn_in 樣(主要對 MCMC)。

預期: n_paths 條完整軌跡儲存於記憶體,附選擇性之函式評估。MCMC 接受率於目標範圍內。

失敗時: 若模擬產生 NaN 或 Inf,對 SDE 方法降 dt 或檢查參數有效性。若 MCMC 接受率近 0% 或 100%,調整提案尺度。

步驟四:套用收斂診斷

4.1. 追蹤圖:對部分路徑繪每分量之值隨時間之變化。視覺檢查穩態(無趨勢、變異數穩定)。

4.2. Gelman-Rubin 診斷(R-hat):對含多鏈之 MCMC:

  • 計算鏈內變異數 W 與鏈間變異數 B
  • R_hat = sqrt((n-1)/n + B/(n*W))
  • 收斂示為 R_hat < 1.01(嚴格)或 R_hat < 1.1(寬鬆)。

4.3. 有效樣本數(ESS)

  • 估計遞增滯後之自相關。
  • ESS = n_samples / (1 + 2 * sum(autocorrelations))
  • 經驗法則:ESS > 400 為可靠後驗摘要。

4.4. Geweke 診斷:比對每鏈前 10% 與後 50% 之均值。z 分數應於 [-2, 2] 內以示收斂。

4.5. 對非 MCMC 過程:驗證時間平均統計(均值、變異數)隨路徑長度增而穩定。繪走動均值。

4.6. 報告摘要表:

DiagnosticValueThresholdStatus
R-hat (max)...< 1.01...
ESS (min)...> 400...
Geweke z (max abs)...< 2.0...
Acceptance rate...0.15-0.50...

預期: 所有收斂診斷皆過其閾值。追蹤圖示鏈穩定且混合良好。

失敗時: 若 R-hat > 1.1,跑更長之鏈或改善提案。若 ESS 甚低,增稀疏化或轉至更佳取樣器(如 HMC)。若 Geweke 失敗,延長 burn-in。

步驟五:計算摘要統計與信賴區間

5.1. 對每關注量(狀態占用、函式期望、命中時間):

  • 計算點估計為跨路徑(burn-in 與稀疏化後)之樣本均值。
  • 用有效樣本數計算標準誤:SE = SD / sqrt(ESS)

5.2. 構造信賴區間:

  • 常態近似:estimate +/- z_{alpha/2} * SE
  • 偏態分布用百分位 bootstrap 或批次均值。

5.3. 若已套變異數縮減,計算變異數縮減因子:

  • VRF = Var(naive estimator) / Var(reduced estimator)
  • 報告有效加速。

5.4. 對蒙地卡羅積分估計:

  • 報告估計、標準誤、95% CI、ESS 與函式評估數。

5.5. 對分布估計:

  • 計算經驗分位數(中位數、2.5、97.5 百分位)。
  • 對連續量做核密度估計。

5.6. 列表所有摘要統計及其不確定性。

預期: 點估計附對應標準誤與信賴區間。變異數縮減(若已套)產生 VRF > 1。

失敗時: 若信賴區間過寬,增 n_pathsn_steps。若變異數縮減反惡化估計(VRF < 1),停用之——控制變數或對偶方案或不適本問題。

步驟六:視覺化軌跡與分布

6.1. 軌跡圖:繪具代表性之樣本路徑子集(5-20 條)隨時間之變化。對重疊路徑用透明度。

6.2. 集合統計:疊繪均值軌跡與跨所有路徑之點對點 95% 信賴帶。

6.3. 邊際分布:於選定時點,繪跨路徑之狀態分布之直方圖或密度估計。

6.4. 穩態分布比對:若有解析穩態分布,疊於最終時間切片之經驗直方圖上。

6.5. 自相關圖:對 MCMC,繪每分量自相關函式(ACF)至合理滯後。

6.6. 診斷儀表板:將追蹤圖、ACF 圖、走動均值圖與邊際密度合於單一多面板圖以供綜合評估。

6.7. 將所有圖以向量(PDF/SVG)與點陣(PNG)格式存檔以供文件用。

預期: 出版品質之圖示,呈現軌跡行為、分布收斂與診斷摘要。解析解(如有)與經驗結果相符。

失敗時: 若視覺化揭示模型未預期之非穩態或多模態,回看步驟一二之參數或方法錯誤。若圖過雜亂,減顯示路徑數或加大圖尺。

驗證

  • 所有模擬軌跡留於有效狀態空間(無越界值、無 NaN/Inf)
  • DTMC/CTMC:經驗穩態分布收斂至解析者(於預期蒙地卡羅誤差內)
  • SDE:折半 dt 不對結果產生質性變化(收斂階檢查)
  • MCMC:R-hat < 1.01、ESS > 400、Geweke z 分數於 [-2, 2] 內
  • 信賴區間寬度依 1/sqrt(n_paths) 比例縮小(中央極限定理)
  • 變異數縮減技巧產生 VRF > 1(估計改善而非惡化)
  • 可重現性:同種子重跑產生相同結果

常見陷阱

  • MCMC burn-in 不足:自不良初始狀態起需長 burn-in 樣本方能代表目標分布。永遠檢查追蹤圖並用收斂診斷,而非猜 burn-in 長。
  • 僵硬 SDE 之 Euler-Maruyama 不穩:若漂移項梯度大,顯式 Euler-Maruyama 可能發散。轉隱式方法或用適應步長。
  • 混淆 SDE 之強弱收斂:強收斂衡量逐路徑誤差(對個別軌跡重要);弱收斂衡量分布誤差(對期望足夠)。Euler-Maruyama 弱階為 1.0 但強階為 0.5。
  • 偽隨機數生成器品質:對極長模擬,低品質 RNG 可能產相關樣本。用經充分測試之生成器(Mersenne Twister、PCG 或 Xoshiro)並驗獨立性。
  • 忽略 MCMC 自相關:將自相關 MCMC 樣本當獨立會低估不確定性。永遠用有效樣本數,非原始樣本數,計算標準誤。
  • 對非單調函式用對偶變數:對偶取樣僅當被估量為底層均勻變數之單調函式時縮減變異數。對非單調函式可能增變異數。
  • 大規模模擬之記憶體:儲存多長路徑之所有時步可能耗盡記憶體。當完整軌跡非視覺化所需時,用線上統計(走動均值、變異數)。

相關技能

Dépôt GitHub

pjt222/agent-almanac
Chemin: i18n/wenyan-lite/skills/simulate-stochastic-process
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Compétences associées

content-collections

Méta

Cette compétence propose une configuration éprouvée en production pour Content Collections, un outil axé sur TypeScript qui transforme des fichiers Markdown/MDX en collections de données typées de manière sûre avec une validation Zod. Utilisez-la lors de la création de blogs, de sites de documentation ou d'applications Vite + React riches en contenu pour garantir la sécurité de typage et la validation automatique du contenu. Elle couvre tout, de la configuration du plugin Vite et de la compilation MDX à l'optimisation des déploiements et la validation des schémas.

Voir la compétence

polymarket

Méta

Cette compétence permet aux développeurs de créer des applications avec la plateforme de marchés prédictifs Polymarket, incluant l'intégration d'API pour le trading et les données de marché. Elle fournit également une diffusion de données en temps réel via WebSocket pour surveiller les transactions en direct et l'activité du marché. Utilisez-la pour mettre en œuvre des stratégies de trading ou pour créer des outils traitant les mises à jour de marché en direct.

Voir la compétence

creating-opencode-plugins

Méta

Cette compétence aide les développeurs à créer des plugins OpenCode qui s'interconnectent avec plus de 25 types d'événements tels que les commandes, les fichiers et les opérations LSP. Elle fournit la structure du plugin, les spécifications de l'API événementielle et les modèles d'implémentation pour les modules JavaScript/TypeScript. Utilisez-la lorsque vous avez besoin d'intercepter, de surveiller ou d'étendre le cycle de vie de l'assistant IA OpenCode avec une logique personnalisée pilotée par les événements.

Voir la compétence

sglang

Méta

SGLang est un framework de service LLM haute performance spécialisé dans la génération rapide et structurée pour les workflows JSON, regex et agentiques grâce à son cache de préfixe RadixAttention. Il offre une inférence nettement plus rapide, particulièrement pour les tâches avec des préfixes répétés, ce qui le rend idéal pour les sorties complexes et structurées ainsi que les conversations multi-tours. Choisissez SGLang plutôt que des alternatives comme vLLM lorsque vous avez besoin d'un décodage contraint ou que vous construisez des applications avec un partage étendu de préfixes.

Voir la compétence