<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Model-Parameters on TouchingFish.top</title><link>https://touchingfish.top/tags/model-parameters/</link><description>Recent content in Model-Parameters on TouchingFish.top</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 21 Jul 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://touchingfish.top/tags/model-parameters/index.xml" rel="self" type="application/rss+xml"/><item><title>生物模型的参数迷局拆解</title><link>https://touchingfish.top/2024/sobol-sensitivity-analysis/</link><pubDate>Sun, 21 Jul 2024 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2024/sobol-sensitivity-analysis/</guid><description>&lt;p&gt;一个生物模型有多少个参数？少则三五个，多则几十上百。&lt;/p&gt;
&lt;p&gt;捕食者怎么繁殖，猎物怎么被捕食；蛋白质怎么磷酸化，mRNA 怎么降解；感染者怎么传播疾病，康复者怎么获得免疫——每个环节都要用一个数字来描述。这些数字从哪里来？文献里翻的，实验里测的，或者干脆猜的。&lt;/p&gt;
&lt;p&gt;问题来了：哪个参数最重要？&lt;/p&gt;
&lt;p&gt;直觉上大概会说&amp;quot;都很重要啊&amp;quot;。但计算资源不是无限的，实验经费更不是。如果只有精力精确测定三个参数，你选哪三个？如果模型结果对某个参数的变化毫无反应——花一个月测的那个数字，是不是根本无所谓？&lt;/p&gt;
&lt;p&gt;这就是 Sobol&amp;rsquo; 敏感性分析要解决的问题。&lt;/p&gt;
&lt;h2 id="不只是敏感"&gt;不只是&amp;quot;敏感&amp;quot;&lt;/h2&gt;
&lt;p&gt;敏感性分析（Sensitivity Analysis, SA）这个概念不新鲜。最朴素的做法是局部敏感性分析（Local SA）：把每个参数调高 1%，看输出变化多大。听上去很合理，问题在于——你只在一个点上做了测试。换个初始值，排名可能完全颠倒。对于非线性系统，这种局部视角约等于管中窥豹。&lt;/p&gt;
&lt;p&gt;Sobol&amp;rsquo; 指数属于全局敏感性分析（Global SA）。它不问你&amp;quot;在这个点上谁敏感&amp;quot;，而是问——&lt;strong&gt;在整个参数空间里，谁在操控输出的方差？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它的做法很直接：把模型输出 $Y$ 的总方差按来源拆开。&lt;/p&gt;
$$Y = \mathcal{M}(X_1, X_2, \dots, X_m)$$&lt;p&gt;$\mathcal{M}$ 是你的模型，$X_i$ 是输入参数。Sobol&amp;rsquo; 分解告诉你：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$S_i$：$X_i$ 自己贡献了多少方差（first-order index）&lt;/li&gt;
&lt;li&gt;$S_{ij}$：$X_i$ 和 $X_j$ 的交互贡献了多少（second-order index）&lt;/li&gt;
&lt;li&gt;$S_{Ti}$：$X_i$ 的总贡献——包括它自己，加上和所有其他参数的两两交互、三三交互……一直加到 $m$ 阶（total-order index）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果 $S_{Ti} \approx 0$，恭喜你，这个参数可以当成常数，模型对它几乎不敏感。如果 $S_i$ 大但 $S_{Ti} - S_i$ 小，说明这个参数是独狼，自己就很能打。如果 $S_i$ 小但 $S_{Ti}$ 大——这就很有意思了：它自己不重要，但和别人搞在一起就很关键。&lt;/p&gt;
&lt;p&gt;这种参数的微妙之处，局部方法永远抓不到。&lt;/p&gt;
&lt;h2 id="计算上的麻烦"&gt;计算上的麻烦&lt;/h2&gt;
&lt;p&gt;Sobol&amp;rsquo; 指数好看，但不好算。&lt;/p&gt;
&lt;p&gt;理论上，你可以用 Monte Carlo（MC）来估算所有方差。问题是，对于 $m$ 个参数，要算到第 $k$ 阶交互，需要的模型评估次数是指数级的。如果你的模型求解一次就要几十分钟——比如一个 stiff ODE 系统——那 MC 的时间成本会让人想关电脑。&lt;/p&gt;</description></item></channel></rss>