尧图精选

维纳过程:从二次变差、Itô积分到SDE模拟与扩散模型

🕒 发布时间:2026/10/1 4:32:32 📁 来源:尧图网络
维纳过程这个名字我第一次认真对待它不是在概率论的课堂上而是在帮人调一段期权定价的蒙特卡洛代码的时候。对方把时间步长从 1/252 细化到 1/2520满心以为结果会更贴近理论值跑完发现误差只降了一点点换个随机种子再跑两组结果之间的差距甚至比理论误差还大。问题不在代码写错了而在于他用的欧拉格式对维纳过程驱动的随机微分方程只有 0.5 阶强收敛——步长缩到十分之一路径层面的误差只缩到原来的三分之一左右。这个反直觉的现象恰恰是理解维纳过程最好的入口它不是一个连续版本的正态随机游走这么简单它的路径粗糙到让经典微积分的全部直觉失效。这篇内容我打算把它讲透从定义为什么长成那样到二次变差、Itô 积分再到数值模拟的实操和它在金融、滤波、生成模型里的落地顺带把我自己踩过的坑摆出来。有微积分和概率论基础就能读没有的部分我用类比补齐。1. 定义里的每一条都在排除一种想当然1.1 三条性质少一条都不成立标准定义里维纳过程是一族随机变量 W(t)t ≥ 0同时满足下面几条W(0) 0几乎必然成立增量独立对任意 0 ≤ t₀ t₁ … tₙ各个增量 W(tᵢ) − W(tᵢ₋₁) 相互独立增量正态W(t) − W(s) 服从均值为 0、方差为 t − s 的正态分布记作 N(0, t − s)路径连续t 到 W(t) 的映射在几乎每条样本轨道上都连续。很多人看完只记住增量是正态的然后把前两条丢掉。丢掉独立性和零起点你会得到一族完全不同的东西——比如 W(t) 常数它增量照样正态但 W(0) 不是 0或者把增量之间的相关性设计成负的那得到的是别的过程。这三条是绑在一起起作用的缺一条整个理论框架就搭不起来。还有一条容易被忽略方差等于时间差而不是时间的某个非线性函数。这一条把维纳过程和很多看似相似的连续过程区分开了。如果方差是 (t − s)^α 且 α ≠ 1比如 α 1.7那得到的是分数布朗运动它连鞅都不是整套随机积分理论要推倒重来。1.2 为什么偏偏是正态分布这里有个很自然的疑问凭什么增量必须服从正态分布而不是均匀分布、拉普拉斯分布或者别的什么。答案要从中心极限的视角看。设想一个粒子被大量微小、近似独立、方向随机的碰撞推来推去每一小段时间内它被撞的次数非常多每次推动的方向和大小都差不多但相互独立。根据中心极限定理这些微小位移的总和会向正态分布收敛而且这个收敛与单次碰撞的具体分布形状关系不大。正态分布不是因为自然界喜欢正态而是因为它是一大堆独立小扰动叠加之后的极限形态。正态分布还有一个关键特点它的尺度是随 t 的平方根走的。也就是说要让位移的方差翻倍时间必须变成四倍。这个根号时间的比例关系贯穿维纳过程的全部应用股票波动率年化要乘以根号 252、随机游走的典型偏离量按 √n 增长、误差随 √n 收敛全是同一个根号在起作用。你在做模拟时如果发现某个量对时间步长的敏感度表现为平方根基本上可以判断背后有维纳过程的影子。1.3 从随机游走到连续极限一次标准缩放把维纳过程看成随机游走的极限最直观。设一个粒子每步以等概率左右移动步长 Δx每步耗时 Δt。走 n 步之后位置的标准差是 Δx·√n而这 n 步对应的时间是 n·Δt。要让这两个量之间产生方差正比于时间的关系就必须让 Δx 正比于 √Δt。这就是缩放的本质。如果你天真地让步长固定、时间步长无限缩小那么粒子在单位时间内的位移会趋于无穷路径会变得极端剧烈而失去意义如果你让步长随时间步长线性缩小那扩散效应会彻底消失路径退化成一条直线。只有 Δx ∝ √Δt 这个临界缩放才留下一个非平凡的极限对象也就是维纳过程。很多人在初学时觉得这个缩放只是个技术细节实际上它是整个连续时间随机分析能成立的原因。2. 路径连续却几乎处处不可微这件事到底有多反常2.1 直觉的崩塌ΔW 的量级是 √Δt先做一个量级估算。因为 W(t Δt) − W(t) 服从 N(0, Δt)它的典型大小是 √Δt。那么差商 [W(t Δt) − W(t)] / Δt 的典型大小就是 √Δt / Δt 1/√Δt。当 Δt 趋于 0 时这个量发散到无穷。也就是说在任何一点切线斜率的候选项都冲向无穷导数根本不存在。这个结论的强度比一般想象的更大维纳过程不只是某些点不可微而是以概率 1 在每一点都不可微。第一次看到这个定理的人通常会怀疑那画出来的路径怎么看起来还挺光滑。这里要分清楚我们画图时看到的光滑其实是分辨率不够造成的视觉误差。当你在屏幕上把时间轴放大十倍路径不会变得更直而是继续暴露出新的锯齿。这是一种自相似结构放大多少倍看到的粗糙程度都差不多。2.2 二次变差维纳过程真正的第二定义如果要选一个最能区分懂和不懂的知识点我会选二次变差。对一条分割 0 t₀ t₁ … tₙ T 的路径定义Q Σᵢ [W(tᵢ) − W(tᵢ₋₁)]²当分割越来越细这个和收敛到 T而且是均方收敛。对比一下普通的光滑函数对一条可微曲线同样的平方和会趋于 0因为每一项都是 (Δx)² 量级加起来的量级是 Δx。维纳过程的每一项是 Δt 量级加起来正好是 T。这就是路径粗糙性最精确的定量刻画。这条性质带来一个被无数教材奉为口诀的公式(dW)² dt。它不是普通意义上的乘法而是在取极限的二次变差这个意义下成立的运算规则。正确理解方式是在随机泰勒展开里二阶项 (dW)² 不会像经典微分里那样自动消失它贡献了一个 dt 量级的主项。所有 Itô 型公式里那个多出来的 1/2 二阶项源头就在这里。用代码验证一下这个收敛import numpy as np def wiener(T1.0, n2000, paths5000, seed7): rng np.random.default_rng(seed) dt T / n dW rng.normal(0.0, np.sqrt(dt), size(paths, n)) W np.concatenate([np.zeros((paths, 1)), np.cumsum(dW, axis1)], axis1) t np.linspace(0.0, T, n 1) return t, W t, W wiener() qv np.sum(np.diff(W, axis1) ** 2, axis1) print(qv.mean()) # 趋近 1.0 print(qv.std()) # 理论值 sqrt(2/n) ≈ 0.0316如果这里只跑 100 条路径你会看到均值在 0.95 到 1.05 之间晃。要看出收敛趋势路径数量至少上千条。这个实验我做给过好几个同事看他们几乎都低估了收敛所需样本量。2.3 全变差无穷与分形维数 1.5既然平方和收敛到一个正数那一阶变差 Σ|ΔW| 会怎样每一项的期望是 √(2Δt/π)一共 n 项所以总和的期望量级是 n·√Δt √(n·T)随 n 增大而发散。维纳路径的全变差是无穷大。这条性质直接决定了黎曼-斯蒂尔杰斯积分没法用后面第 3 节会展开。另一个有意思的量化指标是分形维数。维纳过程图像的盒计数维数是 1.5介于光滑曲线1和填满平面2之间。一些做信号处理的人会拿这个指标做特征提取把传感器的时间序列用 Higuchi 或者 DFA 方法估一个分形维数出来估出来接近 1.5 的往往确实带有扩散型噪声特征明显低于 1.5 的通常意味着信号里有平滑成分或者高频噪声被滤掉了。这个方法不精细但作为快速筛查手段挺好用。3. Itô 积分为什么不能照搬黎曼那一套3.1 黎曼-斯蒂尔杰斯在这里撞墙想定义 ∫₀ᵀ f(t) dW(t)最自然的做法是取分割求和 Σ f(τᵢ)[W(tᵢ) − W(tᵢ₋₁)]然后让分割变细。对普通的有界变差函数这个极限存在且唯一。但维纳路径的全变差是无穷的黎曼-斯蒂尔杰斯的成立条件直接不满足。更要命的是即使极限存在它大概率会依赖于 τᵢ 怎么选。这一点让很多人第一次接触时非常不适应因为我们在确定性的世界里习惯了下积分和上积分趋于同一个值。现在情况变了取左端点、右端点、中点会得到三个不同的结果。这不是技术瑕疵而是维纳过程粗糙性带来的本质后果。于是数学上必须做选择把不同选择固化成不同的积分定义。3.2 Itô 与 Stratonovich不是对错是用途两种最常用的选择是积分类型求和时取值点链式法则主要使用场景Itô取区间左端点多出 1/2 二阶项金融定价、鞅理论、滤波Stratonovich取区间中点与经典链式法则一致物理建模、噪声近似、几何随机分析Itô 积分的关键优点在于被积函数在区间左端取值与当前增量独立这使得积分结果保持鞅性期望计算非常干净。金融里之所以几乎一边倒地用 Itô就是因为无套利定价的核心是鞅一旦破坏鞅性风险中性测度和定价公式全都要重新推导。Stratonovich 积分的优势是它保留经典微积分的规则处理物理方程时心里负担小。它和 Itô 积分之间有明确的换算关系对一维情形相差一个修正项具体形式取决于被积函数与扩散系数的乘积导数。实操中最容易出错的场景是从论文里抄来一个 SDE没有确认它是哪种解释直接扔进数值求解器。欧拉格式天然逼近 Itô 解米尔斯泰因格式也是如果原文的 SDE 是 Stratonovich 形式的你必须先转成 Itô 形式再离散否则会得到一个系统性的偏差步长越细偏差越稳定地存在让你误以为结果收敛得很好。3.3 Itô 引理的手把手推导设 f(x) 二阶连续可微对 f(W(t)) 做泰勒展开df f′(W) dW (1/2) f″(W) (dW)² 高阶项经典微积分里 (dW)² 是二阶小量直接丢掉。但前面已经验证过 (dW)² dt所以这一项要保留得到df(W(t)) f′(W(t)) dW(t) (1/2) f″(W(t)) dt这个多出来的 (1/2)f″ dt 项就是 Itô 引理的全部秘密。它有个很好的物理解读它衡量的是函数 f 的凸性如何被路径的抖动转化为一个确定性的漂移。如果 f 是凸函数f″ 0抖动会带来正的漂移如果 f 是凹函数会带来负漂移。这一点在期权定价里直接体现为对数价格比价格本身多了一个 −σ²/2 的修正下面第 5 节会细讲。多变量版本同样重要。对 f(t, x) 有df (∂f/∂t) dt (∂f/∂x) dW (1/2)(∂²f/∂x²) dt注意 dt 项里同时有显式时间导数和二阶空间导数两块它们在推导偏微分方程时会被合并到一起这也是 Fokker-Planck 方程里出现二阶导的原因。3.4 一个能亲手算的例子拿最经典的 ∫₀ᵀ W dW 来练手。取 f(x) x²/2由 Itô 引理d(W²) 2W dW dt整理得 W dW (1/2)[d(W²) − dt]两边从 0 到 T 积分∫₀ᵀ W dW (W(T)² − T) / 2对比一下如果按普通微积分的直觉你会写成 W(T)²/2两者差了 T/2。这个差额在 T 1 时是 0.5在方差量级上完全不能忽略。取期望验证E[W(T)²] T所以右边期望是 0而直接按经典公式会得到 T/2。Itô 积分保持零均值这一性质正是它在金融里好用的原因。4. 把连续对象搬进计算机模拟维纳过程的实操与坑4.1 欧拉-马鲁山格式的收敛阶考虑一般形式的 SDEdX a(X) dt b(X) dW。最简单的离散化是Xₙ₊₁ Xₙ a(Xₙ) Δt b(Xₙ) √Δt · ZₙZₙ ~ N(0,1)这就是欧拉-马鲁山格式。它的强收敛阶是 0.5意思是路径层面的误差按 √Δt 缩小弱收敛阶是 1.0意思是矩的误差按 Δt 缩小。这两个数字的差别非常关键它解释了很多实际现象如果你只关心最终时刻的期望、方差这类统计量用欧拉格式是够的误差按 Δt 走相对便宜如果你关心的是路径依赖的收益比如障碍期权、回望期权、首达时间误差按 √Δt 走成本急剧上升想把路径误差降低 10 倍步数要增加 100 倍这才是开头那个朋友实验失败的真正原因。如果你的 SDE 是乘性噪声形式用米尔斯泰因格式可以把强收敛阶提到 1.0代价是需要计算 b 的导数项。什么时候值得上米尔斯泰因我的经验是计算 b′(x) 的成本如果低于 10 倍步数带来的开销换格式更划算如果 b 是查表得到的、导数不解析宁可加步数。4.2 生成维纳路径的正确姿势import numpy as np def wiener(T1.0, n2000, paths5000, seed7): 生成 paths 条维纳路径时间网格 n1 个点。 rng np.random.default_rng(seed) dt T / n dW rng.normal(0.0, np.sqrt(dt), size(paths, n)) W np.concatenate([np.zeros((paths, 1)), np.cumsum(dW, axis1)], axis1) t np.linspace(0.0, T, n 1) return t, W两个细节值得强调。第一增量必须先按 √dt 缩放再累加我见过太多代码写成np.random.randn(n)直接累加结果时间尺度完全错了图形看着像但不满足方差正比于时间的性质。第二用np.cumsum而不是 Python 循环累加性能差好几个数量级而且 numpy 的向量化在生成 5000 条路径时几乎是免费的。4.3 用三条性质反查代码对不对写完模拟代码不要急着往下跑业务先做三个自检。自检一终点分布。W(T) 应该服从 N(0, T)。取 50000 条路径的终点均值应该在 0 附近标准差应该在 √T 附近。经验上样本量 50000 时均值落在 ±0.03T1范围内是正常的超出这个范围要怀疑随机数生成器或者缩放写错了。自检二二次变差。前面那段验证代码跑一遍均值和标准差要对得上。自检三首达时间。令 Tₐ 为首次触及水平 a 0 的时刻理论上有P(Tₐ ≤ T) 2(1 − Φ(a/√T))其中 Φ 是标准正态分布函数。a 1、T 1 时这个概率约 0.3173。蒙特卡洛估计from scipy.stats import norm a, T 1.0, 1.0 t, W wiener(TT, n2000, paths20000, seed42) dt T / 2000 hit W a idx np.argmax(hit, axis1) never ~hit.any(axis1) # 关键过滤从未触及的路径 tau np.where(never, np.nan, idx * dt) tau tau[~np.isnan(tau)] print(tau.size / 20000) # 未触及比例应约 0.6827 print(2 * (1 - norm.cdf(a / np.sqrt(T))))这里有个坑我必须单独说。np.argmax在整行全为 False 时返回 0如果不过滤那批从未触及水平的路径会被记成在时刻 0 就触及了估计出来的首达时间会被严重拉低。我第一次写这段代码就被坑了估出来的概率比理论值高了将近 0.1查了半天以为随机数有问题。4.4 一份踩过的坑清单问题现象根本原因处理方式路径图形正常但方差不对增量没乘 √dt检查缩放用终点分布自检换种子结果跳变很大路径数不足或 Monte Carlo 误差未评估用标准误 std/√paths 给出置信区间细化步长收益极小欧拉格式只有 0.5 阶强收敛换米尔斯泰因或改用解析解采样首达时间估计明显偏低未过滤从未触及的路径用hit.any(axis1)掩码结果不可复现用了全局随机状态一律使用default_rng(seed)实例参考值附近反复微调仍不收敛SDE 是 Stratonovich 形式先做 Itô 转换再离散最后一条尤其隐蔽。转换本身只涉及一个修正项但如果你不知道要做就会一直以为是自己步长不够、路径不够白白浪费机器时间。5. 几何布朗运动维纳过程最出名的落地场景5.1 为什么建模对象是收益率而不是价格直接把价格建成维纳过程 S(t) S(0) μt σW(t) 会带来两个致命问题。第一正态分布取值可以到负无穷价格变成负数在多数场景下没有意义。第二这个模型假设价格的绝对波动幅度与价格水平无关100 元的资产和 10 元的资产日波动都是 1 元这与实际观察完全不符。换成对数收益率就都解决了。设 S(t) S(0) exp(X(t))其中 X 是带漂移的维纳过程。价格天然为正而且波动以比例形式表达10% 的日波动对应任何价格水平都一样。这就是几何布朗运动的标准形式dS μ S dt σ S dW参数 μ 是瞬时收益率σ 是波动率。这个模型当然不完美真实市场有波动率聚集、跳跃、胖尾但它是所有后续模型的基准理解它才能理解后面那些修正。5.2 从 SDE 到闭式解以及那个 −σ²/2 从哪来对 ln S 用 Itô 引理。取 f(x) ln x则 f′ 1/xf″ −1/x²代入d(ln S) (1/S) dS − (1/(2S²)) (dS)²把 dS μS dt σS dW 代进去(dS)² σ²S² dt因为 (dW)² dtdt 的更高阶项丢掉于是d(ln S) (μ − σ²/2) dt σ dW积分得S(t) S(0) · exp[(μ − σ²/2) t σ W(t)]那个 −σ²/2 就是 Itô 引理带来的凸性修正。它的实际含义是价格的对数期望增长率比 μ 低 σ²/2。举例来说μ 8%、σ 20% 时对数增长率只有 0.08 − 0.02 0.06。这解释了一个常见困惑——一个策略的年化算术平均收益是 8%但它的几何平均收益只有 6% 左右差值约等于方差的一半。做长期复利测算时用错这个量几十年下来差得非常远。模拟时要点是直接在对数空间采样而不是用欧拉格式迭代价格def gbm(S0100.0, mu0.08, sigma0.2, T1.0, n252, paths200000, seed11): rng np.random.default_rng(seed) dt T / n Z rng.standard_normal((paths, n)) logret (mu - 0.5 * sigma ** 2) * dt sigma * np.sqrt(dt) * Z logS np.log(S0) np.cumsum(logret, axis1) S np.concatenate([np.full((paths, 1), S0), np.exp(logS)], axis1) return S S gbm() print(S[:, -1].mean()) # 应接近 100 * exp(0.08) ≈ 108.33这里之所以能直接用精确解是因为几何布朗运动有闭式解没必要承受离散化误差。有解析解就不要用数值格式这是我做了几年模拟之后总结出的第一条原则。只有那些没有闭式解的过程比如带跳跃的、带随机波动率的才需要退回到欧拉或米尔斯泰因。5.3 参数估计漂移项几乎估不准波动率估计相对直接。给定日频收盘价序列取对数收益 rᵢ ln(Sᵢ/Sᵢ₋₁)则σ̂ sqrt( Σ(rᵢ − r̄)² / ((n − 1) · Δt) )Δt 1/252注意分母是 (n − 1) 而不是 n。用 n 会引入一个 (n−1)/n 量级的低估样本量 252 时低估约 0.2%看似不大但如果你的标的是波动率敏感型策略这点偏差在长期会被放大。漂移项就麻烦多了。理论上的估计误差量级约为 σ/√TT 以年计。σ 20%、用一年数据时μ 的标准误约 0.2比 μ 本身0.08 量级还大。换句话说用一年日频数据估出来的漂移项符号都可能是反的。这不是数据质量问题也不是方法问题是信息量的硬约束。所以实务中很少去估 μ短线用当前无风险利率或市场隐含的假设值长线则把重点放在 σ 和波动率结构上。还有几个我实际踩过的细节。停牌和缺失值要用前值填充还是删除会明显影响 σ 估计前者低估、后者高估我倾向于删除并在报告里注明。隔夜跳空是否纳入取决于你建模的是连续交易还是持仓收益别混着用。时间尺度选择上日频数据估的 σ 和 5 分钟频数据估的 σ 常常差 10% 以上后者更容易受微观结构噪声影响用之前先做自相关检验。6. 同一个过程在物理、滤波和生成模型里的不同面孔6.1 从 Fokker-Planck 到热方程维纳过程的概率密度 p(x, t) 满足 Fokker-Planck 方程也叫前向 Kolmogorov 方程。对 dX a dt b dW一般形式是∂p/∂t −∂(a p)/∂x (1/2) ∂²(b² p)/∂x²对标准维纳过程 a 0、b 1方程退化成 ∂p/∂t (1/2) ∂²p/∂x²也就是扩散系数为 1/2 的热方程。这个联系非常有价值所有关于热传导的直觉都可以直接搬过来理解扩散。初始时刻集中在一点的分布随时间摊开成高斯峰峰宽按 √t 增长峰值按 1/√t 下降。如果你在做异常检测发现某个传感器的残差分布宽度按 √t 增长那就说明系统处于纯扩散状态没有任何回复力在起作用。反过来加入回复力的过程比如 Ornstein-Uhlenbeck 过程对应的是有阻尼的热方程分布会收敛到一个平稳形态。这个区分在很多工程问题里是判断建模方向的第一步数据是按 √t 无限摊开还是摊开到一定程度就停住6.2 卡尔曼滤波里的过程噪声卡尔曼滤波的状态方程通常写成xₖ F xₖ₋₁ wₖwₖ ~ N(0, Q)这个 wₖ 就是维纳过程在离散时间下的增量近似。协方差矩阵 Q 的物理含义是单位时间内状态不确定性增长多少所以 Q 应该随时间步长线性缩放。这一点经常被忽略有人换采样频率之后忘了同步调 Q滤波结果立刻变得迟钝或者抖动。Q 和 Δt 是线性关系不是平方根关系因为它是方差而不是标准差。这个区别容易搞混我的记法是涉及随机扰动幅度的量按 √Δt 走涉及方差和协方差的量按 Δt 走。Q 的调参经验是Q 太小滤波器过度信任模型真实状态发生突变时跟不上残差序列会出现明显的自相关Q 太大滤波器过度信任观测噪声全部透传输出抖动。一个实用的排查方法是看残差的归一化平方和NIS如果长期偏离理论自由度就是对 Q 或 R 的判断出问题了。6.3 扩散生成模型的前向加噪近两年大火的扩散生成模型前向过程本质上是维纳过程的一个时间重参数化版本。连续形式写出来是dx −(1/2) β(t) x dt √(β(t)) dW离散化之后就是你熟悉的加噪公式 xₜ √ᾱₜ x₀ √(1 − ᾱₜ) ε。这里 ε 是标准正态噪声系数 √(1 − ᾱₜ) 的角色就相当于维纳过程在时刻 t 的标准差 √t只不过被缩放到了一个有界的调度区间上。理解了维纳过程的方差随时间单调增长这件事整个噪声调度设计linear、cosine、sigmoid 等就不难理解了它们都是在控制方差增长曲线的形状。这里有个实践中的观察。噪声调度设计不当的表现往往和随机过程本身的某个性质有关。如果前期加噪太快方差增长曲线在低 t 区域过于陡峭模型在细节恢复上会吃力如果后期加噪太慢终点分布没有充分接近标准正态采样时的初始状态就不对生成结果会系统性地偏向训练分布。做调参的时候我会把 √(1 − ᾱₜ) 这条曲线单独画出来看形状比看损失曲线更有信息量。6.4 什么时候维纳过程不够用维纳过程是基准但真实世界经常偏离它知道偏离在哪很重要。带约束的场景。如果过程必须从某个值出发并回到某个值比如已知期初和期末的资产价格路径应该用布朗桥而不是原始维纳过程。构造很简单B(t) W(t) − (t/T) W(T)这条路径在 0 和 T 两端都是 0。做路径依赖的模拟时用布朗桥方差更低同样的路径数能用更小的误差。带记忆的场景。如果增量之间存在长期正相关维纳过程的独立增量假设就不成立需要用分数布朗运动赫斯特指数 H 1/2 表示持续性H 1/2 表示反持续性。注意分数布朗运动不是半鞅前面讲的 Itô 积分理论整套不适用处理起来要格外小心。带跳跃的场景。股灾、订单流里的巨额成交、网络流量的突发都不是连续扩散能刻画的。通常做法是在维纳过程的扩散项上叠加一个复合泊松过程得到跳跃扩散模型。加了跳跃之后虽然过程仍然在半鞅框架内但模拟时跳跃时点的抽样和扩散部分的抽样要分开处理而且跳跃强度参数的估计极易受极端样本影响。重尾的场景。如果观测到的极端值远比正态分布预测的多同时又不希望引入明显跳跃可以考虑 α 稳定过程。不过它的二阶矩可能是无穷的方差这个工具直接失效做参数估计和风险度量都得换方法。从维纳过程出发把这些都走一遍我对模型能力边界这件事的感受是大部分建模失败不是数学不够复杂而是在偏离假设的地方没做检验。拿到一份数据先看增量的自相关、看极端值的频率、看方差随时间的增长曲线这三件事花不了半小时但能省掉后面几天的返工。最后分享一个我自己常用的小技巧。当你怀疑一段代码里的随机部分有问题但不方便直接打印路径时用二次变差和终点分布这两个指标做快速体检前者检验增量的方差是否与时间步长同阶后者检验累积缩放是否一致。这两个指标对参数错误、缩放错误、单位错误特别敏感几十行代码就能跑完比盯着路径图看半天有效率得多。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →