<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>TouchingFish.top</title><link>https://touchingfish.top/</link><description>Recent content on TouchingFish.top</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 16 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://touchingfish.top/index.xml" rel="self" type="application/rss+xml"/><item><title>夕阳职位，SP求职真实心境</title><link>https://touchingfish.top/2026/sp-sunset-position/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2026/sp-sunset-position/</guid><description>&lt;p&gt;2025年第二季度，我做了一个决定：不再找SAS Programmer的工作。&lt;/p&gt;
&lt;p&gt;像告别。是那种你早就知道该走了，却一直站在原地不肯迈脚的告别。站了很久，久到腿都麻了——然后你迈出去了，迈完的那一刻，腿还是麻的，但人轻了。&lt;/p&gt;
&lt;p&gt;人轻了之后，是空落落的。&lt;/p&gt;
&lt;h2 id="一"&gt;一&lt;/h2&gt;
&lt;p&gt;我写了五六年代码。2023年秋天，才开始稍微看一点SAS——不是因为我热爱这门语言，是因为招聘JD上写着&amp;quot;必须熟悉SAS&amp;quot;。&lt;/p&gt;
&lt;p&gt;以前不是这样的。&lt;/p&gt;
&lt;p&gt;以前SP招聘，写过R和Python，那SAS和SQL肯定没问题。逻辑是一样的，语法可以学。这是招聘者的潜台词：我们要的是编程能力，不是特定语言的熟练度。&lt;/p&gt;
&lt;p&gt;后来人多了。&lt;/p&gt;
&lt;p&gt;人一多，门槛就变了。写过R和Python？不够。必须写过SAS。有没有项目经验？没有？那不好意思，下一个。&lt;/p&gt;
&lt;p&gt;我理解这种筛选逻辑。当供大于求，用人单位当然挑最顺手的。&lt;/p&gt;
&lt;p&gt;但理解归理解，接受归接受。&lt;/p&gt;
&lt;p&gt;开始学SAS的时候，心里其实有点别扭。不是为了学新东西——学新东西我从来不抗拒。是为了迎合一个我并不认同的筛选标准。&lt;/p&gt;
&lt;p&gt;这种感觉，像是被迫去考一个含金量存疑的证书。&lt;/p&gt;
&lt;p&gt;（证书这种东西，有用的时候是通行证，没用的时候就是废纸。）&lt;/p&gt;
&lt;p&gt;其实更早的时候，种子就已经埋下了。&lt;/p&gt;
&lt;p&gt;2021年，第14届中国R会，线上。MSD的张亦龙做了一个presentation，讲的是用R做临床研究报告和提交。那时候我坐在屏幕前，心想：原来这件事已经有人在做了。不是学术讨论，不是概念验证，是真的在用R做提交。&lt;/p&gt;
&lt;p&gt;但我没有当回事。&lt;/p&gt;
&lt;p&gt;（人总是这样，听到了信号，却选择性地忽略。）&lt;/p&gt;
&lt;h2 id="二"&gt;二&lt;/h2&gt;
&lt;p&gt;FDA在2025年8月更新了eCTD技术规范9.3版，新增支持&lt;code&gt;.rds&lt;/code&gt;、&lt;code&gt;.rdata&lt;/code&gt;、&lt;code&gt;.rda&lt;/code&gt;等R数据文件格式，允许&lt;code&gt;.zip&lt;/code&gt;打包R包提交。PMDA在2025年3月确认接受R用于申报。EMA正在探索使用SAS和R进行审评分析。&lt;/p&gt;
&lt;p&gt;以前R脚本要转成.txt才能提交。现在不用了。&lt;/p&gt;
&lt;p&gt;这意味着R正在获得监管认可。SAS在监管提交领域的垄断地位，正在被打破。&lt;/p&gt;
&lt;p&gt;R Consortium在2023到2025年间牵头了三个FDA试点项目——Pilot 1、2、3——验证R提交方案。三次都成功再现了。&lt;/p&gt;
&lt;p&gt;强生用SAS+R混合策略完成了FDA提交——SAS生成ADaM，R生成表格输出。为了保证审评者能重现R环境，他们在ADRG里加了安装脚本和&lt;code&gt;renv.lock&lt;/code&gt;。勃林格殷格翰更激进，启动了跨部门的SAS向R迁移，用生成式AI把约20万行SAS宏代码翻译成R。CRO们开始搭建R基础设施，培训员工，建立社区。&lt;/p&gt;
&lt;p&gt;JPMA 2024年的调查显示，约59%的公司在临床编程中已经用上了R。&lt;/p&gt;
&lt;p&gt;这是行业层面的转型信号，而2021年那个presentation，原来不是信号。是预言。&lt;/p&gt;
&lt;p&gt;（预言这种东西，听到了是运气，听到了不当回事是宿命。）&lt;/p&gt;
&lt;p&gt;技术替代这件事，说快不快，说慢不慢。&lt;/p&gt;
&lt;p&gt;SAS不会明天就消失。它有几十年的积累，有稳定的用户群，有完整的验证框架。FDA的指南也没有强制要求R，只是提供了技术支持。&lt;/p&gt;
&lt;p&gt;趋势是清晰的。&lt;/p&gt;
&lt;p&gt;R生态中涌现了{metacore}、{admiral}、{xportr}这些专用包，用于CDISC SDTM/ADaM构造。tidyverse的管道式编程在数据清洗重塑方面灵活直观。开源社区的力量，正在把SAS的护城河一点点填平。&lt;/p&gt;
&lt;p&gt;SAS还在依赖DATA步、PROC SQL和自定义宏。不是说这些工具不好——是说，当R社区用元数据驱动的自动化流程替代手动操作的时候，SAS的工作方式看起来越来越像是在用算盘对抗电子表格。&lt;/p&gt;
&lt;p&gt;更关键的是生成式AI。&lt;/p&gt;
&lt;p&gt;SAS Institute的研究报告指出，大型语言模型能理解自然语言规范，输出符合要求的SDTM/ADaM编程代码。实际案例已经演示了LLM辅助完成SDTM映射、ADaM推导逻辑编写和标准表格输出。&lt;/p&gt;
&lt;p&gt;重复性很高的规则性编程工作，正在被自动化工具覆盖。&lt;/p&gt;
&lt;p&gt;这意味着SAS Programmer这个岗位的核心价值，正在被重新定义。从&amp;quot;编码者&amp;quot;变成&amp;quot;验证专家&amp;quot;或&amp;quot;数据科学家&amp;quot;。而如果你本来就会R和Python，这个转型反而更容易。&lt;/p&gt;
&lt;p&gt;Atorus甚至专门开了Academy，帮SAS程序员学R。培训需求旺盛——这说明市场已经在动了。&lt;/p&gt;
&lt;p&gt;但为了求职，我不得不迎合一个正在失去垄断地位的技术栈。替代这种事，落在一个具体的求职者头上，就是一个具体的失意。&lt;/p&gt;
&lt;p&gt;因为劳动力市场还是保守的。数据也很有意思。&lt;/p&gt;
&lt;p&gt;美国SAS程序员平均薪资约9万美元，中位数也是这个数。经验丰富者可达13万美元以上。看起来还不错。&lt;/p&gt;
&lt;p&gt;但从2018到2028年，SAS程序员岗位预计会下降约7%。行业对多语言技能的需求增加。&lt;/p&gt;
&lt;p&gt;招聘广告越来越关注数据可视化、机器学习、Python/R语言及云计算技能。SAS技能仍有市场溢价，但这个溢价正在被稀释。&lt;/p&gt;
&lt;p&gt;中国市场更戏剧化。SAS宣布退出中国，可能影响近500人。国产替代方案（如启维QiviData）开始推广。&lt;/p&gt;
&lt;p&gt;PPD/Thermo Fisher在PhUSE年会上分享过他们的经验：初始时几乎没有R基础设施和流程，于是引入RStudio、搭建集中R环境、组织内部&amp;quot;R马拉松&amp;quot;——从零开始，一步步培养团队R能力。他们的结论是，R采纳需要系统的变革管理：领导支持、清晰愿景、持续培训与社区支持。&lt;/p&gt;
&lt;p&gt;一家CRO从零搭建R基础设施。这本身就是信号。&lt;/p&gt;
&lt;p&gt;（有时候你看到的是行业趋势，有时候你看到的是自己的处境。两者叠加在一起，看得格外清楚。）&lt;/p&gt;
&lt;h2 id="三"&gt;三&lt;/h2&gt;
&lt;p&gt;2025年4月，老父心梗发作，住了ICU。&lt;/p&gt;
&lt;p&gt;找工作这件事，突然就不重要了。&lt;/p&gt;
&lt;p&gt;不是说不急。是说不出来急。人在ICU外面坐着的时候，脑子里转的不是JD和面试题，是监护仪上的数字和医生的脸色。&lt;/p&gt;
&lt;p&gt;那几天我反复想一个问题：如果我现在还在为SAS Programmer的面试刷题，我坐在ICU外面会是什么心情？&lt;/p&gt;
&lt;p&gt;大概会更焦虑。不是因为面试本身，是因为我知道自己在为一个不认同的方向投入时间，而这些时间，本可以用在更重要的事情上。&lt;/p&gt;
&lt;p&gt;我反而更确定了。&lt;/p&gt;
&lt;p&gt;不是那种&amp;quot;大彻大悟&amp;quot;的确定。是那种在医院的走廊里坐了几天之后，对什么事情重要、什么事情不重要，有了一种不需要思考的直觉。&lt;/p&gt;
&lt;p&gt;SAS Programmer的求职，不重要。&lt;/p&gt;
&lt;p&gt;（但有些事情，不重要了之后，并不意味着其他事情就变得重要了。只是优先级重新排列了。）&lt;/p&gt;
&lt;p&gt;不敢想象，前阵子刚重温了一遍《转角遇到爱》，那部剧我中学时候看过一遍，大学时候又看过一遍，每次看都觉得自己还是个小孩。突然大家就说徐熙媛去世了。我在SNS留下五个字：晚安，俞心蕾。&lt;/p&gt;
&lt;p&gt;角色是假的，但看剧时那些下午是真的。&lt;/p&gt;
&lt;p&gt;有些人是音乐，有些人是空气。&lt;/p&gt;</description></item><item><title>Rust 的"解法"</title><link>https://touchingfish.top/2025/learning-rust-c-memory-safety/</link><pubDate>Sun, 19 Oct 2025 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2025/learning-rust-c-memory-safety/</guid><description>&lt;p&gt;翻出 2020 年写的 C 语言博客。&lt;/p&gt;
&lt;p&gt;&lt;a href="../../2020/array-and-pointer/"&gt;数组与指针&lt;/a&gt;，&lt;a href="../../2020/journey-to-c-language/"&gt;内存布局与调试&lt;/a&gt;。那时候写得挺认真的，后来还画内存图，标注高地址低地址，解释为什么 &lt;code&gt;arr[3] = 20&lt;/code&gt; 能把旁边变量 &lt;code&gt;i&lt;/code&gt; 的值也改了。文章结尾写的是：&amp;ldquo;为避免这种错误，始终要确保在使用数组时不越界访问。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;现在回头看，那句话翻译成人话大概是：你最好别写错。&lt;/p&gt;
&lt;p&gt;因为写错了编译器不会告诉你。&lt;/p&gt;
&lt;p&gt;学 Rust 的时候，很多东西越看越像是对 C 里那些经典问题的系统性回应。不是&amp;quot;Rust 比 C 好&amp;quot;——是 Rust 把二十年来系统编程中最常见的错误模式，逐个编码进了编译器和类型系统里。一个 Rust 新手在编译期被挡下的问题，可能比一个 C 老手十年遇到的运行时 bug 还全面。&lt;/p&gt;
&lt;h2 id="指针三兄弟"&gt;指针三兄弟&lt;/h2&gt;
&lt;p&gt;NULL、野的、悬空——C 程序员的日常恐惧来源。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;int *p = NULL; *p = 1;&lt;/code&gt; 编译通过。运行到这一行，操作系统发来 SIGSEGV。不是编译期能发现的事——NULL 是一个合法的指针值，只是指向的地址不可访问。编译器没有语义层面的&amp;quot;这个指针可能为空&amp;quot;的概念。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;int* f() { int x = 5; return &amp;amp;x; }&lt;/code&gt; 也编译通过。x 在 f 的栈帧里，函数返回后栈帧被回收，返回的地址指向一块随时可能被覆盖的内存。这个地址仍然&amp;quot;合法&amp;quot;——它在一个可访问的内存段内，只是内容不受你控制。有时候打印出 5，有时候打印出随机数，有时候什么都没发生，取决于后续函数调用有没有踩到同一块栈空间。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;free(p); *p = 1;&lt;/code&gt; 还是编译通过。free 之后那块堆内存被标记为可用，但 p 的值没变，仍然指向原地址。继续通过 p 读写，运气好时数据还没被覆盖，程序照常运行——这比直接崩溃更危险，因为你不知道错误已经埋下了。&lt;/p&gt;
&lt;p&gt;Rust 的做法很简单：没有 NULL。没有悬垂引用。没有 use-after-free。&lt;/p&gt;</description></item><item><title>JD 里的 RAG，其实是 LangChain 调参</title><link>https://touchingfish.top/2025/rag-is-langchain-tuning/</link><pubDate>Tue, 17 Jun 2025 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2025/rag-is-langchain-tuning/</guid><description>&lt;p&gt;招聘网站上搜&amp;quot;RAG&amp;quot;，跳出来的 JD 长得都差不多。&lt;/p&gt;
&lt;p&gt;熟悉 Retrieval-Augmented Generation。了解向量数据库（FAISS、Pinecone、Chroma）。掌握 Embedding 模型（OpenAI、BGE、M3E）。有 LLM 应用开发经验，熟悉 LangChain / LlamaIndex。&lt;/p&gt;
&lt;p&gt;我一开始也以为这是在招算法工程师——那种能从头训练 Embedding 模型、能设计新的向量索引结构、能在论文里挂名的人。&lt;/p&gt;
&lt;p&gt;面了几轮才发现，大部分公司要的不是这个。他们想要的是：给你一个文档库，你能用 LangChain 搭一个问答系统，调调参数，让回答别那么离谱。至于向量数据库选 FAISS 还是 Chroma，Embedding 模型选 OpenAI 还是开源的，很多时候只是配置项的问题。&lt;/p&gt;
&lt;p&gt;JD 里写的 RAG、向量数据库、Embedding，翻译成人话就是：你会不会用 LangChain 调参。&lt;/p&gt;
&lt;p&gt;向量数据库不需要 SQL boys 和 SQL girls，但又不能说不是一回事。它说的就是数据库，只是存的东西不是行和列，而是坐标。没有 JOIN，没有 WHERE。只有&amp;quot;给我找离这个点最近的几个邻居&amp;quot;。&lt;/p&gt;
&lt;p&gt;这篇文章从调参的视角，把 RAG pipeline 里每个环节的参数过一遍。不重复基础概念，只讲实际写代码时会遇到的选择。&lt;/p&gt;
&lt;h2 id="切"&gt;切&lt;/h2&gt;
&lt;p&gt;chunk_size 设多少？&lt;/p&gt;
&lt;p&gt;RAG 的第一步是把文档切成块。LangChain 里最常用的工具是 &lt;code&gt;RecursiveCharacterTextSplitter&lt;/code&gt;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;langchain.text_splitter&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;RecursiveCharacterTextSplitter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;text_splitter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;RecursiveCharacterTextSplitter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;chunk_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;chunk_overlap&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;separators&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;。&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;，&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34; &amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;chunk_size&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这个参数的单位是 token 数，不是字符数。设得太小，一个完整的句子被拦腰截断，语义支离破碎。设得太大，单个块包含太多主题，检索时容易引入无关信息。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通用文档（论文、报告）：500-1000 tokens&lt;/li&gt;
&lt;li&gt;代码：200-400 tokens，按函数或类切分更合理&lt;/li&gt;
&lt;li&gt;对话记录：300-500 tokens，保留完整回合&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个容易踩的坑是盲目追求大 chunk。&amp;ldquo;大一点，信息多一点，模型回答更完整&amp;rdquo;——听起来对，但检索精度会下降。一个 2000 token 的块可能包含五个段落，用户的问题只匹配其中一段，其余四段都是噪声。&lt;/p&gt;</description></item><item><title>贵州农民收入驱动机制建模记</title><link>https://touchingfish.top/2025/rural-income-driving-mechanism/</link><pubDate>Sat, 07 Jun 2025 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2025/rural-income-driving-mechanism/</guid><description>&lt;p&gt;&amp;ldquo;本研究以贵州省为典型案例，深入剖析了乡村振兴战略实施过程中农民收入的驱动机制与未来趋势。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;这是那个本科生开题报告里的话。我接到单子的时候，初稿已经在导师手里了，分析也几乎做&amp;quot;完&amp;quot;了，导师给她上了很大的压力。&lt;/p&gt;
&lt;p&gt;实际做下来，驱动机制没剖析出什么花来，倒是被多重共线性剖析了一通。&lt;/p&gt;
&lt;h2 id="数据"&gt;数据&lt;/h2&gt;
&lt;p&gt;贵州省 2007–2023 年度数据，17 个观测，10 个自变量，1 个因变量：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;变量&lt;/th&gt;
 &lt;th&gt;含义&lt;/th&gt;
 &lt;th&gt;单位&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;x1&lt;/td&gt;
 &lt;td&gt;人均生产总值&lt;/td&gt;
 &lt;td&gt;元&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x2&lt;/td&gt;
 &lt;td&gt;第一产业增加值&lt;/td&gt;
 &lt;td&gt;亿元&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x3&lt;/td&gt;
 &lt;td&gt;第三产业增加值&lt;/td&gt;
 &lt;td&gt;亿元&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x4&lt;/td&gt;
 &lt;td&gt;城镇化率&lt;/td&gt;
 &lt;td&gt;%&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x5&lt;/td&gt;
 &lt;td&gt;农业支出&lt;/td&gt;
 &lt;td&gt;亿元&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x6&lt;/td&gt;
 &lt;td&gt;农村居民人均消费支出&lt;/td&gt;
 &lt;td&gt;元&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x7&lt;/td&gt;
 &lt;td&gt;农业机械总动力&lt;/td&gt;
 &lt;td&gt;万千瓦&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x8&lt;/td&gt;
 &lt;td&gt;农作物总播种面积&lt;/td&gt;
 &lt;td&gt;千公顷&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x9&lt;/td&gt;
 &lt;td&gt;有效灌溉面积&lt;/td&gt;
 &lt;td&gt;千公顷&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x10&lt;/td&gt;
 &lt;td&gt;绝收面积&lt;/td&gt;
 &lt;td&gt;万公顷&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;y&lt;/td&gt;
 &lt;td&gt;农村居民人均可支配收入&lt;/td&gt;
 &lt;td&gt;元&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;17 个样本点，10 个自变量。还没开始建模就知道要出事——自由度都快不够了。&lt;/p&gt;
&lt;p&gt;（学生说&amp;quot;数据是从统计年鉴上找的&amp;quot;。统计年鉴嘛，省级年度数据就那么多年，变量倒是能找一堆，但样本量是天花板。这不是学生的问题，是这类课题的先天限制。）&lt;/p&gt;
&lt;h2 id="第一步看看相关性"&gt;第一步：看看相关性&lt;/h2&gt;
&lt;p&gt;相关系数矩阵一出来，事情就很清楚了：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;与 y 的相关系数：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;变量&lt;/th&gt;
 &lt;th&gt;与 y 的 r&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;x6&lt;/td&gt;
 &lt;td&gt;0.999&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x3&lt;/td&gt;
 &lt;td&gt;0.996&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x1&lt;/td&gt;
 &lt;td&gt;0.991&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x2&lt;/td&gt;
 &lt;td&gt;0.990&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x4&lt;/td&gt;
 &lt;td&gt;0.983&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x7&lt;/td&gt;
 &lt;td&gt;0.911&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x5&lt;/td&gt;
 &lt;td&gt;0.888&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x8&lt;/td&gt;
 &lt;td&gt;0.689&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x9&lt;/td&gt;
 &lt;td&gt;0.625&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;x10&lt;/td&gt;
 &lt;td&gt;-0.361&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;几乎所有经济指标都和农民收入高度相关。r &amp;gt; 0.9 的变量对有 27 对。这不是&amp;quot;信息丰富&amp;quot;，这是&amp;quot;信息冗余&amp;quot;——大家都在说同一件事。&lt;/p&gt;</description></item><item><title>当你连 scale 也量化了</title><link>https://touchingfish.top/2025/gguf-k-quants/</link><pubDate>Fri, 30 May 2025 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2025/gguf-k-quants/</guid><description>&lt;p&gt;上次算到，160 亿参数的模型用 Q4_0 量化后，光 scale 和 $\alpha$ 这些&amp;quot;说明书&amp;quot;就要吃掉 2 GB。&lt;/p&gt;
&lt;p&gt;2 GB 不小。一台 16 GB 显存的显卡，模型权重压缩后大概 8 GB，结果说明书自己占了四分之一。这就像你去宜家买了一张桌子，包装盒里一半是螺丝和安装图纸。&lt;/p&gt;
&lt;p&gt;K-quants 要解决的就是这个问题。思路很直白——既然权重可以量化，那说明书也可以量化。&lt;/p&gt;
&lt;h2 id="套娃"&gt;套娃&lt;/h2&gt;
&lt;p&gt;K-quants 的核心结构叫 super-block。做法是把 8 个普通 block 打包成一组，然后对 8 个 scale 再做一次量化——从 FP16（16 bit）砍到 INT8（8 bit）：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;super-block: 256 个 INT4 权重
├── block 0: scale = 0.10 (FP16 → INT8)
├── block 1: scale = 0.14 (FP16 → INT8)
├── block 2: scale = 0.11 (FP16 → INT8)
├── block 3: scale = 0.18 (FP16 → INT8)
├── block 4: scale = 0.08 (FP16 → INT8)
├── block 5: scale = 0.16 (FP16 → INT8)
├── block 6: scale = 0.13 (FP16 → INT8)
├── block 7: scale = 0.09 (FP16 → INT8)
└── super-scale = 0.00142 (FP16) ← 新加的，用来还原上面那些 INT8
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;来走一遍完整的计算。假设这 8 个 block 里 256 个权重已经量化完了——每个 block 的 scale 是上面那 8 个 FP16 值。现在的任务是把这 8 个 scale 自己也量化掉。&lt;/p&gt;</description></item><item><title>当你把模型从16位砍到4位</title><link>https://touchingfish.top/2025/gguf-legacy-quants/</link><pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2025/gguf-legacy-quants/</guid><description>&lt;p&gt;第一次在本地跑 Llama 的时候，下载页面那一排 Q4_0、Q4_K_M、Q5_1 让我愣了半天。&lt;/p&gt;
&lt;p&gt;选了最大的文件，跑不起来。显存不够。选了最小的文件，跑起来了，但回答像喝了假酒。后来才知道，这一排名字背后是一整套妥协方案——在模型的&amp;quot;胖瘦&amp;quot;和&amp;quot;聪明程度&amp;quot;之间找平衡。&lt;/p&gt;
&lt;p&gt;这篇文章讲最早的那套方案：legacy quants。GGUF 现在已经有 K-quants 和 I-quants 了，但 legacy 是地基。搞懂了它，后面那些花里胡哨的变体无非是在这个地基上换砖头。&lt;/p&gt;
&lt;h2 id="fp16-和-int4"&gt;FP16 和 INT4&lt;/h2&gt;
&lt;p&gt;在聊量化之前，先搞懂两样东西：模型权重长什么样，以及我们想把它变成什么样。&lt;/p&gt;
&lt;p&gt;FP16 是半精度浮点数。16 个 bit（2 个字节），存一个带小数点的数。C 语言里没有 FP16，但你想象一个比 &lt;code&gt;float&lt;/code&gt;（32 位）更省空间的浮点数就行。大模型的权重——那些矩阵里的每一个数字——出厂的时候就是 FP16。一个 70 亿参数的模型，70 亿个 FP16，也就是 14 GB。不大不小，刚好塞不进一张 12 GB 的消费级显卡。&lt;/p&gt;
&lt;p&gt;INT4 是 4 位整数。4 个 bit，能表示 $2^4 = 16$ 个不同的值。如果你只写过 C，你熟悉的整数是 &lt;code&gt;int&lt;/code&gt;（32 位）、&lt;code&gt;short&lt;/code&gt;（16 位）、&lt;code&gt;char&lt;/code&gt;（8 位）。4 位的整数在 C 里没有——太小了，小到没法单独寻址，必须打包存储。&lt;/p&gt;
&lt;p&gt;打个比方：FP16 像女生的口红色号——豆沙、枫叶、烂番茄，每一格都有名字。INT4 是男人的衣柜——黑、白、灰、深蓝，能数的就那几种。&lt;/p&gt;
&lt;p&gt;量化的核心问题就是：怎么用男人的衣柜里那几种颜色，还原出口红色号的全部渐变？&lt;/p&gt;
&lt;p&gt;这是有损压缩。丢掉的信息永远捡不回来。&lt;/p&gt;
&lt;h2 id="假装天平是平的"&gt;假装天平是平的&lt;/h2&gt;
&lt;p&gt;GGUF 的量化不是把每个 FP16 单独转成 INT4。那样做的话，每个权重需要一个 scale（缩放系数）来告诉你怎么&amp;quot;还原&amp;quot;，而 scale 本身就是 FP16——16 位。用 16 位存 scale 去压缩一个 16 位的权重？没有意义。&lt;/p&gt;</description></item><item><title>毕业后最认真面试的季度</title><link>https://touchingfish.top/2025/q1-interview-retrospective/</link><pubDate>Wed, 30 Apr 2025 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2025/q1-interview-retrospective/</guid><description>&lt;p&gt;回忆2024年，多少有点不真实。&lt;/p&gt;
&lt;p&gt;8月底，某央企的 HR 打来电话，说恭喜通过面试，体检报告过关就发 offer。我攥着手机在房间里站了五分钟。毕业三个月，终于快要有一个正经工作了——虽然是个放射类药物企业，体检等了一个多月还没下文，但好歹有个着落。&lt;/p&gt;
&lt;p&gt;11月初，hc 取消。&lt;/p&gt;
&lt;p&gt;那个 HR 的声音我现在还能想起来。先是很职业的恭喜，然后是一段不太职业的沉默，最后是&amp;quot;公司战略调整&amp;quot;。六个字，一场空。&lt;/p&gt;
&lt;p&gt;硕士读的是生物统计，论文写的是演化博弈。听起来挺唬人——实际上也确实挺唬人的，唬到秋招投了一圈 SAS Programmer，只捞到两次面试，最后拿了一个实习 offer。GCP 证书到手那天，我还认真地觉得自己要入行了。Good Clinical Practice，药物临床试验质量管理规范，翻译成人话就是：药厂认的实验怎么做，它告诉你。&lt;/p&gt;
&lt;p&gt;然后就到了2025年。&lt;/p&gt;
&lt;p&gt;一季度大概是我整个求职周期里最动荡的一段。不是投简历投得最多的时候——是内心最晃的时候。放弃了一个方向，不知道下一个方向在哪，每天翻招聘网站像翻一本永远写不到结局的小说。&lt;/p&gt;
&lt;p&gt;放弃 CRO 不等于那些东西白学了。临床试验的很多概念——随机化、盲法、偏倚、数据标准化——骨子里都在讨论同一件事：怎样在不完美的现实里，尽可能诚实地回答一个因果问题。这个问题的底层逻辑，放到哪个行业都不会过时。&lt;/p&gt;
&lt;p&gt;所以还是把这些准备材料整理了一下。&lt;/p&gt;
&lt;p&gt;当时为什么学，学的时候卡在哪，面试官问了什么，我怎么答的——答对的、答错的、答不出来的。流水账。有些事情不记下来真的会忘。&lt;/p&gt;
&lt;h2 id="面试不问定义"&gt;面试不问定义&lt;/h2&gt;
&lt;p&gt;第一场面试，我把随机化的定义背了一遍。&lt;/p&gt;
&lt;p&gt;面试官听完，没点头也没摇头。他问：&amp;ldquo;一个受试者入组后被分到了错误的组，你怎么办？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;我愣了大概五秒。&lt;/p&gt;
&lt;p&gt;不是在考定义。是在考你有没有想过实际操作中会出什么花活。那些课本上读不到的角落——系统出错了怎么办，随机表被人为干预了怎么办，发现的时候数据已经入库了怎么办。&lt;/p&gt;
&lt;p&gt;后来学乖了。每个概念后面都挂一个问题：&amp;ldquo;如果出错了呢&amp;rdquo;。回答一下就有血有肉了。&lt;/p&gt;
&lt;p&gt;临床试验的知识点翻来覆去就那些：随机化、盲法、AE 报告、SDTM、中心效应、脱落率。上过 GCP 课的人都能说上几句。面试官想看的是另一层东西——这些概念在真实世界里长什么样，摔过跟头的人才知道。&lt;/p&gt;
&lt;h2 id="书本之外"&gt;书本之外&lt;/h2&gt;
&lt;p&gt;准备面试那阵子，我花了大量时间啃 ICH E6 GCP、FDA 指导原则、统计方法的推导。这些东西当然有用。&lt;/p&gt;
&lt;p&gt;真正让我卡住的，是那些书上没有的问题。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;CRO 现在收缩得很厉害，你知道吗？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;数据管理员和 SAS 程序员的日常工作差在哪？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;你做过几个项目？用过什么 EDC 系统？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;书本不会告诉你行业寒冬这件事。书本不会告诉你 SAS 在临床数据处理领域的江湖地位正在被 Python 一点点蚕食。书本不会告诉你，某些 EDC 系统的市场份额直接决定了你要不要花时间学它。&lt;/p&gt;
&lt;p&gt;（这个问题我到现在也没有好答案。能说的就是：书本上的东西我可以学，行业经验需要时间——给我时间。）&lt;/p&gt;
&lt;h2 id="追问是好事"&gt;追问是好事&lt;/h2&gt;
&lt;p&gt;有些面试官喜欢追着问。追到你答不动为止。&lt;/p&gt;
&lt;p&gt;第一次被追到哑口无言的时候，恨不得找条缝把自己塞进去。&lt;/p&gt;
&lt;p&gt;后来想通了。追问意味着他在认真听。他想知道你是真懂还是背的。&lt;/p&gt;
&lt;p&gt;被问到不会的地方，老老实实说&amp;quot;这个我不太确定&amp;quot;，比硬撑着胡说八道强一百倍。&lt;/p&gt;
&lt;p&gt;有一次面试官问我 LOCF 的假设。我答错了。他当场纠正了——但没有露出那种&amp;quot;又来了一个背书的&amp;quot;的表情，而是说了一段话：&amp;ldquo;这个问题，很多做了好几年的统计师都不一定答对。你能往这个方向想，说明你动过脑子。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;那场面试后来有了下文。&lt;/p&gt;
&lt;p&gt;（当然也可能只是他比较善良。）&lt;/p&gt;
&lt;h2 id="理论是加分项"&gt;理论是加分项&lt;/h2&gt;
&lt;p&gt;面试官有时会扔一些开放性问题。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;多中心试验最大的挑战是什么？&amp;rdquo;&lt;/p&gt;</description></item><item><title>多中心的那些麻烦事</title><link>https://touchingfish.top/2025/multicenter-headaches/</link><pubDate>Mon, 10 Mar 2025 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2025/multicenter-headaches/</guid><description>&lt;p&gt;多中心试验（multi-center trial）的名字取得真好听。&lt;/p&gt;
&lt;p&gt;多个中心一起招募，样本量涨得快，结论推广起来底气也足。理想状态是：各家中心像精密咬合的齿轮，在同一套 SOP 下匀速运转。&lt;/p&gt;
&lt;p&gt;现实是每家中心都是一个小宇宙。操作流程不一样，研究者经验不一样，患者人群不一样。这些差异搅在一起，就能让你吃不了兜着走。&lt;/p&gt;
&lt;h2 id="中心效应"&gt;中心效应&lt;/h2&gt;
&lt;p&gt;中心效应（Center Effect）——不同中心的研究结果之间存在系统性差异。&lt;/p&gt;
&lt;p&gt;原因可以是很多层的。人口学特征：A 中心的患者平均比 B 中心大十岁。操作差异：不同的设备、不同的手法、不同的熟练程度。依从性差异：有的中心随访跟得很紧，有的中心患者来一次算一次。&lt;/p&gt;
&lt;p&gt;一个经典例子：某抗高血压药物的试验，亚洲中心的降压效果显著，欧洲中心平平。拆开一看——亚洲中心患者 BMI 普遍偏低。不是药在亚洲人身上反应不一样，是基线特征分布不同。&lt;/p&gt;
&lt;p&gt;处理中心效应得分两步走。设计阶段用分层随机化——每个中心当一层，层内随机。再搞一套统一 SOP，把操作差异压到最小。分析阶段上混合效应模型（Mixed-Effects Model），&amp;ldquo;中心&amp;quot;作为随机效应塞进去，中心间差异扒开之后再估治疗效应。顺带查交互效应——有没有&amp;quot;在 A 中心有效、在 B 中心无效&amp;quot;这种诡异场面。最后跑一遍敏感性分析，排除个别中心或调权重，看结论够不够硬。&lt;/p&gt;
&lt;p&gt;面试官问过：&amp;ldquo;捡到显著的中心效应，你怎么办？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;标准套路：先拆原因。是基线差异还是操作差异，还是真的存在治疗×中心的交互。基线差异可以通过调整协变量来补救，操作差异可能要重新培训研究者。&lt;/p&gt;
&lt;p&gt;（我嘴上这么说，心里清楚：统计方法能兜住的底是有限的。预防永远比事后修修补补值钱。）&lt;/p&gt;
&lt;h2 id="人跑了"&gt;人跑了&lt;/h2&gt;
&lt;p&gt;脱落（Drop-out）是我准备面试时反复翻的一个话题——它直接咬在统计效能和结论可信度上。&lt;/p&gt;
&lt;p&gt;定义：受试者没走完试验全程——要么没接受完预定干预，要么没完成全部随访。&lt;/p&gt;
&lt;p&gt;后果三层：效能降低——样本缩了，检测真实效应的力气就小了。偏倚风险——如果脱落不是随机发生的（副反应太让人遭不住的更倾向于退出），整个估计就会歪掉。结果解读——脱落一多，ITT 人群和 PP 人群之间的裂口越来越大。&lt;/p&gt;
&lt;p&gt;设计的防线：样本量计算时把脱落的预估塞进去，纳入排除标准把不靠谱的人挡在外面，交通补助、免费检查之类的激励跟上。&lt;/p&gt;
&lt;p&gt;执行的防线：随访管理加强，定期提醒别断，脱落原因记录清楚，为后续分析铺路。电话随访、线上访谈做起来——灵活，总比丢失好。&lt;/p&gt;
&lt;p&gt;分析的防线：ITT——所有随机化受试者全纳入，不管有没有走完。金标准。缺失数据用 LOCF（末次观察值结转）或多重插补（Multiple Imputation, MI）顶上。&lt;/p&gt;
&lt;p&gt;面试官问过我 LOCF 的假设是什么。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;假设受试者最后一次观察的状态会原封不动保持到后续时间点。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;他追问：这个假设靠谱吗？&lt;/p&gt;
&lt;p&gt;&amp;ldquo;通常不靠谱。如果受试者是因为病情恶化才退出的，最后一次观察值可能比真实状态好看。LOCF 会把治疗效果高估。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;（后来我翻了文献。LOCF 在某些场景下确实是保守的，但总体容易引入偏倚。多重插补或者当敏感性分析做更稳妥。）&lt;/p&gt;
&lt;h2 id="最后一扇门"&gt;最后一扇门&lt;/h2&gt;
&lt;p&gt;数据库锁定（Database Lock, DB Lock）是数据管理的一个关键节点。&lt;/p&gt;
&lt;p&gt;锁之前：数据可以改。锁之后：冻住了。任何修改都要走变更流程——不是技术上改不了，是程序上要经过层层审批。&lt;/p&gt;
&lt;p&gt;DB Lock 通常发生在所有受试者完成随访、数据清理收尾、锁库前评审通过之后。锁库之后，统计师拉闸开始最终分析，生成临床研究报告（CSR）。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;锁库之后还能改数据吗？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;能。但不叫&amp;quot;改&amp;rdquo;，叫&amp;quot;走变更流程&amp;quot;。物理上数据还是可以动的，只是每次动都要一群人在审批链上签字。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;什么情况下锁库后必须改？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;SAE 数据录入有误。关键数据录入有误，影响主要终点。还有——面试官给我补了一个场景——监管机构在现场核查时要求更正数据。&lt;/p&gt;
&lt;p&gt;这件事我只在书本上瞟到过，面试的时候完全没想起来。坐在对面的面试官不紧不慢地补上了这一刀，我连防御姿势都摆不出来。&lt;/p&gt;
&lt;h2 id="写在最后"&gt;写在最后&lt;/h2&gt;
&lt;p&gt;多中心试验的核心矛盾就一条：控制变异。&lt;/p&gt;
&lt;p&gt;中心间差异不会消失——只能通过设计去预防、通过分析去调整、通过监查去发现。脱落是另一个维度的损耗——受试者走了，信息就永远丢了。能做的只是把它写进样本量计算、写进分析计划、写进最后的报告，而不是假装它不存在。承认不确定性，比假装确定诚实得多。&lt;/p&gt;</description></item><item><title>从Epoch和Element搞懂SDTM</title><link>https://touchingfish.top/2025/sdtm-epoch-element/</link><pubDate>Fri, 28 Feb 2025 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2025/sdtm-epoch-element/</guid><description>&lt;p&gt;随机化和 AE 是临床试验的骨肉，那 SDTM 大概就是血管——把散落各处的数据串成标准格式，送到监管机构面前。&lt;/p&gt;
&lt;p&gt;SDTM 的全称是 Study Data Tabulation Model，&amp;ldquo;研究数据列表模型&amp;quot;这个译名念起来有点硌嘴。翻译成人话就是：数据提交的标准化格式。&lt;/p&gt;
&lt;p&gt;FDA 要求所有新药申请（NDA）必须以 SDTM 格式交数据。不是建议。&lt;/p&gt;
&lt;h2 id="章节和小节"&gt;章节和小节&lt;/h2&gt;
&lt;p&gt;我啃 SDTM 的时候，第一个绊住我的地方就是 Epoch 和 Element。&lt;/p&gt;
&lt;p&gt;简单说：&lt;/p&gt;
&lt;p&gt;Element（元素） 是试验里最小的连续时间段。有明确的起止条件。比如 Screening（筛选期）——从签知情同意到随机化之前；Drug A Treatment——从第一次给药到最后一次给药；Follow-up（随访期）——从末次给药到出组。每个 Element 有一个代码（ETCD）和全称。&lt;/p&gt;
&lt;p&gt;Epoch（时期） 是更高一层的划分，用来组织不同的 Element。一个 Epoch 可以装一个或多个 Element。&lt;/p&gt;
&lt;p&gt;比如治疗期这个 Epoch 底下可能塞着 Placebo Treatment 和 Drug A Treatment 两个 Element。筛选期就一个 Screening Element。随访期就一个 Follow-up Element。&lt;/p&gt;
&lt;p&gt;（我的记忆方式：Epoch 是大标题，Element 是小标题。一章里可以有多个小节。）&lt;/p&gt;
&lt;h2 id="为什么非得分两层"&gt;为什么非得分两层&lt;/h2&gt;
&lt;p&gt;因为在 SDTM 的数据集里，它们是分开的。&lt;/p&gt;
&lt;p&gt;SE（Subject Elements）数据集记录每个受试者经历了哪些 Element，起止时间是什么。这是连续性的、细颗粒的。&lt;/p&gt;
&lt;p&gt;DS（Disposition，受试者处置）数据集只记关键里程碑。它是摘要性质的。&lt;/p&gt;
&lt;p&gt;一个受试者可能老老实实走完了 Screening → Treatment A → Follow-up 三个 Element——SE 里三个记录。但在 DS 里可能只抓两个节点：Randomized（随机化），Completed Study（完成试验）。DS 不关心你在治疗期待了多久，SE 会告诉你。&lt;/p&gt;</description></item><item><title>把AE和SAE背下来</title><link>https://touchingfish.top/2025/ae-sae-reporting/</link><pubDate>Sat, 15 Feb 2025 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2025/ae-sae-reporting/</guid><description>&lt;p&gt;不良事件（Adverse Event, AE）大概是临床试验面试里出场率最高的话题。&lt;/p&gt;
&lt;p&gt;不是因为它复杂。是因为它直接连着受试者安全——GCP 的心脏。面试官需要确认你对这一块有基本的本能反应，不是临时翻书背的。&lt;/p&gt;
&lt;h2 id="你以为是边界其实不是"&gt;你以为是边界，其实不是&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Adverse Event (AE)：受试者在试验期间出现的任何不利医疗情况，与研究药物或干预措施未必有因果关系。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;四个字咬在最前面：&amp;ldquo;未必相关&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;什么意思？受试者试验期间出现的任何身体不适——头疼、发烧、血压飙了、平地摔了一跤——不管原因是什么，全部要记录。感冒要记。车祸要记。自己吃坏肚子也要记。&lt;/p&gt;
&lt;p&gt;第一次看到方案里 AE 记录范围的时候，我整个人是懵的。&lt;/p&gt;
&lt;p&gt;我以为 AE 只记跟药物搭边的反应。结果发现，连受试者周末爬山崴了脚，都要老老实实填进系统。&lt;/p&gt;
&lt;p&gt;逻辑是这样的：临床试验的核心任务是评估药物安全性。如果你只记录&amp;quot;看起来可能相关&amp;quot;的事件，那你怎么知道自己有没有漏掉&amp;quot;看起来无关但实际上有关&amp;quot;的事件？事后判断因果关系是统计师和分析师的事情，研究者只管如实记录。&lt;/p&gt;
&lt;p&gt;把判断交给数据，把诚实留给现场。&lt;/p&gt;
&lt;h2 id="五条标准一条红线"&gt;五条标准，一条红线&lt;/h2&gt;
&lt;p&gt;严重不良事件（Serious Adverse Event, SAE）的定义是固定的。五条：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;导致死亡&lt;/li&gt;
&lt;li&gt;威胁生命&lt;/li&gt;
&lt;li&gt;导致住院或延长住院时间&lt;/li&gt;
&lt;li&gt;导致永久性或显著的残疾/功能障碍&lt;/li&gt;
&lt;li&gt;导致先天异常/出生缺陷&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;面试的时候，面试官喜欢出场景题。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;受试者随访期间因为心脏病发作进了 ICU，算不算 SAE？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;算。一条&amp;quot;威胁生命&amp;quot;，一条&amp;quot;导致住院&amp;quot;，双命中。&lt;/p&gt;
&lt;p&gt;再来一题更刁的。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;受试者血压控制不好，医生建议住院观察，但受试者拒绝了。算不算 SAE？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;不算 SAE——但需要记成 AE。&amp;ldquo;导致住院&amp;quot;这个标准的前提是实际发生了住院行为，不是医生动了个念头。&lt;/p&gt;
&lt;p&gt;SAE 报告的时限是二十四小时。&lt;/p&gt;
&lt;p&gt;从研究者获知 SAE 那一刻开始计时。二十四小时内必须报给申办方。申办方收到之后，还有额外的时限向监管机构汇报——但这第一步，二十四小时，雷打不动。&lt;/p&gt;
&lt;p&gt;这个数字是要考试的。&lt;/p&gt;
&lt;p&gt;我做了卡片，每天早上对着念一遍：死亡、威胁生命、住院、残疾、先天异常。念到后来做梦都在复读。&lt;/p&gt;
&lt;p&gt;（有点病态。备考嘛，谁还没点神经质。）&lt;/p&gt;
&lt;h2 id="相关性是个主观题"&gt;相关性是个主观题&lt;/h2&gt;
&lt;p&gt;面试官经常追着问：你怎么判断 AE 跟药物的相关性？&lt;/p&gt;
&lt;p&gt;这是个有争议的话题。&lt;/p&gt;
&lt;p&gt;最通行的框架是五分法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;肯定相关（Definite）&lt;/li&gt;
&lt;li&gt;很可能相关（Probable）&lt;/li&gt;
&lt;li&gt;可能相关（Possible）&lt;/li&gt;
&lt;li&gt;可能无关（Unlikely）&lt;/li&gt;
&lt;li&gt;无法判断（Unassessable）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;偶尔有人用七分法——在&amp;quot;肯定&amp;quot;和&amp;quot;很可能&amp;quot;之间再多切两级。本质上都是在灰色地带划线。&lt;/p&gt;
&lt;p&gt;判断依据没有客观标尺，主要靠研究者综合几件事：时间关系——是不是用药之后出现的？已知药理——这是说明书上写过的不良反应吗？去激发和再激发——药停了症状就消失了？药又用上了症状就回来了？&lt;/p&gt;
&lt;p&gt;&amp;ldquo;相关性判断为什么重要？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;因为它直接决定安全性分析的结论。如果一份试验报告里出现了大量&amp;quot;肯定相关&amp;quot;的 SAE，那这个药的风险收益比就要重新上秤。救人还是伤人，有时候只差一个相关性评级。&lt;/p&gt;
&lt;h2 id="记录不是一次性的"&gt;记录不是一次性的&lt;/h2&gt;
&lt;p&gt;AE 不是记完就可以翻页的。&lt;/p&gt;
&lt;p&gt;研究者要持续随访，直到三件事之一发生：事件解决了（恢复或稳定），受试者失访了，或者事件的根因确认了——比如确定是受试者自己停药导致的停药后事件。&lt;/p&gt;
&lt;p&gt;结局（outcome）有几种标准记法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;解决（Resolved）&lt;/li&gt;
&lt;li&gt;解决但有后遗症（Resolved with sequelae）&lt;/li&gt;
&lt;li&gt;未解决/持续中（Not resolved / ongoing）&lt;/li&gt;
&lt;li&gt;解决中（Resolving）&lt;/li&gt;
&lt;li&gt;致命（Fatal）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;有个容易搞混的地方。&amp;ldquo;致命&amp;quot;和&amp;quot;导致死亡&amp;quot;是两回事。一个 AE 可以状态是&amp;quot;未解决/持续中&amp;rdquo;，但随访期间受试者因为别的原因去世了——它被标注为&amp;quot;致命&amp;quot;结局。死亡本身不是 AE，是一个终点。&lt;/p&gt;</description></item><item><title>随机化，被问到不会为止</title><link>https://touchingfish.top/2025/randomization-details/</link><pubDate>Sat, 08 Feb 2025 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2025/randomization-details/</guid><description>&lt;p&gt;随机化（Randomization）是临床试验的基石。&lt;/p&gt;
&lt;p&gt;这句话我在面试里说了不下十遍。每次说的时候底气都很足——直到面试官开始往下挖。&lt;/p&gt;
&lt;p&gt;上统计课的时候，老师讲得轻描淡写：随机化就是让混杂变量在组间均匀分布。掷硬币，分两组，完事。我当时觉得，这有什么难的？&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sas" data-lang="sas"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rand = rand(&lt;span class="s"&gt;&amp;#34;uniform&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;group&lt;/span&gt; = &lt;span class="k"&gt;if&lt;/span&gt; rand &amp;lt; &lt;span class="m"&gt;0.5&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Treatment&amp;#34;&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Control&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;一行代码。大样本下组间基线特征自然均衡。简单随机化（Simple Randomization）操作起来也确实这么痛快——每个受试者扔一次骰子，去哪组全凭运气。&lt;/p&gt;
&lt;p&gt;问题出在小样本上。&lt;/p&gt;
&lt;p&gt;四十个人的试验，随机下来可能是 24 比 16。理论上不偏，但统计效能（power）被削了一块——你本来算好需要二十个对照，实际只拿到十六个，power 就缩水了。&lt;/p&gt;
&lt;p&gt;面试官问我小样本用什么方法。&lt;/p&gt;
&lt;p&gt;我说分层随机化。&lt;/p&gt;
&lt;p&gt;（现在回头想，这个回答不对。应该先想到区组随机化。）&lt;/p&gt;
&lt;h2 id="每个区块都是一个小平衡"&gt;每个区块都是一个小平衡&lt;/h2&gt;
&lt;p&gt;区组随机化（Block Randomization）是我准备面试的时候啃得最细的一个点。&lt;/p&gt;
&lt;p&gt;道理不复杂。把受试者切分成若干&amp;quot;区块&amp;quot;，每个区块内部按固定比例分。比如区块大小是 4，比例 1:1——每四个人里一定有两个试验、两个对照。区块内部严格对称。&lt;/p&gt;
&lt;p&gt;这个设计在多中心试验（multi-center trial）里特别好用。A 中心招了三十个人，B 中心只有十个——简单随机化可能让 A 中心变成 20:10，B 中心变成 8:2，摆在一起虽然整体是 1:1，但每个中心内部歪得离谱。区组随机化让每个中心各自维持内部平衡。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;前提是区块大小不被猜到。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果区块固定为 4，研究者看到前三个人的分组就能反推第四个。盲法（blinding）原地作废。&lt;/p&gt;
&lt;p&gt;解法：把区块大小也随机化。可以是 4，也可以是 6，随机抽。&lt;/p&gt;
&lt;p&gt;面试官追着这个点问。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;区组大小固定的话，会有什么后果？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;我顿了三秒。说，可能造成选择偏倚——研究者会看前面几个人的分组，决定要不要让下一个人入组。&lt;/p&gt;
&lt;p&gt;他没接话。&lt;/p&gt;
&lt;p&gt;（后来我琢磨，我的方向大概对了一半。猜到分组确实会打穿盲法。但&amp;quot;决定是否入组&amp;quot;这个说法不准确——入组标准是写死的，研究者不应该有裁量空间。真正怕的是他通过控制入组节奏来影响分组：预测下一个会进试验组，就稍微拖一拖。这更接近实施偏倚而不是选择偏倚。）&lt;/p&gt;
&lt;h2 id="按特征分堆"&gt;按特征分堆&lt;/h2&gt;
&lt;p&gt;分层随机化（Stratified Randomization）解决另一件事。&lt;/p&gt;
&lt;p&gt;有些变量对结局影响很大——年龄、性别、疾病分期。小样本里，纯随机可能让这些变量在组间歪掉。分层做法的思路是：先按重要特征切层（60 岁以下/60 岁以上、男/女），然后在每一层内部再做随机。保证每个分层因素在两组之间是平衡的。&lt;/p&gt;
&lt;p&gt;面试题经常问：&amp;ldquo;分层和区组有什么区别？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;分层按受试者特征来，区组按入组先后来。分层管协变量的平衡，区组管各时间点样本量的平衡。两者不互斥——可以先分层，再在层内跑区组随机化。面试的时候如果能说出这个组合用法，大概能加点分。&lt;/p&gt;
&lt;h2 id="一时语塞"&gt;一时语塞&lt;/h2&gt;
&lt;p&gt;那场面试没有后续。&lt;/p&gt;
&lt;p&gt;我猜是因为答得太虚。概念头头是道，落地一问就露馅。&lt;/p&gt;
&lt;p&gt;面试官最后抛了一个开放式结尾：&amp;ldquo;如果一个中心招募速度特别慢，怎么处理？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;我说，跟中心研究者沟通，了解原因。如果是患者来源问题，调整招募策略或者增加中心。&lt;/p&gt;
&lt;p&gt;他说了一句让我记到现在的话。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;CRO 行业现在收缩得很厉害。很多中心不是招不到患者，是申办方没钱了，主动暂停试验。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;我当场石化。&lt;/p&gt;
&lt;p&gt;背了那么多术语、方法、最佳实践，到头来被一个行业事实干翻了。统计方法能解决的问题是有边界的——资金、政策、市场周期，这些东西不在任何一本 GCP 教材里。&lt;/p&gt;
&lt;p&gt;后来我查了一下，CRO 确实在过冬。不是哪个公司的原因，是整个赛道都在缩。&lt;/p&gt;</description></item><item><title>Odds Ratio, Risk Ratio, and Risk Difference</title><link>https://touchingfish.top/2024/odds-ratio-risk-ratio-risk-difference/</link><pubDate>Wed, 18 Dec 2024 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2024/odds-ratio-risk-ratio-risk-difference/</guid><description>&lt;p&gt;一切从一张 2×2 表开始。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;Event&lt;/th&gt;
 &lt;th&gt;No Event&lt;/th&gt;
 &lt;th&gt;Total&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Treated&lt;/td&gt;
 &lt;td&gt;a&lt;/td&gt;
 &lt;td&gt;b&lt;/td&gt;
 &lt;td&gt;a+b&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Control&lt;/td&gt;
 &lt;td&gt;c&lt;/td&gt;
 &lt;td&gt;d&lt;/td&gt;
 &lt;td&gt;c+d&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;你做了一个 RCT，收了三百个人。一百五在治疗组，一百五在对照组。治疗组发生事件的人数是 a，对照组是 c。&lt;/p&gt;
&lt;p&gt;你对着这张表算出了三个数。它们趴在同一个数据的背上，长得像三胞胎，但其实是三种完全不同的语言。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RD: Risk Difference&lt;/strong&gt; = $p_1 - p_0 = \frac{a}{a+b} - \frac{c}{c+d}$&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RR: Risk Ratio&lt;/strong&gt; (或 Relative Risk) = $\frac{p_1}{p_0} = \frac{a/(a+b)}{c/(c+d)}$&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OR: Odds Ratio&lt;/strong&gt; = $\frac{p_1/(1-p_1)}{p_0/(1-p_0)} = \frac{ad}{bc}$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;三个数都从四个格子里长出来。但它们讲的故事不一样。选错了，你的结论就可能从&amp;quot;有效&amp;quot;变成&amp;quot;无效&amp;quot;——或者反过来，把一个小效应吹成一个中药丸子的神话。&lt;/p&gt;
&lt;h2 id="rd最直观也最不老实"&gt;RD：最直观，也最不老实&lt;/h2&gt;
&lt;p&gt;RD 是治疗组和对照组在事件发生率上的绝对差距。加性尺度（additive scale）。很直白：每治疗 100 人，多救（或多伤）几个。&lt;/p&gt;
&lt;p&gt;RD = 0.05 意味着治疗组比对照组多 5 个百分点的人发生了（或避免了）事件。&lt;/p&gt;
&lt;p&gt;它和 NNT（Number Needed to Treat，需治疗人数）有一条简洁的通道：&lt;/p&gt;
$$NNT = \frac{1}{|RD|}$$&lt;p&gt;RD = 0.10 → NNT = 10。每治疗 10 个人，多避免 1 次事件。临床医生爱 NNT，因为它是唯一一个可以像钱一样直接&amp;quot;花&amp;quot;的数字——给多少人用药，换多少获益。&lt;/p&gt;</description></item><item><title>人会犯错，分组不会</title><link>https://touchingfish.top/2024/intention-to-treat-vs-per-protocol/</link><pubDate>Tue, 17 Dec 2024 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2024/intention-to-treat-vs-per-protocol/</guid><description>&lt;p&gt;设想一个场景。&lt;/p&gt;
&lt;p&gt;你是一个统计师，面前摆着一份 RCT 的 CRF（Case Report Form，病例报告表）。受试者编号 017，按随机表被分到了治疗组。方案说每天一片药，吃六个月。你在随访记录里看到：第二个月开始，017 的依从性（compliance）断崖式下降。药片计数显示他大概只吃了一半。第六个月的时候，他人还在，药已经不怎么碰了。&lt;/p&gt;
&lt;p&gt;然后你翻到他的主要终点数据。他的血压降了 15 mmHg。对照组的平均降幅是 8 mmHg。&lt;/p&gt;
&lt;p&gt;你怎么办？把他扔进分析里，还是不扔？&lt;/p&gt;
&lt;p&gt;这个问题看起来像一道统计题，但它不是。它是一个关于&amp;quot;你到底想说什么&amp;quot;的问题——而你在这一刻的选择，决定了你的结论是一个政策建议，还是一个生物学论断。&lt;/p&gt;
&lt;h2 id="itt一旦随机永远分析"&gt;ITT：一旦随机，永远分析&lt;/h2&gt;
&lt;p&gt;ITT 的全称是 Intention-to-Treat。它的定义硬到没有商量余地：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Once randomized, always analyzed.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;所有被随机化的受试者，都按他们被分配到的组别进行分析——不管他们有没有接受分配的治疗、有没有违反方案（protocol deviation）、有没有中途退出（withdrawal）。哪怕 017 一颗药都没吃，他在分析中仍然是&amp;quot;治疗组&amp;quot;的一员。&lt;/p&gt;
&lt;p&gt;这个原则的完整英文表述值得全文引用：All randomized subjects are analyzed according to the group to which they were randomly assigned, regardless of whether they received the allocated treatment, deviated from the protocol, or withdrew from the study.&lt;/p&gt;
&lt;p&gt;翻译成人话：你当初把他随机分到哪一组，数据分析的时候就把他放在哪一组。后面发生的一切——吃不吃药、跑不跑路——都不能改变这个归属。&lt;/p&gt;
&lt;p&gt;听起来有点不讲道理。&lt;/p&gt;
&lt;p&gt;但它背后有一条统计学的脊梁：随机化（randomization）是推断的根基。ITT 保护的正是随机化所创造的组间可比性（comparability）。把那些不依从的人扔掉，你就打破了随机化——因为不依从（non-adherence）不是随机发生的。扔掉的人不是随机样本，而是有共同特征的一群人。&lt;/p&gt;
&lt;p&gt;这个逻辑并不复杂，但它的后果很深。&lt;/p&gt;
&lt;h2 id="为什么-itt-对-superiority-trial-是金标准"&gt;为什么 ITT 对 superiority trial 是金标准&lt;/h2&gt;
&lt;p&gt;ITT 对于优效性试验（superiority trial）有一个被广泛接受的定性判断：它是保守的（conservative）。&lt;/p&gt;</description></item><item><title>你用 N 赌一个 p 值 / Sample Size Estimation</title><link>https://touchingfish.top/2024/sample-size-estimation/</link><pubDate>Mon, 16 Dec 2024 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2024/sample-size-estimation/</guid><description>&lt;p&gt;一个临床医生和一个统计师在走廊里相遇。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;这个试验需要多少人？&amp;rdquo; 医生问。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;那要看你想证明什么。&amp;rdquo; 统计师说。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;证明药有效啊。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;多少算有效？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;医生想了三秒，给了一个数字。统计师在脑子里跑了一遍公式，又给了一个数字。&lt;/p&gt;
&lt;p&gt;这场对话每天都在发生。但它底下藏着的逻辑，远比一句&amp;quot;样本量不够&amp;quot;要复杂。样本量估计（sample size estimation）不是在报表里填一个数字，而是把整个试验设计写成一个等式——然后把你的预算、你的野心、你愿意承担的犯错概率，全部扔进这个等式的一边，看另一边跳出多少 N。&lt;/p&gt;
&lt;p&gt;你手里的钱（N），去赌一个可以承受的错误概率（α 和 β）。问题是，这场交易里有太多人想偷你的 N：脱落率（dropout rate）、多重比较（multiplicity）——你每防住一个，就得加点钱。&lt;/p&gt;
&lt;h2 id="四种关系四种方程"&gt;四种关系，四种方程&lt;/h2&gt;
&lt;p&gt;在开始之前，先搞清楚我们到底想证明什么。&lt;/p&gt;
&lt;p&gt;临床上常见的比较设计有四种，英文标准名称写在这里，因为中文翻译常常混用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Superiority trial&lt;/strong&gt;（优效性试验）：证明 A 比 B 好。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Non-inferiority trial&lt;/strong&gt;（非劣效性试验）：证明 A 不比 B 差太多，差在可接受范围内。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Equivalence trial&lt;/strong&gt;（等效性试验）：证明 A 和 B 在某个范围内等效。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bioequivalence study&lt;/strong&gt;（生物等效性研究）：证明仿制药和原研药在药代动力学参数上等价。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;四种关系的数学表达各不相同，公式也因此不一样。&lt;/p&gt;
&lt;p&gt;先讲最常见的 superiority trial。另外三种的逻辑差异主要在界值（margin）的设定上，原理相通，本文不展开。&lt;/p&gt;
&lt;h2 id="两类错误你可以犯错但不能白犯错"&gt;两类错误：你可以犯错，但不能白犯错&lt;/h2&gt;
&lt;p&gt;这是整个样本量估计的理论地基。如果这块没理解，后面的公式就是一堆符号。&lt;/p&gt;
&lt;h3 id="type-i-error-α"&gt;Type I error (α)&lt;/h3&gt;
&lt;p&gt;也叫 significance level（显著性水平）。&lt;/p&gt;
&lt;p&gt;定义：$H_0$ 为真时，你错误地拒绝了 $H_0$。&lt;/p&gt;
&lt;p&gt;翻译成人话：药其实没用，但你的数据&amp;quot;看起来&amp;quot;像是有用。你被数据骗了。&lt;/p&gt;
&lt;p&gt;典型值是 0.05（双侧，two-sided）。也就是说，你愿意接受在 20 次试验里被数据骗 1 次的概率。&lt;/p&gt;
&lt;p&gt;（我自己学到这里的时候，总觉得 0.05 是个任意的数字——为什么不是 0.04 或 0.06？后来才明白，它确实是任意的。Fisher 当年说&amp;quot;it is convenient to take this point as a limit&amp;quot;，翻译过来就是&amp;quot;我觉得这个数字挺方便&amp;quot;。方便而已。）&lt;/p&gt;</description></item><item><title>树—数据—假设</title><link>https://touchingfish.top/2024/tree-data-and-hypothesis/</link><pubDate>Tue, 10 Dec 2024 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2024/tree-data-and-hypothesis/</guid><description>&lt;p&gt;PGLS 最像一面镜子：它不一定告诉你新东西，但它很擅长把你原来不愿意看的细节照出来。&lt;/p&gt;
&lt;p&gt;比如这些：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你的物种名到底有没有对齐&lt;/li&gt;
&lt;li&gt;你的分支长度代表什么&lt;/li&gt;
&lt;li&gt;你有没有在无意中让几条异常点替你&amp;quot;完成论证&amp;quot;&lt;/li&gt;
&lt;li&gt;你拿到的是一棵树，还是一堆不确定的树&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我不是在吓人。我只是说：PGLS 的麻烦，大部分不在数学里，在整理里。&lt;/p&gt;
&lt;p&gt;这篇我想写成一个&amp;quot;用前自检 + 用后诊断&amp;quot;的清单，但还是按随笔的方式写：因为真正的坑，往往不是你不会做，是你没想到它会坑你。&lt;/p&gt;
&lt;h2 id="先把树和数据对齐"&gt;先把树和数据对齐&lt;/h2&gt;
&lt;p&gt;这一步没做好，后面都是幻觉。&lt;/p&gt;
&lt;h3 id="别信你的眼睛"&gt;别信你的眼睛&lt;/h3&gt;
&lt;p&gt;最常见的错误是：树里叫 &lt;code&gt;Homo_sapiens&lt;/code&gt;，表里叫 &lt;code&gt;Homo sapiens&lt;/code&gt;。&lt;br&gt;
你以为只是一个空格，代码会很礼貌地替你处理。&lt;br&gt;
但它经常不会，它只会很安静地把样本丢掉。&lt;/p&gt;
&lt;p&gt;我建议你在任何拟合之前，强制做三件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;显式列出：树里有哪些 tip label，数据里有哪些 species&lt;/li&gt;
&lt;li&gt;计算交集与差集，并把差集打印出来&lt;/li&gt;
&lt;li&gt;最终拟合使用的物种数写进结果里（别让它悄悄变化）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="时间还是替换数"&gt;时间，还是替换数&lt;/h3&gt;
&lt;p&gt;你当然可以说&amp;quot;我用的就是这棵树&amp;quot;。&lt;br&gt;
但 PGLS 会追问：你这棵树的分支长度是什么意思？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;时间树（ultrametric）更直观：共享历史 = 共享时间&lt;/li&gt;
&lt;li&gt;替换数树有时也能用，但解释要更谨慎：共享历史更像&amp;quot;共享变化量&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;（你不写清楚，读者很难判断你 $\Sigma$ 的意义是什么。）&lt;/p&gt;
&lt;h3 id="一棵树还是一堆树"&gt;一棵树，还是一堆树&lt;/h3&gt;
&lt;p&gt;很多时候我们只有一棵&amp;quot;最佳树&amp;quot;，于是就拿它当唯一真相。&lt;/p&gt;
&lt;p&gt;但如果你的树来自贝叶斯后验或 bootstrap，你其实已经有一堆树了。&lt;br&gt;
那你至少可以做一件很便宜的事：在多棵树上重复拟合，看看结论是否稳定。&lt;/p&gt;
&lt;p&gt;结论不稳定并不可耻。可耻的是你明明可以检查，却假装不知道。&lt;/p&gt;
&lt;h2 id="残差里藏了什么"&gt;残差里藏了什么&lt;/h2&gt;
&lt;p&gt;PGLS 的核心假设，是误差结构与树一致（或经 $\lambda$ 调过后足够一致）。&lt;br&gt;
所以你需要看的不是只有系数和 p 值，还有残差。&lt;/p&gt;
&lt;p&gt;我通常会做这几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;残差 vs 拟合值：有没有明显模式（非线性、异方差）&lt;/li&gt;
&lt;li&gt;影响点：有没有某个物种把斜率拽得太狠&lt;/li&gt;
&lt;li&gt;系统发育信号：残差里是否仍有明显系统发育结构（意味着模型没吃掉你以为它能吃掉的那部分）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一步的心态很重要：诊断不是为了证明你对，而是为了找出你错在哪儿。&lt;/p&gt;
&lt;h3 id="残差诊断的统计学基础"&gt;残差诊断的统计学基础&lt;/h3&gt;
&lt;h4 id="残差的定义"&gt;残差的定义&lt;/h4&gt;
&lt;p&gt;在 GLS/PGLS 下，残差定义为：&lt;/p&gt;
$$e = y - X\hat{\beta}_{GLS}$$&lt;p&gt;在 OLS 下，残差方差是常数（$\sigma^2$）；但在 GLS 下，由于 $\Sigma$ 不是对角矩阵，原始残差 $e$ 的方差不是常数——离根越近的物种的残差，通常方差更大。&lt;/p&gt;</description></item><item><title>不爱解释的人 / Phylogenetic GLS</title><link>https://touchingfish.top/2024/phylogenetic-generalized-least-square/</link><pubDate>Wed, 20 Nov 2024 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2024/phylogenetic-generalized-least-square/</guid><description>&lt;p&gt;同一份数据，同一个自变量，同一个因变量。&lt;/p&gt;
&lt;p&gt;OLS 说：显著。&lt;/p&gt;
&lt;p&gt;PGLS 说：不显著。&lt;/p&gt;
&lt;p&gt;很想把锅甩给树：是不是树不对？是不是分支长度乱了？&lt;/p&gt;
&lt;p&gt;还是哪里写错了代码？&lt;/p&gt;
&lt;p&gt;PGLS 只是站在那儿，像一个不爱解释的人。&lt;/p&gt;
&lt;p&gt;这篇我想用一种不那么&amp;quot;公式&amp;quot;的方式，讲清楚 PGLS 到底在做什么。&lt;/p&gt;
&lt;p&gt;你只需要抓住一个中心句：&lt;/p&gt;
&lt;p&gt;PGLS 不是换了一个更玄的回归，它只是承认误差有相关结构。&lt;/p&gt;
&lt;h2 id="误差像一盘散沙"&gt;误差像一盘散沙&lt;/h2&gt;
&lt;p&gt;普通线性回归（OLS，Ordinary Least Squares，普通最小二乘法）通常默认：&lt;/p&gt;
$$\epsilon \sim N(0, \sigma^2 I)$$&lt;p&gt;这里 $I$ 的意思很朴素：误差之间互不相关，方差还都一样。&lt;/p&gt;
&lt;p&gt;你可以把它理解成：每个物种的&amp;quot;解释不掉的那部分&amp;quot;，互相之间不应该传染。&lt;/p&gt;
&lt;p&gt;但系统发育数据里，这个默认经常站不住脚：近缘物种共享历史，解释不掉的那部分会一起漂。&lt;/p&gt;
&lt;p&gt;于是你进入另一个世界。&lt;/p&gt;
&lt;h3 id="ols-估计量的完整推导"&gt;OLS 估计量的完整推导&lt;/h3&gt;
&lt;p&gt;$y$ 是因变量的向量（每个物种一个值），$X$ 是设计矩阵（每行一个物种，每列一个自变量，第一列通常是全 1，代表截距），$\beta$ 是我们要估计的系数向量。符号 $'$ 表示转置。&lt;/p&gt;
&lt;p&gt;OLS 想做的事情很简单：找一组 $\beta$，让预测值 $X\beta$ 和观测值 $y$ 之间的残差平方和最小。目标函数写成矩阵形式就是：&lt;/p&gt;
$$S(\beta) = (y - X\beta)'(y - X\beta)$$&lt;p&gt;把它展开，是为了后面能对 $\beta$ 求导：&lt;/p&gt;
$$S(\beta) = y'y - y'X\beta - \beta'X'y + \beta'X'X\beta$$&lt;p&gt;中间两项看起来不一样，其实 $y'X\beta$ 是一个标量（1×1 的数），标量的转置等于自己，所以 $\beta'X'y = (y'X\beta)' = y'X\beta$。合并之后：&lt;/p&gt;</description></item><item><title>一棵树，怎么长出一个协方差矩阵</title><link>https://touchingfish.top/2024/pagels-lambda/</link><pubDate>Tue, 05 Nov 2024 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2024/pagels-lambda/</guid><description>&lt;p&gt;我以前对&amp;quot;在树上做统计&amp;quot;最大的抵触，不是我不信树，而是我不信那句很随意的话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;我们假设性状沿着树做 Brownian motion。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;听起来像一句推脱。像你问一个人为什么迟到，他说：&amp;ldquo;路上有点堵。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;堵在哪儿？怎么堵的？堵到什么程度？有没有备选路线？——你越问越像在吵架。&lt;/p&gt;
&lt;p&gt;但后来我发现，Brownian motion（BM）在这里的意义，和&amp;quot;世界真的在做随机游走&amp;quot;没什么关系。它更像是一种最小的诚实：你承认性状会变、承认变化会积累、承认近缘会更像，然后你就能把&amp;quot;历史&amp;quot;写成一张可以计算的表。&lt;/p&gt;
&lt;p&gt;那张表就是协方差矩阵：$\Sigma$。&lt;/p&gt;
&lt;p&gt;这篇我想把三件事讲清楚：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;BM 在系统发育语境下到底是什么（别把它当玄学）&lt;/li&gt;
&lt;li&gt;为什么 $\Sigma_{ij}$ 只和&amp;quot;共享祖先到根的那段路&amp;quot;有关&lt;/li&gt;
&lt;li&gt;Pagel&amp;rsquo;s $\lambda$ 到底在调什么：不是调&amp;quot;模型拟合&amp;quot;，而是在调&amp;quot;你愿意相信多少历史&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="先把-brownian-motion-说成一句人话"&gt;先把 Brownian motion 说成一句人话&lt;/h2&gt;
&lt;p&gt;BM 在这里可以理解成：&lt;/p&gt;
&lt;p&gt;性状的增量（变化）在每一小段时间里都是随机的，方向不固定；但变化会累计，所以时间越长，方差越大。&lt;/p&gt;
&lt;p&gt;你不必把它当作宇宙真理。你只要把它当作一个&amp;quot;最低成本&amp;quot;的默认假设：它不要求你知道选择压力、也不要求你知道适应峰值在哪里；它只是说——不解释的东西，就先当成随机漂移。&lt;/p&gt;
&lt;p&gt;于是你立刻得到一个很实用的结论：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;沿着分支走得越久，性状的不确定性越大&lt;/li&gt;
&lt;li&gt;两个物种如果共享一段历史，它们那段历史里累积的&amp;quot;漂移&amp;quot;是同一份，所以它们会相关&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;相关性在这里不是&amp;quot;统计技巧&amp;quot;，是&amp;quot;共享账本&amp;quot;。&lt;/p&gt;
&lt;h3 id="brownian-motion-的严格定义"&gt;Brownian Motion 的严格定义&lt;/h3&gt;
&lt;p&gt;上面的人话版够用了，但如果你想完全理解后面的推导，这里有一份不走捷径的版本。&lt;/p&gt;
&lt;p&gt;一维标准 Brownian Motion $W(t)$ 是一个随机过程，满足：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;初始条件：$W(0) = 0$&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;独立增量：对任意 $0 \leq s &lt; t$，增量 $W(t) - W(s)$ 与 $\{W(u): u \leq s\}$ 独立&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;正态增量：$W(t) - W(s) \sim N(0, \sigma^2(t - s))$&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;连续路径：$W(t)$ 关于 $t$ 几乎必然连续&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;第 3 条是核心：增量服从正态分布，方差随时间线性增长。这直接导致&amp;quot;走得越久，方差越大&amp;quot;这个结论。&lt;/p&gt;</description></item><item><title>亲缘关系到底哪里不讲道理 / Phylogeny</title><link>https://touchingfish.top/2024/phylogenetic-relationships/</link><pubDate>Tue, 15 Oct 2024 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2024/phylogenetic-relationships/</guid><description>&lt;p&gt;第一次认真看系统发育树的时候——一堆分叉的线条，像冬天窗户上的霜花。然后有人指着它说：这代表亲缘关系。接着就很自然地推出一句更狠的话：你的数据不独立。&lt;/p&gt;
&lt;p&gt;（我当时的反应大概是：我怎么就不独立了？我每个物种都只记录了一行数据啊。很独立，很孤独，甚至。）&lt;/p&gt;
&lt;p&gt;但这句话——&amp;ldquo;不独立&amp;rdquo;——其实是整套 phylogenetic comparative methods（系统发育比较方法）的门把手。你要进去，得先承认门在那儿。&lt;/p&gt;
&lt;p&gt;今天我想把这件事说得朴素一点：树不是装饰，它在记账；而相关性这东西，会从历史里长出来。&lt;/p&gt;
&lt;h2 id="树在用什么货币记账"&gt;树在用什么货币记账&lt;/h2&gt;
&lt;p&gt;系统发育树最核心的两件东西：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;拓扑（topology）：谁和谁更近，分叉顺序是什么&lt;/li&gt;
&lt;li&gt;分支长度（branch length）：每条边&amp;quot;有多长&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;拓扑像族谱：你是我表弟还是堂弟，这种事不关心你长多高。&lt;br&gt;
分支长度像时间或变化量：这才开始关心&amp;quot;隔了多久&amp;quot;&amp;ldquo;变了多少&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;问题是：分支长度到底是什么？&lt;/p&gt;
&lt;p&gt;常见两种含义：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;按时间计：单位可能是百万年（Myr）。这类树往往是 ultrametric（所有叶子到根的距离相同），因为&amp;quot;都活到今天&amp;quot;。&lt;/li&gt;
&lt;li&gt;按替换数计：单位更像&amp;quot;每位点多少替换&amp;quot;。这类树不一定 ultrametric。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我更愿意把这件事叫做：树在用两种货币记账。你拿时间树去算替换、拿替换树去当时间，都会&amp;quot;余额不对&amp;quot;。&lt;/p&gt;
&lt;p&gt;后面做 PGLS（Phylogenetic Generalized Least Squares，系统发育广义最小二乘）的时候，这个&amp;quot;货币单位&amp;quot;会悄悄进入协方差矩阵里，影响你认为&amp;quot;相关性该有多强&amp;quot;。所以它不是细节，是地基。&lt;/p&gt;
&lt;h2 id="根外群以及方向感"&gt;根、外群，以及方向感&lt;/h2&gt;
&lt;p&gt;没有根的树（unrooted tree）只告诉你&amp;quot;相对关系&amp;quot;，不告诉你&amp;quot;谁先谁后&amp;quot;。&lt;br&gt;
有根的树（rooted tree）才有方向：从祖先走到后代。&lt;/p&gt;
&lt;p&gt;现实里我们常用外群（outgroup）来定根：找一个确定在研究对象之外的物种（或类群），把根放在它和其他物种之间。&lt;/p&gt;
&lt;p&gt;这里的直觉是：根不是为了更好看，是为了让时间的箭头出现。&lt;br&gt;
而一旦时间出现，很多事情就不再是统计上的巧合，而是历史造成的相似。&lt;/p&gt;
&lt;h2 id="别站队先说实话"&gt;别站队，先说实话&lt;/h2&gt;
&lt;p&gt;这两者的矛盾，很多时候不是理论问题，是现实问题：你手里有什么，就用什么，然后你就会担心自己是不是在骗人。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基因树（gene tree）：用某个基因或某段序列推出来的树&lt;/li&gt;
&lt;li&gt;物种树（species tree）：物种分化历史的更理想描述（通常需要多基因、多信息整合）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它们不一致很常见：不完全谱系排序（ILS，Incomplete Lineage Sorting）、基因流、水平转移……这些词你以后会越来越熟，熟到有点麻木。&lt;/p&gt;
&lt;p&gt;我先给一个&amp;quot;写作上的诚实原则&amp;quot;（也算一种自我保护）：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;你用什么树都可以，但你必须写清楚你用的是什么树，以及你为什么这么做。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;PGLS 对&amp;quot;树代表相关结构&amp;quot;非常认真。你用错树，它不会骂你，它只会很安静地给你一个看起来很像真的 p 值。&lt;/p&gt;
&lt;p&gt;（这就是我最怕的那种错：它不痛，只是悄悄偏离。）&lt;/p&gt;
&lt;h2 id="走过同一条路而已"&gt;走过同一条路而已&lt;/h2&gt;
&lt;p&gt;在普通线性回归（OLS，Ordinary Least Squares，普通最小二乘法）里，你经常默认：每个样本的误差互不相关。&lt;br&gt;
翻译成人话：你这个物种的&amp;quot;偏差&amp;quot;，不应该能预测另一个物种的&amp;quot;偏差&amp;quot;。&lt;/p&gt;
&lt;p&gt;但如果两个物种共享很长一段进化历史，它们的性状（或者更准确地说：性状里那些你没解释掉的部分）就可能一起漂。&lt;/p&gt;
&lt;p&gt;你可以把它想成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;两个人从同一个起点出发走路&lt;/li&gt;
&lt;li&gt;走到某个路口才分开&lt;/li&gt;
&lt;li&gt;分开之前，他们走过的路完全一样&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你说他们最后的位置会不会更像？会的。&lt;br&gt;
不是因为他们商量过，是因为他们共同经历过。&lt;/p&gt;
&lt;p&gt;这就是系统发育相关性最朴素的来源：共享祖先的时间越长，性状越相关（在某些模型假设下，比如 Brownian motion，我们下一篇会讲）。&lt;/p&gt;
&lt;p&gt;所以&amp;quot;非独立&amp;quot;不是一句道德指控，它只是你对世界的一种承认：历史会留下惯性。&lt;/p&gt;
&lt;h2 id="先偷看一眼-pgls-在修什么"&gt;先偷看一眼 PGLS 在修什么&lt;/h2&gt;
&lt;p&gt;先不讲公式，只讲一句话：&lt;/p&gt;</description></item><item><title>为了追剧（Binge on My Own Terms）</title><link>https://touchingfish.top/2024/binge-on-my-own-terms/</link><pubDate>Thu, 29 Aug 2024 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2024/binge-on-my-own-terms/</guid><description>&lt;p&gt;答辩那天，同届学生其他人都是委员会全票通过，只有我拿到一张弃权票。老板跳槽后没有出席，倒也省了看他脸色的麻烦。&lt;/p&gt;
&lt;p&gt;没有什么仪式感。打包，退宿舍，回家。&lt;/p&gt;
&lt;p&gt;汕头六月的太阳毒得很，晒得人无处可逃。毕业前没找到工作，金三银四投出去的简历像石沉大海。&lt;/p&gt;
&lt;p&gt;总得做点什么。&lt;/p&gt;
&lt;p&gt;摆摊卖红豆冰，跟朋友一起买了辆&amp;quot;倒骑驴&amp;quot;，批发了一大袋红豆和一次性杯子。我妈听说我要去摆摊，沉默了几秒钟，说，也好，总比在家里躺着强。&lt;/p&gt;
&lt;p&gt;理想很丰满：烈日炎炎，路人挥汗如雨，来一杯冰镇红豆冰，透心凉。现实很骨感：我这个人太i了，有人走近摊位的时候，恨不得把头埋进冰桶里。眼神对上就开始紧张，话到嘴边变成含糊不清的几个音节。每天就是找个树荫坐下，手机打开，一边投简历一边乘凉。红豆冰自己喝掉了大半。&lt;/p&gt;
&lt;p&gt;朋友问摆摊怎么样，我说挺好，就是有点热。他没追问，我也没多说。&lt;/p&gt;
&lt;p&gt;可能难以融入社会是在逃避创伤。三年下来，老板是自由的，我们是自由的奴隶。导师的责任心差一点，但至少是个好人——这种评价本身就很荒谬。知识结构合理成为永远实现不了的目标。学院教授们一味施压，美其名曰为论文盲审着想，却没人愿意听我怎么答怎么辩。&lt;/p&gt;
&lt;p&gt;倒也不是一无所获。学会了伪装。&lt;/p&gt;
&lt;p&gt;我需要一个缓冲期。一个不用说话、不用见人、不用解释自己为什么还找不到工作的空间。&lt;/p&gt;
&lt;p&gt;追剧。&lt;/p&gt;
&lt;p&gt;最近为入手一年的电视盒子升级一个新系统，试了两三个固件，总算把安卓TV升级到满意的版本。可能是WiFi模块不太兼容，网速一直有点慢。微妙的是，每一次改动路由器的设置，机顶盒就自动关机重启。&lt;/p&gt;
&lt;p&gt;于是，还没怎么追剧，盒子就因为一次次“断开”和“连接”崩溃了。不会焊板，只能默默承受。&lt;/p&gt;
&lt;p&gt;昨晚，拿着手机开始逛京东和淘宝。没错，我准备干脆物色一台新的智能电视。一直对市面上的智能电视没信心——广电备案过的能有什么好产品。家里一直是一部日货外接机顶盒的组合，十年依旧扛打。如今才知道，40寸以上的品牌电视，已经找不到一台非智能的机器了。&lt;/p&gt;
&lt;p&gt;失业多年没有收入，实在是难下剁手决心。&lt;/p&gt;
&lt;p&gt;翻墙倒柜，掏出了去年刚刚换掉的前任机顶盒，却因为卡得无法忍受，而又将其收起。&lt;/p&gt;
&lt;p&gt;今日，学习事毕，对着平板上播放的综艺节目，索然无味。感慨畅享大屏之体验一去不返。又是拿起手机，浏览起了智能电视论坛，寻觅一部物美价廉的替补机顶盒。技术傍身（有一点点动手能力），只要是重新烧录后可以开机的，大抵会考虑低价购入，将就使用。&lt;/p&gt;
&lt;p&gt;意外之喜，看到号称系统老顽固的前任机顶盒，竟然也有可以使用的自制固件。&lt;/p&gt;
&lt;p&gt;工具齐全，开始实操。初次试验，莽莽撞撞。错选版本，中途重置。重振旗鼓，慎之又慎。&lt;/p&gt;
&lt;p&gt;终于，功夫不负有心人。&lt;/p&gt;
&lt;p&gt;在这个晚上，前任机顶盒的不离不弃，为我重新实现了在电视机上收看节目的小确幸。&lt;/p&gt;
&lt;p&gt;感恩美好生活。&lt;/p&gt;</description></item><item><title>一个点的代价 / 读 Owen(2020)</title><link>https://touchingfish.top/2024/dropping-first-sobol-point/</link><pubDate>Wed, 28 Aug 2024 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2024/dropping-first-sobol-point/</guid><description>&lt;p&gt;Sobol&amp;rsquo; 序列的第一个点永远是原点——$(0, 0, \dots, 0)$。&lt;/p&gt;
&lt;p&gt;很多人觉得这个点不对劲。它刚好落在单位超立方体的角落里。如果你要用 Sobol&amp;rsquo; 点做 Gaussian 分布的变换，逆正态 CDF 会把原点映射到 $-\infty$。这显然没法用。于是大家很自然地把第一个点丢掉，从第二个点开始取 $n$ 个。&lt;/p&gt;
&lt;p&gt;这个操作叫 burn-in，在 MCMC 里是标准动作。问题是——Sobol&amp;rsquo; 序列不是 Markov chain。&lt;/p&gt;
&lt;p&gt;Art B. Owen 在 2020 年写了一篇短文，标题干脆利落：&lt;em&gt;On dropping the first Sobol&amp;rsquo; point&lt;/em&gt;。结论也干脆利落：&lt;strong&gt;别丢。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;丢掉第一个点，你的 QMC 估计的均方根误差（RMSE）可能从 $O(n^{-3/2})$ 退化到 $O(n^{-1})$——在 $n$ 很大的时候，差别大约是 $\sqrt{n}$ 倍。&lt;/p&gt;
&lt;h2 id="qmc-为什么比-mc-好"&gt;QMC 为什么比 MC 好&lt;/h2&gt;
&lt;p&gt;先回顾一下基本设定。&lt;/p&gt;
&lt;p&gt;Monte Carlo（MC）的 RMSE 是 $O(n^{-1/2})$，对任何 $f \in L^2$ 都成立。这个收敛速度稳如老狗，但慢。&lt;/p&gt;
&lt;p&gt;Quasi-Monte Carlo（QMC）试图做得更好。它不随机抽样，而是用精心构造的&lt;strong&gt;低差异序列&lt;/strong&gt;（low-discrepancy sequence）来填满 $[0,1]^d$。Sobol&amp;rsquo; 序列是最常用的一种。&lt;/p&gt;
&lt;p&gt;Sobol&amp;rsquo; 序列在 base 2 下是一个 $(t,d)$-sequence。这意味着它的前 $2^m$ 个点构成一个 $(t,m,d)$-net——对于某些被称为 elementary interval 的特殊长方体，里面的点数恰好和体积成正比。&lt;/p&gt;</description></item><item><title>学术自由，但我们是自由的奴隶</title><link>https://touchingfish.top/2024/free-from-graduate-school/</link><pubDate>Wed, 28 Aug 2024 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2024/free-from-graduate-school/</guid><description>&lt;p&gt;终于有时间写一下这段悲伤的故事。&lt;/p&gt;
&lt;p&gt;时间回到2021年，研究生复试后的下午，就直接被拉进了课题组的群聊。&lt;/p&gt;
&lt;p&gt;天崩开局。线上开组会，发现组里出现了全学院第一例延毕。&lt;/p&gt;
&lt;p&gt;（万幸的是，不是重蹈覆辙，只是路稍微难走一点。导师虽然不是一个好导师——责任心稍差一点儿——但至少是个好人。）&lt;/p&gt;
&lt;p&gt;每个学生汇报的内容，都是一个独立的项目。课题组没有任何&amp;quot;垂直经验&amp;quot;的沉淀。研究方向的多样性暗示难以想象的&amp;quot;学术自由&amp;quot;。&lt;/p&gt;
&lt;p&gt;事实上，
导师才是自由的，我们只是自由的奴隶。&lt;/p&gt;
&lt;p&gt;于是，&amp;ldquo;知识结构合理&amp;quot;成为了很难实现的目标。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;知识结构合理，具有一定敏锐洞察力、创新能力和学术研究能力，善于将生物学、统计学理论与实践相结合，能独立提出、分析和解决问题，适应于社会需要的生物信息与生物统计学专门人才。（引自院系培养目标）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;又一届学生延毕半年答辩。大家也都看懂了老板的指导方式。只有做他懂的研究才能保证按时毕业。&lt;/p&gt;
&lt;p&gt;还是那句名言，&amp;ldquo;世界上除了导师和自己，没人会认真看你的论文&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;但有一种情况更糟糕，就是导师也不看你的论文。起初以为他只是不愿意花时间去读，并提出修改意见。后来觉得，他，可能不懂，所以不看。&lt;/p&gt;
&lt;p&gt;大疫三年，春暖花开。老板宣布了跳槽消息。&lt;/p&gt;
&lt;p&gt;回校旁听上一届师兄师姐的毕业答辩——&lt;/p&gt;
&lt;p&gt;答辩之前，他们的论文（导师）是绝对没看过。直到盲审成绩下来，一位师姐拿到了一份标记为不及格的报告，被老板提出延毕意见和冷暴力处理。费了一番周折，最终她为自己辩护成功，在第二次送审时拿到了及格成绩，才有机会站上答辩的讲台。&lt;/p&gt;
&lt;p&gt;她的另外两份盲审分数，是那一届最高的，帮助她获得我们专业那一届的论文评优资格。这样的事情，有些荒谬，但略显普通。&lt;/p&gt;
&lt;p&gt;我也在中期汇报的时候开始吃瘪。开题时三缄其口的教授们突然开始发难，并建议我跟导师商量换个课题。老板跳槽之后没有出席，场面真是难堪。&lt;/p&gt;
&lt;p&gt;重新开题意味着直接延毕半年。唯一的救命稻草，可能就是论文被SCI期刊接收吧。&lt;/p&gt;
&lt;p&gt;陆续投了2、3个月的论文，老板还是没看过一眼。&lt;/p&gt;
&lt;p&gt;他隐藏得再好，也无法避免我们在审稿意见上出现分歧时，所暴露出来对这个研究方向的无知，但他是自由的。&lt;/p&gt;
&lt;p&gt;已经习惯了直接发邮件向陌生教授讨教，虽然错过了实习的入职时机，至少拿到了最后一轮投稿返修意见。&lt;/p&gt;
&lt;p&gt;时间来到预答辩阶段，学院的教授们只是一味地施压，美其名曰为我的论文盲审着想。&lt;/p&gt;
&lt;p&gt;都说现在学生答辩是&amp;quot;只答不辩&amp;rdquo;，实际上教授也完全没打算理解你&amp;quot;如何答辩&amp;quot;。&lt;/p&gt;
&lt;p&gt;我只是一个被剥夺发言权的小丑，像前两年在网络上经历的一样。&lt;/p&gt;
&lt;p&gt;战战兢兢的半年，想对自己有信心，却没有任何参考系。写完真正的毕业论文，也只是跟那位一起参加竞赛的同学一起互相校对之后就提交盲审了。&lt;/p&gt;
&lt;p&gt;在答辩前两天才最终拿到了盲审成绩，平平无奇，听说也就第二。答辩还是没有好脸色，甚至在同届学生其他人都是委员会全票通过答辩的情况下，只有我拿到一张弃权票。BTW，老板在我们专业带的另一个同学早在半年前就确定延毕了。&lt;/p&gt;
&lt;p&gt;荒谬的研究生生活画上句号。&lt;/p&gt;
&lt;p&gt;两个月后，论文才正式接收之际，已经因为审稿方意见以及前导师的建议改得面目全非，让我不想承认是自己写的。&lt;/p&gt;
&lt;p&gt;Publish or perish，我理解但不接受。&lt;/p&gt;
&lt;p&gt;前导师作为通讯作者，在确认最后一版稿件时，连附录的图片错放了正文的图片都没有发现——我发誓责任绝不在我。（至少我的电脑上每个版本的稿件都不存在这类低级错误。）&lt;/p&gt;
&lt;p&gt;直到现在，期刊中收录的依然是这个出错的版本，我还在考虑要不要什么时候发邮件过去提出更正意见。&lt;/p&gt;
&lt;p&gt;这是我的自由。&lt;/p&gt;</description></item><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><item><title>抽卡与测序的秘诀 / 超几何分布</title><link>https://touchingfish.top/2024/hypergeometric-distribution-yugioh/</link><pubDate>Sun, 07 Jul 2024 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2024/hypergeometric-distribution-yugioh/</guid><description>&lt;h2 id="从一个游戏说起"&gt;从一个游戏说起&lt;/h2&gt;
&lt;p&gt;二十年前，我还是个小学生。每天放学都急着回家看上一集游戏王（Yu-Gi-Oh!）。&lt;/p&gt;
&lt;p&gt;这套卡牌游戏有一张传说中的卡——黑暗大法师（Exodia the Forbidden One）。这张卡必须同时集齐五个部件才能生效：右脚、左脚、右手、左手、头部。只要凑齐这五张，直接获胜。&lt;/p&gt;
&lt;p&gt;每副卡组四十张。由于规则限制，同一张卡最多只能放三张（某些特卡只能放一张），所以这五个部件在卡组里至多各有一张。&lt;/p&gt;
&lt;p&gt;问题来了：开局起手五张牌，恰好集齐全部五个部件的概率是多少？&lt;/p&gt;
&lt;p&gt;这是一个经典的&amp;quot;不放回抽样&amp;quot;问题。我们从一副有限的牌堆里抽出若干张，每抽一张，牌堆就少一张，不会重复抽到同一张。（&lt;strong&gt;暂时不考虑类似于特殊效果放回牌堆的骚操作&lt;/strong&gt;）&lt;/p&gt;
&lt;p&gt;超几何分布（Hypergeometric Distribution）正是为这类场景设计的。&lt;/p&gt;
&lt;h2 id="超几何分布的定义"&gt;超几何分布的定义&lt;/h2&gt;
&lt;p&gt;假设一个有限总体共有 $N$ 个单位，其中成功状态（我们感兴趣的类型）有 $K$ 个，失败状态有 $N-K$ 个。我们从这个总体中不放回地抽取 $n$ 个单位，令 $X$ 表示抽到的成功状态的数量，则 $X$ 服从超几何分布：&lt;/p&gt;
$$
X \sim \text{Hypergeometric}(N, K, n)
$$&lt;p&gt;其概率质量函数为：&lt;/p&gt;
$$
P(X = k) = \frac{\binom{K}{k} \binom{N-K}{n-k}}{\binom{N}{n}}, \quad k = \max(0, n - (N-K)), \ldots, \min(n, K)
$$&lt;p&gt;这个公式的逻辑很清晰：分子是&amp;quot;从 $K$ 个成功中抽到 $k$ 个&amp;quot;与&amp;quot;从 $N-K$ 个失败中抽到 $n-k$ 个&amp;quot;的组合数之积；分母是&amp;quot;从全部 $N$ 个中抽到 $n$ 个&amp;quot;的总组合数。&lt;/p&gt;
&lt;p&gt;三个核心参数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$N$：总体大小&lt;/li&gt;
&lt;li&gt;$K$：总体中的成功单位数&lt;/li&gt;
&lt;li&gt;$n$：抽样数量&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;没有放回，没有重复，每一张牌的抽取都改变了下一次抽取的概率。&lt;/p&gt;
&lt;h2 id="回到游戏王"&gt;回到游戏王&lt;/h2&gt;
&lt;p&gt;现在计算开局集齐黑暗大法师的概率。&lt;/p&gt;
&lt;p&gt;卡组 $N = 40$，五个部件 $K = 5$，起手抽牌 $n = 5$，我们想知道抽到全部五张部件的概率，即 $k = 5$。&lt;/p&gt;</description></item><item><title>从头解析 Sobol 全局敏感性分析</title><link>https://touchingfish.top/2024/sobol-global-sa-from-scratch/</link><pubDate>Mon, 15 Jan 2024 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2024/sobol-global-sa-from-scratch/</guid><description>&lt;p&gt;面对一个模型时，你在做什么？&lt;/p&gt;
&lt;p&gt;调参数。翻文献。看哪个数字不确定，然后想办法让它确定一点。道理上都懂——模型是对现实的压缩，参数是对这个压缩过程的描述。一个有十个参数的模型，意味着有十个地方可能出错、十种不确定性同时存在。&lt;/p&gt;
&lt;p&gt;问题在于：当模型跑出来的结果和你预期不符时，你该怀疑哪个参数？&lt;/p&gt;
&lt;p&gt;拍脑袋是一种方法。文献里查是另一种。但直觉会骗人，文献也不一定靠谱——有些参数是&amp;quot;纸老虎&amp;quot;，看起来重要其实无关紧要；有些参数是&amp;quot;幕后玩家&amp;quot;，自己不动声色地操纵整个系统。&lt;/p&gt;
&lt;p&gt;这就是 Sobol&amp;rsquo; 敏感性分析要回答的问题——不是&amp;quot;这个参数敏感吗&amp;quot;，而是&amp;quot;在参数的整个运动范围内，谁在决定输出的命运&amp;quot;。&lt;/p&gt;
&lt;h2 id="从局部到全局"&gt;从局部到全局&lt;/h2&gt;
&lt;p&gt;最直接的想法是这样的：找一个基准点，把每个参数稍微动一动，看看输出变多少。变幅大的就是&amp;quot;敏感&amp;quot;的参数，变幅小的就是&amp;quot;不敏感&amp;quot;的。实际操作中常见做法是固定所有参数在某个基准值上，然后逐个扰动——比如每个参数调高 1%，看输出变化多少。&lt;/p&gt;
&lt;p&gt;这就是局部敏感性分析（Local Sensitivity Analysis，Local SA）。对线性模型来说，这个方法够用——导数在哪里都一样，在一点上试过就知道全局。&lt;/p&gt;
&lt;p&gt;但现实中的模型大多是非线性的。参数 A 在基准点附近可能无关紧要，换一个区域就成了主导因素；参数 B 恰恰相反。局部 SA 给你的是一张从锁孔里拍的全景照片——理论上是全景，实际上你只看到了一条缝。&lt;/p&gt;
&lt;p&gt;全局敏感性分析（Global Sensitivity Analysis，Global SA）的思路完全不同。它不再执着于&amp;quot;在这个点谁敏感&amp;quot;这个局部问题，而是把目光投向参数的整个运动范围——&lt;strong&gt;谁的波动能掀起最大的风浪？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;具体来说，假设模型为&lt;/p&gt;
$$Y = \mathcal{M}(X_1, X_2, \ldots, X_m)$$&lt;p&gt;其中 $X_i \sim F_i$ 是相互独立的随机变量，分布 $F_i$ 反映了你对第 $i$ 个参数的不确定性认知。Sobol&amp;rsquo; 方法要做的，是把 $\text{Var}(Y)$ 这个数字拆成一堆加起来等于它的分量，每个分量对应一组参数的贡献。&lt;/p&gt;
&lt;p&gt;关键在于怎么拆。&lt;/p&gt;
&lt;h2 id="anova-分解方差的乐高"&gt;ANOVA 分解：方差的乐高&lt;/h2&gt;
&lt;p&gt;Sobol&amp;rsquo; 方法的数学基础是 ANOVA（Analysis of Variance）分解，也叫 Hoeffding–Sobol 分解。这个名字听起来吓人，直觉却很友好。&lt;/p&gt;
&lt;h3 id="一个类比"&gt;一个类比&lt;/h3&gt;
&lt;p&gt;想象你在做一道菜。最终的味道（输出 $Y$）取决于盐、糖、醋、酱油……每种调料（输入 $X_i$）。你每次做菜时各调料的用量都有一点随机波动，所以每次做出来的味道也略有不同。&lt;/p&gt;
&lt;p&gt;现在你想知道：味道的变化，多大程度上是因为盐用量的波动？多大程度上是糖和醋的配合出了问题？&lt;/p&gt;
&lt;p&gt;ANOVA 分解做的事情就是：把&amp;quot;味道的总波动&amp;quot;拆成&amp;quot;盐独自贡献的部分&amp;quot;、&amp;ldquo;糖独自贡献的部分&amp;rdquo;、&amp;ldquo;盐和糖交互贡献的部分&amp;rdquo;……一直拆到所有可能的组合。&lt;/p&gt;
&lt;h3 id="数学形式"&gt;数学形式&lt;/h3&gt;
&lt;p&gt;严格来说，Hoeffding–Sobol 分解说的是：任何一个平方可积函数 $f(X_1, \ldots, X_m)$ 都可以唯一地分解为&lt;/p&gt;
$$f(X) = f_0 + \sum_{i} f_i(X_i) + \sum_{i\lt j} f_{ij}(X_i, X_j) + \cdots + f_{1\ldots m}(X_1, \ldots, X_m)$$&lt;p&gt;其中每一项满足两个条件：&lt;/p&gt;</description></item><item><title>撒豆子的人和砌砖的工匠</title><link>https://touchingfish.top/2024/mcmc-vs-qmc-basics/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2024/mcmc-vs-qmc-basics/</guid><description>&lt;p&gt;积分是数值方法里的老问题了。&lt;/p&gt;
$$\int_{[0,1]^d} f(\boldsymbol{x}) d\boldsymbol{x} \approx \frac{1}{n}\sum_{i=1}^n f(\boldsymbol{x}_i)$$&lt;p&gt;找 $n$ 个点，算函数值，取平均——听起来简单到无聊。但稍微想一步就会碰到一个根本问题：&lt;strong&gt;点从哪里来？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个问题把世界分成两半。&lt;/p&gt;
&lt;p&gt;一个撒豆子的人，闭着眼睛往方格里扔，相信大数定律会替他摆平一切。
一个砌砖的工匠，拿着图纸往方格里填，相信结构本身就是均匀。&lt;/p&gt;
&lt;p&gt;前者叫 Monte Carlo，后者叫 Quasi-Monte Carlo。&lt;/p&gt;
&lt;h2 id="monte-carlo随机的智慧"&gt;Monte Carlo：随机的智慧&lt;/h2&gt;
&lt;p&gt;Monte Carlo 的哲学就一句话：我不知道怎么均匀地填满空间，但我知道随机撒点&amp;quot;大概率&amp;quot;会均匀。&lt;/p&gt;
&lt;p&gt;大数定律担保了这件事。弱大数定律、强大数定律、中心极限定理——这些定理说，只要你样本量够大，样本均值会收拢到期望值附近。管它怎么撒的，反正够多就行。&lt;/p&gt;
&lt;p&gt;所以 MC 的 RMSE 是 $O(n^{-1/2})$。这个收敛速度稳如老狗——不管你的函数多复杂、维度多高，永远是这个速度。&lt;/p&gt;
&lt;p&gt;但&amp;quot;稳&amp;quot;有时候是夸奖，有时候是批评。$O(n^{-1/2})$ 意味着什么？意味着你想把误差压一半，样本量要翻四倍。$n=1000$ 不够，换 $n=4000$。还不够？$n=16000$。这是一条没有尽头的高速公路，每往前开一倍，只能缩短一半的距离。&lt;/p&gt;
&lt;p&gt;说到底，MC 的均匀是逼出来的——你不知道怎么设计均匀，就只好赌概率够大时运气会好。&lt;/p&gt;
&lt;h3 id="当独立采样太贵"&gt;当独立采样太贵&lt;/h3&gt;
&lt;p&gt;标准 MC 假设样本是独立的。这有时候太奢侈了。&lt;/p&gt;
&lt;p&gt;比如你要做 Bayesian inference。后验分布 $\pi(\theta \mid x) \propto L(x \mid \theta)\pi(\theta)$ 里那个配分函数 $Z = \int L(x \mid \theta)\pi(\theta) d\theta$，在高维空间里根本算不出来。拒绝采样更是灾难——高维空间里大部分随机点都会被拒绝，效率低到让人想转行。&lt;/p&gt;
&lt;p&gt;MCMC（Markov Chain Monte Carlo）就是来解决这个问题的。&lt;/p&gt;
&lt;p&gt;思路是：不追求独立，追求&lt;strong&gt;平稳&lt;/strong&gt;。构造一个 Markov chain，让它的平稳分布刚好是你想要的分布。然后让 chain 跑起来，跑久了，样本就&amp;quot;像是&amp;quot;从目标分布来的。&lt;/p&gt;
&lt;p&gt;Metropolis-Hastings、Gibbs sampling、Hamiltonian Monte Carlo——这些名字在统计圈里如雷贯耳。它们不是去挑战大数定律，而是去利用 Markov chain 的遍历定理。&lt;/p&gt;</description></item><item><title>没营养的研究生周报（2021-2023）</title><link>https://touchingfish.top/2023/weekly-summary/</link><pubDate>Sat, 30 Dec 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/weekly-summary/</guid><description>&lt;h2 id="2023-2024-学年第一学期-第-18-周"&gt;2023-2024 学年第一学期 第 18 周&lt;/h2&gt;
&lt;p&gt;总 060 期
提交时间：2023年12月30日&lt;/p&gt;
&lt;p&gt;1.本周目标&lt;/p&gt;
&lt;p&gt;(1) 留意投稿反馈信息，并进行相应的调整
(2) 继续准备硕士毕业论文，以及自身发展的相关事务&lt;/p&gt;
&lt;p&gt;2.本周实际做的工作&lt;/p&gt;
&lt;p&gt;(1) 参考相关研究的硕士论文，确定了绪论和背景章节中需要涉及的基本内容
(2) 将先前准备课程作业（论文）的内容进行调整修改，作为一部分背景内容
(3) 每日关注期刊的投稿反馈信息（暂未提示受理，经上网搜索确认流程和状态并无异常，可能受欧美圣诞假期影响）&lt;/p&gt;
&lt;p&gt;3.目标是否完成。如未完成需说明未完成原因&lt;/p&gt;
&lt;p&gt;完成&lt;/p&gt;
&lt;p&gt;4.如何改进&lt;/p&gt;
&lt;p&gt;5.下周目标&lt;/p&gt;
&lt;p&gt;继续准备硕士毕业论文，以及自身发展的相关事务&lt;/p&gt;
&lt;p&gt;6.本周收获&lt;/p&gt;
&lt;p&gt;对相关研究硕士论文的框架，及绪论和背景部分的细节有了进一步的了解&lt;/p&gt;
&lt;h2 id="2023-2024-学年第一学期-第-17-周"&gt;2023-2024 学年第一学期 第 17 周&lt;/h2&gt;
&lt;p&gt;总 059 期
提交时间：2023年12月23日&lt;/p&gt;
&lt;p&gt;1.本周目标&lt;/p&gt;
&lt;p&gt;(1) 完成新期刊的投稿及材料提交等工作
(2) 规划硕士论文初稿写作及完成时间&lt;/p&gt;
&lt;p&gt;2.本周实际做的工作&lt;/p&gt;
&lt;p&gt;(1) 了解期刊 Proceeding B 的投稿要求，修改参考文献格式，重新准备稿件
(2) 整理期刊要求的论文数据信息（用于绘图的数据及README文件等），上传和提交投稿材料&lt;/p&gt;
&lt;p&gt;3.目标是否完成。如未完成需说明未完成原因&lt;/p&gt;
&lt;p&gt;完成&lt;/p&gt;
&lt;p&gt;4.如何改进&lt;/p&gt;
&lt;p&gt;5.下周目标&lt;/p&gt;
&lt;p&gt;(1) 留意投稿反馈信息，并进行相应的调整
(2) 继续准备硕士毕业论文，以及自身发展的相关事务&lt;/p&gt;
&lt;p&gt;6.本周收获&lt;/p&gt;
&lt;h2 id="2023-2024-学年第一学期-第-16-周"&gt;2023-2024 学年第一学期 第 16 周&lt;/h2&gt;
&lt;p&gt;总 058 期
提交时间：2023年12月16日&lt;/p&gt;
&lt;p&gt;1.本周目标&lt;/p&gt;
&lt;p&gt;(1) 完成稿件格式调整、逻辑和语义表达等的修改完善等工作
(2) 了解期刊投稿流程，上传稿件与材料&lt;/p&gt;</description></item><item><title>回归能做的事 / Simple Linear Regression Universe</title><link>https://touchingfish.top/2023/regression-universal-advantage/</link><pubDate>Wed, 20 Dec 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/regression-universal-advantage/</guid><description>&lt;p&gt;这个系列走到了最后一篇。&lt;/p&gt;
&lt;p&gt;前面七篇文章论证了一件事：t检验、ANOVA、相关分析——你在基础统计课上学到的几乎所有参数检验，都是线性回归的特例。有些等价于简单回归，有些等价于加了固定效应的回归，有些等价于标准化后的回归。但归根结底，它们都住在 $Y = X\beta + \varepsilon$ 这栋楼里。&lt;/p&gt;
&lt;p&gt;这栋楼本身还远不止如此。今天聊聊：回归的框架为什么比传统检验&amp;quot;能打&amp;quot;那么多。&lt;/p&gt;
&lt;h2 id="t检验只能问一个是或否"&gt;t检验只能问一个&amp;quot;是或否&amp;quot;&lt;/h2&gt;
&lt;p&gt;t检验能回答的问题是：两组均值是否不同？&lt;/p&gt;
&lt;p&gt;能给你的输出是：t值、p值、&amp;ldquo;显著还是不显著&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;就这样。&lt;/p&gt;
&lt;p&gt;如果你想问&amp;quot;控制年龄之后，两组均值是否仍然不同？&amp;quot;——t检验答不了。如果你想问&amp;quot;剂量每增加一个单位，血压下降多少？&amp;quot;——t检验答不了。如果你想问&amp;quot;男性和女性对治疗的反应是否有差异？&amp;quot;——t检验可以分组做，但不能在一个模型里同时估计主效应和交互效应。&lt;/p&gt;
&lt;p&gt;回归框架下，这些问题全都是在一个模型里多加一行 $X$ 的事。&lt;/p&gt;
&lt;h2 id="加协变量从有没有差异到为什么有差异"&gt;加协变量：从&amp;quot;有没有差异&amp;quot;到&amp;quot;为什么有差异&amp;quot;&lt;/h2&gt;
&lt;p&gt;成组t检验告诉你：治疗组和对照组的血压有显著差异。&lt;/p&gt;
&lt;p&gt;回归可以告诉你：&lt;strong&gt;在控制了年龄、性别和基线血压之后&lt;/strong&gt;，治疗组和对照组的血压仍然有显著差异。&lt;/p&gt;
&lt;p&gt;只需要把模型从&lt;/p&gt;
$$
Y = \beta_0 + \beta_1 \cdot \rm{treatment} + \varepsilon
$$&lt;p&gt;扩展为&lt;/p&gt;
$$
Y = \beta_0 + \beta_1 \cdot \rm{treatment} + \beta_2 \cdot \rm{age} + \beta_3 \cdot \rm{sex} + \beta_4 \cdot \rm{baseline} + \varepsilon
$$&lt;p&gt;$\beta_1$ 的含义从&amp;quot;两组均值之差&amp;quot;变成了&amp;quot;&lt;strong&gt;其他条件不变时&lt;/strong&gt;，治疗组与对照组的血压差异&amp;quot;。从 association 到 conditional association，这是一大步。&lt;/p&gt;
&lt;p&gt;在医学研究中，不加协变量的分析几乎是不可发表的。因为随机对照试验（RCT）虽然理论上保证了组间可比性，但实际中总有运气不好的时候——万一治疗组平均年龄偏高呢？加协变量就是在统计上抹平这些偶然的不均衡。&lt;/p&gt;
&lt;p&gt;而t检验没有&amp;quot;加协变量&amp;quot;这个选项。你得另找方法——通常是回归。&lt;/p&gt;
&lt;h2 id="交互项效应不是一成不变的"&gt;交互项：效应不是一成不变的&lt;/h2&gt;
&lt;p&gt;t检验默认治疗效应在所有子群体中相同。回归可以加交互项：&lt;/p&gt;
$$
Y = \beta_0 + \beta_1 \cdot \rm{treatment} + \beta_2 \cdot \rm{sex} + \beta_3 \cdot (\rm{treatment} \times \rm{sex}) + \varepsilon
$$&lt;p&gt;$\beta_3$ 告诉你：男性和女性的治疗效应是否有显著差异？&lt;/p&gt;</description></item><item><title>r = β*</title><link>https://touchingfish.top/2023/pearson-correlation-regression/</link><pubDate>Fri, 08 Dec 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/pearson-correlation-regression/</guid><description>&lt;p&gt;Pearson相关系数 $r$ 是统计101的必修内容。定义是：&lt;/p&gt;
$$
r = \frac{\sum (X_i - \bar{X})(Y_i - \bar{Y})}{\sqrt{\sum (X_i - \bar{X})^2 \sum (Y_i - \bar{Y})^2}}
$$&lt;p&gt;就是&amp;quot;协方差除以两个标准差的乘积&amp;quot;。取值范围 $[-1, 1]$，绝对值越大说明线性相关越强。&lt;/p&gt;
&lt;p&gt;而回归系数 $\beta_1$ 是：&lt;/p&gt;
$$
\beta_1 = \frac{\sum (X_i - \bar{X})(Y_i - \bar{Y})}{\sum (X_i - \bar{X})^2}
$$&lt;p&gt;长得有点像，但不是同一个东西。$\beta_1$ 可以大于 $1$，单位取决于 $Y$ 和 $X$ 的单位。&lt;/p&gt;
&lt;p&gt;这两个公式之间有什么精确的关系？如果你把 $X$ 和 $Y$ 都标准化（减去均值再除以标准差），回归系数就变成了 $r$。&lt;/p&gt;
&lt;h2 id="标准化回归"&gt;标准化回归&lt;/h2&gt;
&lt;p&gt;定义标准化变量：&lt;/p&gt;
$$
X_i^* = \frac{X_i - \bar{X}}{s_X}, \quad Y_i^* = \frac{Y_i - \bar{Y}}{s_Y}
$$&lt;p&gt;其中 $s_X$ 和 $s_Y$ 分别是 $X$ 和 $Y$ 的样本标准差。标准化后，两个变量的均值都是 $0$，标准差都是 $1$。&lt;/p&gt;</description></item><item><title>固定效应回归的视角 / Paired T-test</title><link>https://touchingfish.top/2023/paired-t-test-fixed-effects/</link><pubDate>Mon, 20 Nov 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/paired-t-test-fixed-effects/</guid><description>&lt;p&gt;前面的文章一直在讲&amp;quot;某某检验等价于回归&amp;quot;。这一篇要讲一个&lt;strong&gt;不完全等价&lt;/strong&gt;的情况。&lt;/p&gt;
&lt;p&gt;配对t检验（paired t-test）不等价于普通的简单线性回归。但它等价于另一种回归——带个体固定效应的回归（fixed effects regression）。这种&amp;quot;不完全等价&amp;quot;反而能帮你理解回归框架的灵活性。&lt;/p&gt;
&lt;h2 id="配对t检验在做什么"&gt;配对t检验在做什么？&lt;/h2&gt;
&lt;p&gt;配对设计：每个受试者接受两种处理（或前后测量两次），你关心的是两种处理下结果是否有差异。比如：10个人吃药前和吃药后的血压变化。&lt;/p&gt;
&lt;p&gt;配对t检验的做法是：对每个人算差值 $D_i = Y_{i,\rm after} - Y_{i,\rm before}$，然后对差值做单样本t检验，$H_0: \mu_D = 0$。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;before&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;130&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;142&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;128&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;135&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;140&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;132&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;138&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;129&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;136&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;133&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;after&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;125&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;138&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;126&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;130&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;135&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;128&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;134&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;125&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;131&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;130&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;t.test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;after&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;before&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;paired&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Paired&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;after&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="n"&gt;before&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;-13.038&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;3.787e-07&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;alternative&lt;/span&gt; &lt;span class="n"&gt;hypothesis&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;true&lt;/span&gt; &lt;span class="n"&gt;mean&lt;/span&gt; &lt;span class="n"&gt;difference&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;equal&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;95&lt;/span&gt; &lt;span class="n"&gt;percent&lt;/span&gt; &lt;span class="n"&gt;confidence&lt;/span&gt; &lt;span class="n"&gt;interval&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;-4.811372&lt;/span&gt; &lt;span class="m"&gt;-3.388628&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;sample&lt;/span&gt; &lt;span class="n"&gt;estimates&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;mean&lt;/span&gt; &lt;span class="n"&gt;difference&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;-4.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="为什么普通回归不行"&gt;为什么普通回归不行？&lt;/h2&gt;
&lt;p&gt;如果你不管配对结构，直接把前后数据当独立样本做成组t检验：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;t.test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;after&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;before&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;var.equal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Two&lt;/span&gt; &lt;span class="n"&gt;Sample&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;after&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="n"&gt;before&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;-2.0014&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0.06066&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;alternative&lt;/span&gt; &lt;span class="n"&gt;hypothesis&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;true&lt;/span&gt; &lt;span class="n"&gt;difference&lt;/span&gt; &lt;span class="kr"&gt;in&lt;/span&gt; &lt;span class="n"&gt;means&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;equal&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;95&lt;/span&gt; &lt;span class="n"&gt;percent&lt;/span&gt; &lt;span class="n"&gt;confidence&lt;/span&gt; &lt;span class="n"&gt;interval&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;-8.4039&lt;/span&gt; &lt;span class="m"&gt;0.2039&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;sample&lt;/span&gt; &lt;span class="n"&gt;estimates&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;mean&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="n"&gt;mean&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;130.2&lt;/span&gt; &lt;span class="m"&gt;134.3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;你会发现t值和p值都跟配对检验不一样——通常配对检验的p值更小（因为它消除了个体间差异的干扰）。&lt;/p&gt;
&lt;p&gt;同样的，如果你跑一个&amp;quot;处理前后&amp;quot;的虚拟变量回归：&lt;/p&gt;
$$
Y = \beta_0 + \beta_1 \cdot \rm{after} + \varepsilon
$$&lt;p&gt;$\beta_1$ 的t检验等价于上面的独立样本t检验，不是配对t检验。因为这个回归把同一个人的前后两次测量当成两个独立的观测，忽略了个体间的相关性。&lt;/p&gt;
&lt;p&gt;配对设计的核心是：&lt;strong&gt;同一个人的两次测量不是独立的&lt;/strong&gt;。张三的血压无论吃药前后都可能比李四高——如果不控制这个&amp;quot;张三效应&amp;quot;，个体差异就会淹没处理效应。&lt;/p&gt;
&lt;h2 id="个体固定效应回归"&gt;个体固定效应回归&lt;/h2&gt;
&lt;p&gt;解决方案：给每个人加一个单独的截距。这就是个体固定效应模型（individual fixed effects model）：&lt;/p&gt;
$$
Y_{it} = \alpha_i + \beta \cdot \rm{after}_{it} + \varepsilon_{it}
$$&lt;p&gt;其中 $\alpha_i$ 是第 $i$ 个人的固定效应（一个只属于他/她的截距项），$\rm{after}_{it}$ 是&amp;quot;是否为处理后测量&amp;quot;的虚拟变量，$\beta$ 是我们关心的处理效应。&lt;/p&gt;</description></item><item><title>多个虚拟变量的回归 / One-way ANOVA</title><link>https://touchingfish.top/2023/one-way-anova-regression/</link><pubDate>Wed, 08 Nov 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/one-way-anova-regression/</guid><description>&lt;p&gt;前一篇文章证明了在两组比较中 $t^2 = F$，t检验、ANOVA、回归三者等价。&lt;/p&gt;
&lt;p&gt;现在从两组推广到多组。单因素ANOVA有 $k$ 个处理组（$k \ge 2$），想知道各组均值是否有差异。传统做法：算组间平方和、组内平方和、F统计量，查表做结论。&lt;/p&gt;
&lt;p&gt;回归视角：把 $k$ 个组编码为 $k-1$ 个虚拟变量，做多元线性回归，然后做整体F检验。&lt;/p&gt;
&lt;h2 id="从两组到多组问题在哪"&gt;从两组到多组：问题在哪？&lt;/h2&gt;
&lt;p&gt;两组时，一个虚拟变量就够了——$X=0$ 表示A组，$X=1$ 表示B组。多组时，你不能用一个变量编码&amp;quot;A、B、C&amp;quot;三种取值（因为 C 和 A 的差距不一定刚好是 B 和 A 的两倍，假设线性的数值关系毫无道理）。&lt;/p&gt;
&lt;p&gt;解决方案：用 $k-1$ 个虚拟变量。&lt;/p&gt;
&lt;p&gt;以三组为例。设对照组为A组，构造两个虚拟变量：&lt;/p&gt;
$$
X_{B} =
\begin{cases}
1, &amp; \rm{B组} \\
0, &amp; \rm{其他}
\end{cases}
\quad
X_{C} =
\begin{cases}
1, &amp; \rm{C组} \\
0, &amp; \rm{其他}
\end{cases}
$$&lt;p&gt;A组对应 $(X_B, X_C) = (0, 0)$，作为参照组（reference group）。回归模型：&lt;/p&gt;
$$
Y = \beta_0 + \beta_B X_B + \beta_C X_C + \varepsilon
$$&lt;p&gt;OLS估计结果：&lt;/p&gt;</description></item><item><title>从《众病之王》谈药物滥用的警示</title><link>https://touchingfish.top/2023/pharmacovigilance/</link><pubDate>Sat, 04 Nov 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/pharmacovigilance/</guid><description>&lt;p&gt;再读《众病之王》。&lt;/p&gt;
&lt;p&gt;书里写的是癌症治疗的历史——那些悲壮的科学突破，那些在未知领域探险时付出的代价。其中关于VAMP联合用药（长春花生物碱、甲氨蝶呤、巯基嘌呤等）滥用所致毒性反应的描述，尤其让人心里一紧。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;药物是进步的象征，但它的滥用却暴露了我们对疾病与治疗的复杂性认识不足。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这话放在今天看，依然扎心。&lt;/p&gt;
&lt;p&gt;20世纪50年代，化疗药物被寄予厚望。VAMP在某些白血病患者身上展现出显著疗效，科学家们大概也觉得自己手里握着一把利剑，可以劈开死神的大门。可这把剑没有剑鞘——它靶向细胞增殖，癌细胞杀得掉，正常快速分裂的细胞也逃不掉。骨髓、肠上皮、毛囊细胞，无一幸免。&lt;/p&gt;
&lt;p&gt;剂量稍有不慎，重度免疫抑制、出血性肠炎，甚至患者因治疗本身而亡。&lt;/p&gt;
&lt;p&gt;当时的医生和科学家，意图是善的。只是医学技术与知识还没跟上那股热情，对药物剂量、代谢路径及长期毒性缺乏系统了解。&lt;/p&gt;
&lt;p&gt;救人还是伤人，有时候只差一个数字。&lt;/p&gt;
&lt;h2 id="药物警戒与现代医疗"&gt;药物警戒与现代医疗&lt;/h2&gt;
&lt;p&gt;正有此历史教训在前，药物使用安全问题才越来越被人重视。&lt;/p&gt;
&lt;p&gt;药物警戒（pharmacovigilance）这个词，起源于1961年的&amp;quot;反应停&amp;quot;事件。那场灾难之后，它作为一门学科逐渐兴起，专门做一件事：对药物使用过程中的风险进行监测、评价与控制。&lt;/p&gt;
&lt;p&gt;核心任务大致四点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;监测不良反应&lt;/strong&gt;——收集患者用药后的不良反应报告，分析规律与风险因素，找出潜在问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;评估风险与收益&lt;/strong&gt;——每种药都有副作用，关键看这些风险能不能被临床益处抵消。（说白了就是值不值。）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;完善用药指导&lt;/strong&gt;——根据发现修订剂量建议、禁忌症、相互作用提示，给医患提供更安全的方案。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;预防滥用与依赖&lt;/strong&gt;——抗生素耐药性就是个活生生的例子，过度用药害的不止一个人。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在现代医疗体系中，药物警戒已非可有可无的附属功能，而是贯穿新药研发、审批及上市后全程的必要环节。精准医疗发展起来后，个体化用药逐渐成为现实，药物警戒也从&amp;quot;平均风险&amp;quot;评估转向&amp;quot;个体风险&amp;quot;分析——遗传差异、共病情况、环境因素，全算进去了。&lt;/p&gt;
&lt;h3 id="国际药物监测合作计划"&gt;国际药物监测合作计划&lt;/h3&gt;
&lt;p&gt;1963年世界卫生大会通过决议，要加速药品不良反应信息的传播。WHO于1968年推出国际药物监测合作计划，逐步在全球铺开。如今已有超过140个国家参与。&lt;/p&gt;
&lt;p&gt;乌普萨拉监测中心是这个计划的核心机构，负责收集、分析和评估各国提交的不良反应报告，再把结果反馈回去。这个网络的形成，让药品安全领域的国际合作真正运转了起来。当然，各国在药物警戒的实施和成熟度上差异不小，有的已经相当完善，有的还在摸索。&lt;/p&gt;
&lt;p&gt;美国的模式是中央集权式的——FDA的药品审评与研究中心统一管理。好处是数据集中，处理效率高。组织体系、法律法规、信息公开和反馈机制都比较健全。FDA内部负责药物警戒工作的机构包括监测与流行病学办公室、新药办公室、协调办公室和药品安全监督委员会，各司其职又互相配合。作为全球药品监管的领头羊，这套模式被不少国家效仿。&lt;/p&gt;
&lt;p&gt;欧盟走的是法规路线。通过药物警戒法规（EC No. 726/2004）实施，要求所有新药必须附有详细的药物警戒说明和风险管理系统。EMA有权在药品批准后追加要求，申办者也得定期提交可疑不良反应报告，评估药品的风险-效益平衡。某些产品还得交EU-RMP（欧盟风险管理计划），上市后应用发生变化时还要重新评估。&lt;/p&gt;
&lt;p&gt;各国的路子不一样，目标倒是同一个：维护公众用药安全。&lt;/p&gt;
&lt;h2 id="写在最后"&gt;写在最后&lt;/h2&gt;
&lt;p&gt;回顾历史，药物滥用的悲剧常因对科学与技术的过分乐观而起。药物警戒，说到底是对人类认知局限性的一种谦卑回应。&lt;/p&gt;
&lt;p&gt;面对药物时，既需怀抱希望，也需保持警惕。&lt;/p&gt;
&lt;p&gt;善用其益，防其害。这话谁都懂，做起来又是另一回事了。&lt;/p&gt;</description></item><item><title>医疗器械与特殊食品的监管</title><link>https://touchingfish.top/2023/health-industry-regulatory/</link><pubDate>Wed, 13 Sep 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/health-industry-regulatory/</guid><description>&lt;p&gt;我盯着桌上那瓶复合维生素。&lt;/p&gt;
&lt;p&gt;名字起得很有力量感，瓶身上印着一串我看不懂的化学式，还有一行小字——&amp;ldquo;膳食补充剂&amp;rdquo;。不是保健食品，不是药品。就只是&amp;quot;膳食补充剂&amp;quot;。四个字，轻飘飘的，但你知道它能出现在这里，背后是一整套庞大而复杂的监管机器在运转。&lt;/p&gt;
&lt;p&gt;这让我好奇了起来。&lt;/p&gt;
&lt;h2 id="一"&gt;一&lt;/h2&gt;
&lt;p&gt;监管离我们并不远。每次验血、照X光、戴隐形眼镜，我们都在和医疗器械打交道。问题只是，我们从不去想这些东西是怎么被认定&amp;quot;安全&amp;quot;的。&lt;/p&gt;
&lt;p&gt;美国食品药品监督管理局（FDA）在这件事上，说得上是最早吃螃蟹的人。&lt;/p&gt;
&lt;p&gt;医疗器械和放射健康中心（CDRH）与监管事务办公室（ORA），是FDA旗下两个最核心的部门。前者制定标准，后者负责现场检査——一个在华盛顿的办公室里写规则，一个跑到工厂里去查规矩。《联邦食品、药品与化妆品法》及其修正案，则给了这一切一个法律上的名分。&lt;/p&gt;
&lt;p&gt;CDRH。&lt;/p&gt;
&lt;p&gt;ORA。&lt;/p&gt;
&lt;p&gt;我承认，每次看到这些缩写，都有一种微微的眩晕感。像是在读一份加密文件。但只要稍微拆开来看，其实逻辑很简单：有人制规则，有人去验证，规则写在法律里。&lt;/p&gt;
&lt;p&gt;这就构成了一个最基本的监管框架。&lt;/p&gt;
&lt;h2 id="二"&gt;二&lt;/h2&gt;
&lt;p&gt;美国的医疗器械监管最有意思的地方，在于它的分类哲学。&lt;/p&gt;
&lt;p&gt;根据产品的潜在风险，医疗器械被分为三个类别（Class I、II、III），风险越高，监管越严。Class I是手套、绷带这类低风险的东西，几乎不受约束；Class II是轮椅、呼吸机这类中等风险的，需要通过510(k)证明&amp;quot;和已上市产品实质等同&amp;quot;才能上市；Class III是心脏瓣膜、植入式除颤器这类高风险产品，必须走上市前许可（Premarket Approval，PMA）通道，PMA的审批流程据说可以让一家小公司花上数年时间、几百万美元。&lt;/p&gt;
&lt;p&gt;三个层次，层层递进。听起来很符合直觉，但这个分类体系不是一天建成的。是无数起医疗事故、无数次国会听证、一代代监管者和工程师磨合出来的。&lt;/p&gt;
&lt;p&gt;想到这里的时候，突然对&amp;quot;监管&amp;quot;这个词有了一点新的感受。它不是墙上贴的一张告示，它是活的——不断被打磨、被修正、被具体事件推动着往前走。&lt;/p&gt;
&lt;h2 id="三"&gt;三&lt;/h2&gt;
&lt;p&gt;临床试验的医疗器械豁免（Investigational Device Exemption，IDE）制度，是另一个让我觉得很有意思的设置。&lt;/p&gt;
&lt;p&gt;它说的是：一个新的医疗器械，想做临床试验证明它有效？没问题，但得先向FDA申请，获得批准才能开始。而且临床试验本身也分三个层次，风险最低的甚至可以免去很多手续，风险最高的则要接受和正式上市产品几乎一样严格的监控。&lt;/p&gt;
&lt;p&gt;说白了，这就是在&amp;quot;鼓励创新&amp;quot;和&amp;quot;保护受试者&amp;quot;之间找一个平衡点。&lt;/p&gt;
&lt;p&gt;平衡点。这个词听起来很理性，但背后其实充满了妥协和争论。一个医疗器械的发明者，当然希望尽快进入临床；FDA当然要确保不能让人成为小白鼠。两边的张力，塑造了IDE这套制度的具体样子。&lt;/p&gt;
&lt;p&gt;我喜欢这种制度背后的人文底色——它承认创新需要空间，但它也不轻信。&lt;/p&gt;
&lt;h2 id="四"&gt;四&lt;/h2&gt;
&lt;p&gt;故事讲到这里，本来可以继续往下说质量体系规范（QSR）和上市后管理。但我忽然想把话题转开。&lt;/p&gt;
&lt;p&gt;因为我发现，真正让我着迷的，不是医疗器械，是那瓶维生素。&lt;/p&gt;
&lt;p&gt;准确地说，是那瓶维生素背后的法律——1994年的《膳食补充剂健康与教育法案》（Dietary Supplement Health and Education Act，DSHEA）。&lt;/p&gt;
&lt;p&gt;这个法案的诞生，本身就是一个政治博弈的经典案例。&lt;/p&gt;
&lt;p&gt;上世纪九十年代初，美国膳食补充剂市场已经初具规模，但监管处于灰色地带。FDA想把膳食补充剂当作&amp;quot;药品&amp;quot;来管，要求上市前必须证明安全有效； supplement industry不干了，游说国会，动员消费者，给议员们寄了几十万封信。&lt;/p&gt;
&lt;p&gt;最后，1994年，DSHEA通过。&lt;/p&gt;
&lt;p&gt;它的核心内容是：膳食补充剂被定义为&amp;quot;旨在补充饮食中营养素的产品&amp;quot;，包括维生素、矿物质、草药等，以丸剂、胶囊等形式销售；它不是药品，不需要上市前审批；但它也不是普通食品——如果含有新成分，生产商必须在上市前75天通知FDA。&lt;/p&gt;
&lt;p&gt;这就是DSHEA的精妙之处。它没有把膳食补充剂简单归类，而是创造了一个&amp;quot;介于食品和药品之间&amp;quot;的特殊类别。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我读到这一段的时候，脑子里冒出一个词：法律智慧。不是技术上的聪明，是知道在各方利益的张力之间，找到一个各方都能接受的落点。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="五"&gt;五&lt;/h2&gt;
&lt;p&gt;但DSHEA的妥协也带来了问题。&lt;/p&gt;
&lt;p&gt;FDA对膳食补充剂没有上市前审查权。生产商认为自己产品的成分安全？那就自己确保。FDA只在&amp;quot;有证据表明产品不安全&amp;quot;的时候才能出手干预。&lt;/p&gt;
&lt;p&gt;这是一个&amp;quot;事后监管&amp;quot;的逻辑——和医疗器械的&amp;quot;事前审批&amp;quot;形成了鲜明对比。&lt;/p&gt;
&lt;p&gt;这两种逻辑哪种更好？我不知道。我只是觉得，这种对比很有意思。同一个FDA，对医疗器械和膳食补充剂的态度截然不同。医疗器械风险高，所以先审后放；膳食补充剂风险相对低，所以先放后查。&lt;/p&gt;
&lt;p&gt;背后的哲学其实是风险管理（risk management）——根据风险等级决定监管力度。这套逻辑在公共卫生领域广泛应用，但在具体执行层面，它意味着你吃下去的每一粒维生素，理论上都要靠生产商的自觉来保证安全。&lt;/p&gt;
&lt;p&gt;我看着手里那瓶维生素，有点不知道该说什么。&lt;/p&gt;
&lt;p&gt;（好穷，买的还挺贵的，总不能浪费吧。）&lt;/p&gt;
&lt;h2 id="六"&gt;六&lt;/h2&gt;
&lt;p&gt;有意思的是，DSHEA和cGMP（现行药品生产质量管理规范）是配套的。前者定义了膳食补充剂的法律地位，后者规范了它的生产过程。cGMP确保生产、包装、储存各个环节符合安全标准——这是生产层面的底线。&lt;/p&gt;
&lt;p&gt;联邦贸易委员会（FTC）则负责监管广告的真实性。FDA和FTC，一个管安全，一个管宣传，分工明确。&lt;/p&gt;
&lt;p&gt;所以你看到的那些&amp;quot;增强免疫力&amp;quot;、&amp;ldquo;改善睡眠&amp;quot;的广告，不是随便写的。FTC在看着。虽然效果有限，但至少有人在做这件事。&lt;/p&gt;
&lt;h2 id="七"&gt;七&lt;/h2&gt;
&lt;p&gt;话题回到医疗器械这边。&lt;/p&gt;
&lt;p&gt;上市后管理是我觉得整个监管链条里最容易被忽视、但实际上最关键的一环。&lt;/p&gt;
&lt;p&gt;医疗器械一旦上市，不良事件监测就开始了。不良事件报告制度是强制性的——医院、医生、制造商都有义务向FDA报告任何与器械相关的不良事件。情况严重的，召回。&lt;/p&gt;
&lt;p&gt;召回听起来简单，做起来极其复杂。一个心脏起搏器卖到了全美国各地，怎么追踪？答案是UDI系统——医疗器械唯一标识（Unique Device Identification）。&lt;/p&gt;
&lt;p&gt;每一个医疗器械都被分配一个唯一的编码，贴在产品上，录入数据库。出了问题，可以顺着编码追到具体的批次、具体的医院、具体的患者。&lt;/p&gt;
&lt;p&gt;这套系统是2013年前后才开始全面推广的，在此之前，医疗器械的追溯一直是监管的痛点。现在，你去医院装了一个支架，那个支架有一个自己的号码，理论上可以一路追溯到它是在哪家工厂、哪条生产线上被造出来的。&lt;/p&gt;
&lt;p&gt;我有时候觉得，这种技术带来的透明感，本身就是一种安慰。&lt;/p&gt;
&lt;h2 id="八"&gt;八&lt;/h2&gt;
&lt;p&gt;写到这里，我回头看了看开头的那个问题：一瓶维生素，一台医疗器械，是怎么被认定&amp;quot;安全&amp;quot;的？&lt;/p&gt;</description></item><item><title>药品监管机构的 AI 日志</title><link>https://touchingfish.top/2023/drug-regulatory-admin/</link><pubDate>Mon, 11 Sep 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/drug-regulatory-admin/</guid><description>&lt;p&gt;我对药品监管这件事的理解，大概始于秋招前某次面试。面试官问我：&amp;ldquo;那你对这个行业有什么认识？&amp;ldquo;我当场愣住，脑子里只剩下&amp;quot;FDA管药，PMDA也管药&amp;quot;这种正确的废话。&lt;/p&gt;
&lt;p&gt;回来后我做了一件很符合我性格的事，让ChatGPT以FDA审查员和PMDA审查员的身份写日记。&lt;/p&gt;
&lt;p&gt;不是因为突然对监管产生了什么兴趣，而是我发现这是种全新的学习方式 —— 比起干巴巴地背&amp;quot;FDA负责药品审批&amp;quot;这种知识点，不如让AI想象一个审查员具体的一天，越具体越好，细节越多，面试的时候越能装得像个懂行的人。&lt;/p&gt;
&lt;p&gt;先简单交代一下背景知识，免得你看日记的时候一脸懵。&lt;/p&gt;
&lt;h2 id="美国食品药品监督管理局"&gt;美国食品药品监督管理局&lt;/h2&gt;
&lt;p&gt;美国食品药品监督管理局（Food and Drug Administration，FDA），可以说是美国药品监管的超级大佬，不仅管药，还要操心食品、生物制品、化妆品、兽药、医疗器械和诊断用品。这个庞然大物坐拥超过17000名员工，总部设在华盛顿特区和马里兰州的罗克维尔城。总部和分区各有分工：总部掌握最终决策权，负责审批药品；而那些分布在全国的区所和工作站，则负责检查和确认数据的真实性以及是否符合GMP（Good Manufacturing Practice，药品生产质量管理规范）和GLP（Good Laboratory Practice，药物非临床研究质量管理规范）的要求——是的，他们是FDA的&amp;quot;眼线&amp;quot;和&amp;quot;实干派&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;FDA的组织架构也不含糊，分为七大中心和两大办公室，各自管着一摊事儿。比如药物评价和研究中心（Center for Drug Evaluation and Research，CDER），这是那个让你新药梦成真或破碎的地方。他们审核你的上市申请，研究你的标签和说明书，还会帮你定生产标准。另一方面，医疗器械和放射健康中心（Center for Devices and Radiological Health，CDRH）是医疗器械的守护神，确保医生和患者手里的器械不仅有用，而且安全。他们还通过推进所谓的&amp;quot;监管科学&amp;quot;来让整个行业的规矩更统一、更透明——当然，这对从业者来说有时候是福音，有时候是噩梦。&lt;/p&gt;
&lt;blockquote&gt;
&lt;h3 id="cdrh-某个无趣得让人打哈欠的星期三"&gt;CDRH 某个无趣得让人打哈欠的星期三&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;7:45 AM&lt;/strong&gt;
到办公室的时间早得我想直接冲咖啡机哭诉。CDRH 的任务很重要，确实如此，但重要的任务也可以是无聊的。今天的工作是检查一堆 510(k) 提交资料，这意味着我要阅读 100 多页长得像本科实验报告的文档，确保医疗器械的申报材料齐全，还要判断它们是否符合一堆晦涩的法规。问题在于，有些申请就像是在玩&amp;quot;医疗器械名词拼接游戏&amp;rdquo;。&amp;ldquo;高科技镀钛支架结合抗菌纳米涂层的创新技术&amp;quot;听起来很炫酷，结果文件里真正的&amp;quot;创新&amp;quot;居然是：把支架的尺寸改小了 0.2 毫米。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;10:15 AM&lt;/strong&gt;
我花了 20 分钟试图搞清楚一个文件夹里该死的命名规则。为什么有人会认为&amp;quot;FINAL_FINAL_V3&amp;quot;是个好文件名？更糟糕的是，这居然是一个已经&amp;quot;审查过&amp;quot;的版本！在邮箱里翻到提交人的邮件，看到一长串的&amp;quot;感谢您的专业审查&amp;rdquo;，真想回复：&amp;ldquo;谢谢，但我需要的是明确的命名规则，不是外交辞令。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;12:00 PM&lt;/strong&gt;
午饭时间终于到了。和同事一起吐槽了半小时某位提交人将风险管理表格和随机的市场调研数据搞混的荒谬行为。他们真的以为&amp;quot;我们有很好的客户反馈&amp;quot;能代替生物相容性测试结果吗？为了缓解愤怒，我点了个巨无霸套餐。如果不能让提交人负责，这么多碳水也算让我的胃负责一点。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2:30 PM&lt;/strong&gt;
下午的任务是核查几个 Q-sub 会议纪要。老实说，Q-sub 会议的纪要读起来比说明书还让人昏昏欲睡。今天的亮点是一个会议记录里把&amp;quot;real-world evidence&amp;quot;拼成了&amp;quot;real-word evidence&amp;quot;。希望设备的制造商没想用这个设备测字典里的词汇频率。最令人费解的是，每个纪要都要求我们添加&amp;quot;无保留意见&amp;quot;的声明。好吧，我确实没什么意见，因为我现在只想睡觉。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4:45 PM&lt;/strong&gt;
一天快结束了，我终于把最后一个审查意见发了出去。关闭电脑的那一刻，我突然意识到自己忘了填写今天的工作日记。&lt;/p&gt;
&lt;p&gt;工作日记：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;阅读了 20 份文件，每份文件都让我怀疑人生。&lt;/li&gt;
&lt;li&gt;和同事对垃圾命名规则展开了一场深入讨论，最终得出结论：宇宙的混乱可能始于第一个人写下&amp;quot;FINAL_DRAFT&amp;quot;。&lt;/li&gt;
&lt;li&gt;吃了一个巨无霸，碳水带来的快乐比医疗器械创新更可靠。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;5:30 PM&lt;/strong&gt;
在回家的路上，我思考了一会儿这份工作的意义。监管确实重要，但有时候我怀疑，我们的每一天是否也被一层&amp;quot;合规&amp;quot;的枷锁束缚着。&lt;/p&gt;
&lt;p&gt;不过，至少明天还有巨无霸。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;看完这段日记，我突然觉得论文修改也没那么痛苦了——至少我不需要面对&amp;quot;FINAL_FINAL_V3&amp;quot;这种文件名。（虽然我也干过类似的事。）&lt;/p&gt;
&lt;p&gt;FDA 就是这样一个机构，新药想上市得先过它这关，不合格的会被打回去，出了事它也要负责解释。它管的事很杂，药品、食品、化妆品、医疗器械都归它管。手下17000多人，总部在华盛顿特区，下面的区所负责跑现场、检查数据符不符合规矩。&lt;/p&gt;</description></item><item><title>t² = F</title><link>https://touchingfish.top/2023/t-squared-equals-f/</link><pubDate>Sun, 10 Sep 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/t-squared-equals-f/</guid><description>&lt;p&gt;如果你在统计课上认真听了两组比较那两章，你可能隐约记得：t检验的t值和ANOVA的F值之间好像有点关系。&lt;/p&gt;
&lt;p&gt;但大多数教材不会把这件事说透。t检验在第四章，ANOVA在第六章，它们被当作两个独立的工具来讲。你忙着记公式、背适用条件、算自由度，没时间去想&amp;quot;这两个东西本质上是不是同一个&amp;quot;。&lt;/p&gt;
&lt;p&gt;答案是：在两组比较的情形下，$t^2 = F$。这不是近似，是严格的数学恒等式。&lt;/p&gt;
&lt;h2 id="从两个分布说起"&gt;从两个分布说起&lt;/h2&gt;
&lt;p&gt;t 分布的定义是这样的：如果 $Z \sim \mathcal{N}(0, 1)$ 和 $V \sim \chi^2_{df}$ 独立，那么&lt;/p&gt;
$$
t = \frac{Z}{\sqrt{V / df}} \sim t_{df}
$$&lt;p&gt;F 分布的定义是这样的：如果 $U \sim \chi^2_{d_1}$ 和 $V \sim \chi^2_{d_2}$ 独立，那么&lt;/p&gt;
$$
F = \frac{U / d_1}{V / d_2} \sim F_{d_1, d_2}
$$&lt;p&gt;把 t 的定义平方一下：&lt;/p&gt;
$$
t^2 = \frac{Z^2}{V / df}
$$&lt;p&gt;$Z^2$ 服从自由度为 $1$ 的 $\chi^2$ 分布。所以 $t^2$ 恰好是分子自由度为 $1$、分母自由度为 $df$ 的 F 分布：&lt;/p&gt;
$$
t^2_{df} = F_{1, df}
$$&lt;p&gt;这就是分布层面的等价性。不是&amp;quot;差不多&amp;quot;，是&amp;quot;平方之后完全一样&amp;quot;。&lt;/p&gt;</description></item><item><title>药事法规与GXP规范</title><link>https://touchingfish.top/2023/drug-regulation-and-gxp/</link><pubDate>Sun, 03 Sep 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/drug-regulation-and-gxp/</guid><description>&lt;p&gt;姑且假设黑衣组织是一个跨国犯罪集团。&lt;/p&gt;
&lt;p&gt;代号APTX4869。据说能&amp;quot;让服用者死亡&amp;quot;，据说偶尔能让组织里的叛徒&amp;quot;返老还童&amp;quot;——技术细节我不是专家，不展开讨论。&lt;/p&gt;
&lt;p&gt;这样一款药物，离在市场上流通还有多远？&lt;/p&gt;
&lt;p&gt;一款药物从实验室到受害者手里，要穿越的不只是药效本身，还有一整套在全球通行的技术规范。这套规范的名字，叫GXP。&lt;/p&gt;
&lt;p&gt;GXP，Good x Practice。&amp;ldquo;x&amp;quot;可以是L（Laboratory）、C（Clinical）、M（Manufacturing）、D（Distribution）。非临床、临床、生产、分销——四个环节，四套标准，构成了药物从分子到商品的完整旅程。&lt;/p&gt;
&lt;p&gt;黑衣组织的研发部、生产部、物流部，和任何一家跨国药企没什么本质不同。（区别在于，后者有监管，前者没有。）&lt;/p&gt;
&lt;p&gt;先说第一关。&lt;/p&gt;
&lt;h2 id="非临床数据的可靠性是唯一信仰"&gt;非临床：数据的可靠性是唯一信仰&lt;/h2&gt;
&lt;p&gt;GLP，Good Laboratory Practice，药物非临床研究质量管理规范。&lt;/p&gt;
&lt;p&gt;1972年，美国FDA制定了药品GLP规范草案。1978年，正式实施。&lt;/p&gt;
&lt;p&gt;起因很简单：制药行业提交的非临床安全性数据，越来越不靠谱。数据可以伪造，猴子可以替死，实验记录可以事后补填。监管机构意识到，没有独立的质量监督，就没有数据的可信度。&lt;/p&gt;
&lt;p&gt;1981年，经济合作与发展组织（OECD）颁布GLP原则，化学制品非临床安全性数据的相互认可成为可能。一套标准，从此跨越国境。&lt;/p&gt;
&lt;p&gt;GLP的核心逻辑很简单：让数据经得起任何形式的复查。 如果你的实验无法复现，那它从未存在过。&lt;/p&gt;
&lt;p&gt;具体怎么做到？&lt;/p&gt;
&lt;p&gt;设施设计要减少交叉污染，每个批次的试验品要保留留样确保重现性，数据与档案管理采用可追溯的电子采集系统。独立的质量保证部门对研究全程监督，专题负责人（Study Director）签字确认研究报告。&lt;/p&gt;
&lt;p&gt;欧盟的GLP适用范围更广，涵盖化学品、人用药品、兽药产品、化妆品、食品、饲料添加剂、农药、生物杀灭剂和清洁剂。监管框架的完备程度，决定了数据能否经受住&amp;quot;回头看&amp;quot;的审查。&lt;/p&gt;
&lt;p&gt;APTX4869的毒理学数据——急性毒性、致畸性、致癌性——每一项都应该在GLP认证的设施中产生。理论上。&lt;/p&gt;
&lt;p&gt;实际上，没有IRB的独立审查，没有FDA的飞行检查，这套流程在任何一个环节都可能失真。&lt;/p&gt;
&lt;p&gt;数据可以在任何环节失真，程序可以在任何节点被绕过。&lt;/p&gt;
&lt;p&gt;GLP能保证的，是&amp;quot;如果有监管，数据是否可靠&amp;rdquo;。它无法保证&amp;quot;是否有监管&amp;quot;。&lt;/p&gt;
&lt;p&gt;（这大概是黑衣组织研发部和正规药企研发部之间最本质的区别。）&lt;/p&gt;
&lt;h2 id="临床以受试者之名"&gt;临床：以受试者之名&lt;/h2&gt;
&lt;p&gt;GLP过关了，动物实验证明了安全性。&lt;/p&gt;
&lt;p&gt;接下来是更棘手的问题：动物实验过关之后，人呢？&lt;/p&gt;
&lt;p&gt;GCP，Good Clinical Practice，药物临床试验质量管理规范。&lt;/p&gt;
&lt;p&gt;美国的GCP法规主要在联邦法规第21主题（21 CFR Part 312）和第45主题（45 CFR Part 46）中。这些条文不仅约束FDA监管的产品，也覆盖HHS出资的研究。&lt;/p&gt;
&lt;p&gt;2013年，FDA发布《临床试验监督——基于风险的临床试验监查指南》，将集中化监查（Centralized Monitoring）正式写入监管逻辑。1996年，ICH（International Council for Harmonisation）发布E6 GCP指南，为涉及人类受试者的临床试验提供了第一套真正意义上的国际标准。&lt;/p&gt;
&lt;p&gt;GCP有三个核心角色：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;伦理委员会（IRB）是临床试验的第一道门。负责审核和批准试验方案、知情同意书，确保受试者的权益、安全和健康得到保障。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;研究者（Investigator）必须亲自监督研究进展，按照经过IRB批准的试验方案开展临床工作，在必要时获得受试者的知情同意，报告所有副作用，确保研究记录的质量和完整。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;申办者（Sponsor）负责确保临床试验的开展和数据生成、录入、报告的合规性。须建立质量管理系统（QMS）和标准操作规程（SOP），对研究者进行资格认定和培训，实施安全性监督，并通过临床试验注册与结果公开制度维护研究的透明度和公信力。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;（在一个恐怖组织谈透明度和公信力，有点荒诞）&lt;/p&gt;
&lt;p&gt;这套制度运转的逻辑，和规范文本描述的别无二致。区别只在于：正规药企的临床试验不会张贴在ClinicalTrials.gov上，也不会出现在任何药监部门的审批记录里——那是另一个故事了。&lt;/p&gt;
&lt;p&gt;临床试验数据的质量直接决定了一种药物能否上市。在规范世界里，这是铁律。在另一套叙事里，这是成本。&lt;/p&gt;
&lt;p&gt;（如果琴酒去申请临床试验，IRB会怎么审？研究者的知情同意书要怎么写？&amp;ldquo;服用后可能死亡也可能返老还童&amp;rdquo;——这能通过伦理审查吗？琴酒大概不会亲自跑。）&lt;/p&gt;
&lt;h2 id="生产质量源于设计"&gt;生产：质量源于设计&lt;/h2&gt;
&lt;p&gt;GCP也过了。&lt;/p&gt;
&lt;p&gt;接下来是最容易被误解的环节：生产。&lt;/p&gt;
&lt;p&gt;GMP，Good Manufacturing Practice，药品生产质量管理规范。&lt;/p&gt;
&lt;p&gt;美国的cGMP（current Good Manufacturing Practice）是世界上第一部GMP。基础法规是《联邦食品、药品与化妆品法》（FD&amp;amp;C Act）。1938年的磺胺酏剂事件催生了这部法律；1962年的《Kefauver-Harris修正案》进一步确立了GMP的法律地位。&lt;/p&gt;
&lt;p&gt;21世纪的cGMP引入了&amp;quot;质量源于设计&amp;quot;（Quality by Design，QbD）的理念——这句话值得单独一行：&lt;/p&gt;
&lt;p&gt;质量不是检测出来的，是设计出来的。&lt;/p&gt;
&lt;p&gt;ICH发布的三个指南文件支撑起这套逻辑：&lt;/p&gt;</description></item><item><title>虚拟变量 / Independent T-test</title><link>https://touchingfish.top/2023/independent-t-test-regression/</link><pubDate>Tue, 01 Aug 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/independent-t-test-regression/</guid><description>&lt;p&gt;在特定条件下，它们本质上是同一个统计检验，只是表达形式不同。&lt;/p&gt;
&lt;p&gt;如果把&amp;quot;成组 t 检验&amp;quot;理解为&amp;quot;两组均值比较的独立样本 t 检验&amp;quot;，那么它与&amp;quot;只有一个二元自变量的简单线性回归中的回归系数显著性检验&amp;quot;是完全等价的。&lt;/p&gt;
&lt;h2 id="两种写法同一个模型"&gt;两种写法，同一个模型&lt;/h2&gt;
&lt;p&gt;t检验的设定：比较A组与B组均值是否不同。你有两组独立样本，想知道它们来自的总体均值是否相等。&lt;/p&gt;
&lt;p&gt;回归的设定：设&lt;/p&gt;
$$
Y = \beta_0 + \beta_1 X + \varepsilon
$$&lt;p&gt;其中 $X$ 是一个虚拟变量（dummy variable）：&lt;/p&gt;
$$
X =
\begin{cases}
0, &amp; \rm{A组} \\
1, &amp; \rm{B组}
\end{cases}
$$&lt;p&gt;最小二乘估计的结果是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$\hat\beta_0 = \bar{Y}_{\rm A}$，A组的样本均值&lt;/li&gt;
&lt;li&gt;$\hat\beta_1 = \bar{Y}_{\rm B} - \bar{Y}_{\rm A}$，两组均值之差&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后检验 $H_0: \beta_1 = 0$。&lt;/p&gt;
&lt;p&gt;这里得到的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;t 值相同&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;p 值相同&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自由度相同&lt;/strong&gt;（都是 $n_{\rm A} + n_{\rm B} - 2$）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结论相同&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从数学上看，它们是同一个模型的两种写法。&lt;/p&gt;
&lt;h2 id="一个数值验证"&gt;一个数值验证&lt;/h2&gt;
&lt;p&gt;算一个具体例子比讲十遍理论更有说服力。假设A组有5个数据：$[3.2, 4.1, 3.8, 3.5, 4.0]$，B组有5个数据：$[5.1, 5.8, 5.3, 5.5, 5.0]$。&lt;/p&gt;</description></item><item><title>截距项 / One Sample t-test</title><link>https://touchingfish.top/2023/one-sample-t-test-regression/</link><pubDate>Thu, 20 Jul 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/one-sample-t-test-regression/</guid><description>&lt;p&gt;我们从最简情形开始。&lt;/p&gt;
&lt;p&gt;单样本t检验是你在统计课上学到的第一个检验：有一组数据，想知道它的均值是否等于某个特定值 $\mu_0$。比如：这批药片的平均重量是不是 $500\rm{mg}$？这个班级的平均成绩是不是 $70$ 分？&lt;/p&gt;
&lt;p&gt;标准做法：算t统计量，查t分布表，看p值，做结论。&lt;/p&gt;
&lt;p&gt;而&amp;quot;回归视角&amp;quot;的做法更简单：跑一个&lt;strong&gt;只有截距项&lt;/strong&gt;的回归。&lt;/p&gt;
&lt;h2 id="只有截距的回归"&gt;只有截距的回归&lt;/h2&gt;
&lt;p&gt;考虑模型：&lt;/p&gt;
$$
Y_i = \beta_0 + \varepsilon_i, \quad \varepsilon_i \sim \mathcal{N}(0, \sigma^2)
$$&lt;p&gt;没有自变量，只有截距 $\beta_0$。对这个模型做最小二乘估计（OLS），$\hat\beta_0$ 恰好是样本均值 $\bar{Y}$。这应该不意外——当你只能用一条水平线去拟合数据时，最好的选择就是取平均值。&lt;/p&gt;
&lt;p&gt;检验 $H_0: \beta_0 = \mu_0$ 的 t 统计量为：&lt;/p&gt;
$$
t = \frac{\hat\beta_0 - \mu_0}{\rm{SE}(\hat\beta_0)}
$$&lt;p&gt;其中 $\rm{SE}(\hat\beta_0) = s / \sqrt{n}$，$s$ 是样本标准差。&lt;/p&gt;
&lt;p&gt;而单样本t检验的公式是：&lt;/p&gt;
$$
t = \frac{\bar{Y} - \mu_0}{s / \sqrt{n}}
$$&lt;p&gt;一样。&lt;/p&gt;
&lt;p&gt;因为 $\hat\beta_0 = \bar{Y}$，所以两个公式完全等价。t值相同，自由度相同（都是 $n-1$），p值相同，结论相同。&lt;/p&gt;
&lt;h2 id="拟合一个空模型"&gt;拟合一个&amp;quot;空&amp;quot;模型&lt;/h2&gt;
&lt;p&gt;在 R 里，你可以这样拟合：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4.9&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;lm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;~&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Call&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;lm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;formula&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;~&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Residuals&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;2.000e-01&lt;/span&gt; &lt;span class="m"&gt;-2.000e-01&lt;/span&gt; &lt;span class="m"&gt;1.000e-01&lt;/span&gt; &lt;span class="m"&gt;1.041e-16&lt;/span&gt; &lt;span class="m"&gt;-1.000e-01&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Coefficients&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Estimate&lt;/span&gt; &lt;span class="n"&gt;Std.&lt;/span&gt; &lt;span class="n"&gt;Error&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="nf"&gt;Pr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;|&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Intercept&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="m"&gt;5.00000&lt;/span&gt; &lt;span class="m"&gt;0.07071&lt;/span&gt; &lt;span class="m"&gt;70.71&lt;/span&gt; &lt;span class="m"&gt;2.4e-07&lt;/span&gt; &lt;span class="o"&gt;***&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Signif.&lt;/span&gt; &lt;span class="n"&gt;codes&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;***&amp;#39;&lt;/span&gt; &lt;span class="m"&gt;0.001&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;**&amp;#39;&lt;/span&gt; &lt;span class="m"&gt;0.01&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;*&amp;#39;&lt;/span&gt; &lt;span class="m"&gt;0.05&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;.&amp;#39;&lt;/span&gt; &lt;span class="m"&gt;0.1&lt;/span&gt; &lt;span class="s"&gt;&amp;#39; &amp;#39;&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Residual&lt;/span&gt; &lt;span class="n"&gt;standard&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.1581&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt; &lt;span class="n"&gt;degrees&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;freedom&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;Estimate&lt;/code&gt; 那一栏就是样本均值，t值和p值和单样本t检验的输出一模一样。&lt;/p&gt;</description></item><item><title>一座还不错的桥 / 评 Flammer(2021)</title><link>https://touchingfish.top/2023/corporate-green-bonds/</link><pubDate>Wed, 05 Jul 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/corporate-green-bonds/</guid><description>&lt;p&gt;Flammer, C. (2021), Corporate Green Bonds. &lt;em&gt;Journal of Financial Economics&lt;/em&gt;, 142, 499-516.&lt;/p&gt;
&lt;p&gt;Green Bond 这几年很火。但有个问题我一直好奇：发行绿色债券比直接把钱投到绿色项目里更麻烦——行政成本更高，合规要求更多——公司图什么？Flammer 这篇论文给了三种可能：Signaling、Greenwashing，或者更便宜的融资。然后一个一个检验。&lt;/p&gt;
&lt;p&gt;以下是我的阅读笔记。&lt;/p&gt;
&lt;h3 id="1-研究重点"&gt;1 研究重点&lt;/h3&gt;
&lt;h4 id="11-背景与动机"&gt;1.1 背景与动机&lt;/h4&gt;
&lt;p&gt;Green Bond 是为资助环境和气候友好型项目而发行的债券，近年发展迅速，在能源等依赖自然环境的行业尤其受欢迎。探讨其动机和影响，对可持续金融和影响力投资都有意义。&lt;/p&gt;
&lt;h4 id="12-假设"&gt;1.2 假设&lt;/h4&gt;
&lt;p&gt;论文提出了三种可能的解释。&lt;/p&gt;
&lt;p&gt;第一，Signaling（信号传递）。Green Bond 有成本、有约束，可以作为公司对环境承诺的可信信号，降低信息不对称，提高声誉和价值。&lt;/p&gt;
&lt;p&gt;第二，Greenwashing（漂绿）。企业表面上宣示环保，实际上并不行动，通过塑造环保形象误导投资者和其他利益相关者。&lt;/p&gt;
&lt;p&gt;第三，更便宜的融资。Green Bond 投资者可能愿意为社会影响牺牲部分收益，接受更低的回报率。&lt;/p&gt;
&lt;h3 id="2-数据"&gt;2 数据&lt;/h3&gt;
&lt;p&gt;Green Bond 的数据来自 Bloomberg 的固定收益数据库，涵盖 2013 至 2018 年每只债券的金额、货币、到期期限、票息、信用评级和认证状态。数据显示，发行额和发行数量随时间持续增长。从行业和国家分布看，在依赖自然环境的行业（比如能源）更受欢迎，在中国、美国和欧洲尤其盛行。&lt;/p&gt;
&lt;p&gt;债券层面的汇总还揭示了一个规律：与非上市公司相比，上市公司发行的 Green Bond 规模更大、到期期限更长，更有可能是固定利率。这些特征和信息的透明性，解释了为什么后续分析聚焦于上市公司。&lt;/p&gt;
&lt;p&gt;公司层面的数据来自多个来源。会计和股票数据的汇总表明，Green Bond 发行公司的平均规模较大，且通常拥有更高的环境评级和 ESG 评级。作者通过统计对公司有利的环保议题数量，构建了企业的环境重要性指数（数据来自 SASB）。假设检验的结果显示：绿色项目对企业越有利，企业越可能发行 Green Bond。&lt;/p&gt;
&lt;h3 id="3-实证研究"&gt;3 实证研究&lt;/h3&gt;
&lt;h4 id="31-事件研究法event-study"&gt;3.1 事件研究法（Event Study）&lt;/h4&gt;
&lt;p&gt;作者用 Event Study 评估股市对 Green Bond 发行公告的反应。用标准市场模型估计每家公司在发行前 250 个交易日的预期收益，然后计算公告日前后共 5 个短期事件窗口内的 Abnormal Return（异常收益），汇总后进行显著性检验。&lt;/p&gt;</description></item><item><title>博弈的节律</title><link>https://touchingfish.top/2023/game-environment-feedback/</link><pubDate>Mon, 19 Jun 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/game-environment-feedback/</guid><description>&lt;p&gt;之前写过两个 ABM（Agent-Based Model）。网格上的 agents 随机配对，玩一局博弈，然后更新 action。唯一的变量是&amp;quot;看什么&amp;quot;——这一步的得分，还是历史上所有博弈的总分。微分方程我不会推（平均场近似抄的文献），但 ODE 的阶数我还是看得懂的：一个是一阶，一个是二阶。速度与加速度，无记忆与有惯性。微观设定只是一念之差。&lt;/p&gt;
&lt;p&gt;但那两个模型共享一个暗含的前提：支付矩阵是铁板一块。囚徒困境永远是囚徒困境。鹰鸽博弈永远是鹰鸽博弈。&lt;/p&gt;
&lt;p&gt;草不会疼。&lt;/p&gt;
&lt;p&gt;Weitz et al.（2016）让草活了过来——策略改变环境，环境重写收益结构，收益结构反过来重塑策略。闭环一旦形成，系统就开始呼吸。&lt;/p&gt;
&lt;p&gt;我想做的事更简单：不给环境开一个连续的反馈通道，只是给网格一个节律。&lt;/p&gt;
&lt;h2 id="给网格一个节律"&gt;给网格一个节律&lt;/h2&gt;
&lt;p&gt;在原来的 ABM 里加一个资源状态变量，初始值设为 $A$。每一步 agents 在网格上博弈，消耗 $1$ 单位资源。资源从 $A$ 一路降到 $0$，再隔固定步数，重置回 $A$。&lt;/p&gt;
&lt;p&gt;设 $b=1$，资源存量 $a \in \{0, 1, 2, 3, 4\}$。支付矩阵为：&lt;/p&gt;
$$
\begin{matrix}
 &amp; C &amp; D \\\\ \hline
C &amp; a/2 &amp; 0 \\\\
D &amp; a &amp; (a-1)/2
\end{matrix}
$$&lt;p&gt;$a=4$，桌子是这样的：&lt;/p&gt;
$$
\begin{matrix}
 &amp; C &amp; D \\\\ \hline
C &amp; 2 &amp; 0 \\\\
D &amp; 4 &amp; 1.5
\end{matrix}
$$&lt;p&gt;纯正的囚徒困境。$D$ 严格占优 $C$——不管对方选什么，背叛都比合作赚得多。Replicator dynamics 告诉你：关门，放背叛者，全图沦陷。&lt;/p&gt;</description></item><item><title>当公地开始呼吸</title><link>https://touchingfish.top/2023/oscillating-tragedy-of-the-commons/</link><pubDate>Thu, 15 Jun 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/oscillating-tragedy-of-the-commons/</guid><description>&lt;p&gt;公地悲剧是一个老故事了。&lt;/p&gt;
&lt;p&gt;1968 年，Garrett Hardin 描述了这样一个场景：一片对所有人开放的草地，每个牧民都往上面多放一头牛。多放一头牛的收益全归自己，草地退化的代价由所有人分担。于是每个人都选择多放，草地最终被彻底毁掉。&lt;/p&gt;
&lt;p&gt;博弈论的翻译很简单：背叛（defect）是 dominant strategy。不管别人怎么做，背叛的 payoff 都比合作高。Replicator dynamics 告诉你，背叛者最终会吞掉整个群体。&lt;/p&gt;
&lt;p&gt;但这个模型有一个默认前提：草是死的东西。payoff 矩阵是固定的。&lt;/p&gt;
&lt;p&gt;你踩一脚，它不会疼。把它吃光了，它不会改变下一次博弈的规则。&lt;/p&gt;
&lt;p&gt;Weitz 等人在 2016 年 PNAS 上发表的这篇论文做了一件事：他们让草活过来了。&lt;/p&gt;
&lt;h2 id="让草活过来"&gt;让草活过来&lt;/h2&gt;
&lt;p&gt;论文提出了一种叫做 &amp;ldquo;coevolutionary game theory&amp;rdquo; 的框架——博弈和环境的共同演化。核心改动只有一条：payoff 矩阵不再是固定的常数，而是环境的函数。环境好（replete），背叛占优。环境差（depleted），合作占优。&lt;/p&gt;
&lt;p&gt;直觉上很好理解。资源充裕的时候，搭便车是最划算的——别人出力，你享受。资源枯竭的时候，谁都没法搭便车——不合作就一起死。用论文的话说：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;mutual cooperation is a Nash equilibrium when n = 0 and mutual defection is a Nash equilibrium when n = 1.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;$n$ 是环境状态，$n=0$ 代表 depleted，$n=1$ 代表 replete。payoff 矩阵 $A(n)$ 在这两个极值之间线性插值，合作和背叛的 Nash 均衡各自占据一端。&lt;/p&gt;
&lt;p&gt;但关键不在于&amp;quot;环境决定策略&amp;quot;。关键在于另一个方向：策略反过来也改变环境。&lt;/p&gt;
&lt;h2 id="闭环"&gt;闭环&lt;/h2&gt;
&lt;p&gt;合作者改善环境——比如细菌分泌公共酶分解养分，植被固定水土。背叛者恶化环境——只消耗不生产。于是出现了一个闭环：&lt;/p&gt;
&lt;p&gt;合作者多了 → 环境变好 → 背叛者占优 → 环境变差 → 合作者又占优 →&lt;/p&gt;</description></item><item><title>y=ax+b这么能打？ / Simple Linear Regression Universe</title><link>https://touchingfish.top/2023/linear-model-unified-perspective/</link><pubDate>Sat, 10 Jun 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/linear-model-unified-perspective/</guid><description>&lt;p&gt;学了这么多年统计，有一个问题我直到很晚才想明白。&lt;/p&gt;
&lt;p&gt;为什么基础统计课要教那么多互不相关的检验方法？t检验、ANOVA、Pearson相关、线性回归——它们各自有各自的公式、各自的适用条件、各自的查表方式。考试的时候，你得先判断&amp;quot;这道题该用哪种检验&amp;quot;，然后再套对应的公式。&lt;/p&gt;
&lt;p&gt;我当时就是这么学的。背了一堆检验，考完就忘，需要考试的时候又背一遍。&lt;/p&gt;
&lt;p&gt;直到某天我突然意识到：&lt;/p&gt;
&lt;p&gt;它们其实都是同一个公式的不同写法。&lt;/p&gt;
&lt;p&gt;更准确地说，它们都是线性回归模型 $Y = X\beta + \varepsilon$ 在 $X$ 取不同形式时的特例。&lt;/p&gt;
&lt;p&gt;这个发现让我整个人有点懵。倒不是因为数学有多难——恰恰相反，是因为数学太简单了。简单到你会怀疑：为什么当初没人告诉我？&lt;/p&gt;
&lt;p&gt;当然，老师不这样教是有原因的（可能是怕我们一时接受不了？也可能教材就是从各种检验分别讲起的，历史惯性使然）。但站在&amp;quot;事后诸葛亮&amp;quot;的视角，用回归统一一切，确实能让统计的版图变得异常清晰。&lt;/p&gt;
&lt;h2 id="回归是最通用的语言"&gt;回归是最通用的语言&lt;/h2&gt;
&lt;p&gt;考虑最简单的线性回归：&lt;/p&gt;
$$
Y = \beta_0 + \beta_1 X + \varepsilon
$$&lt;p&gt;这里 $\beta_0$ 是截距，$\beta_1$ 是斜率，$\varepsilon$ 是误差项。你关心的问题是：$X$ 对 $Y$ 有没有影响？统计上就是检验 $H_0: \beta_1 = 0$。&lt;/p&gt;
&lt;p&gt;现在，如果我告诉你 $X$ 可以是什么，你就知道为什么回归能统一一切了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果 $X$ 只有 $0$ 和 $1$ 两个取值（比如：$0$ = 对照组，$1$ = 实验组），这个回归就是&lt;strong&gt;成组t检验&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;如果根本没有 $X$，只保留截距 $\beta_0$，这个回归就是&lt;strong&gt;单样本t检验&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;如果把 $X$ 扩展为多个 $0/1$ 虚拟变量（表示多组分类），就变成了&lt;strong&gt;单因素ANOVA&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;如果 $X$ 是连续的，并且先把 $X$ 和 $Y$ 都标准化，回归系数 $\beta_1$ 恰好等于&lt;strong&gt;Pearson相关系数 $r$&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;如果加入个体固定效应（每个受试者一个截距），就变成了&lt;strong&gt;配对t检验&lt;/strong&gt;的等价形式。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就有意思了。五个看起来八竿子打不着的检验方法，在回归的框架下全是一个东西。&lt;/p&gt;</description></item><item><title>如果沉默有声音（If Silence Has Voice）</title><link>https://touchingfish.top/2023/if-silence-has-voice/</link><pubDate>Sun, 23 Apr 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/if-silence-has-voice/</guid><description>&lt;p&gt;清理电脑的时候，发现了这个文件。&lt;/p&gt;
&lt;p&gt;一篇英语课作业（口语稿子），主题是关于&amp;quot;silent restaurant&amp;quot;的。说是作业，其实就是把我看到的某个社会观察节目的内容整理了一下，后面加了点自己的感想。毫无逻辑，想到什么写什么的那种。&lt;/p&gt;
&lt;p&gt;陕西榆林有家很安静的餐厅，80%的服务员是聋哑人。&lt;em&gt;Although they can neither hear nor speak, they try to live a happy life.&lt;/em&gt; 他们听不见也说不出，但都在很努力地活着。节目组把一家咖啡厅的服务员都换成了聋哑人，邀请顾客向他们学习手语。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Although there are few customers in the cafe, all of them are enthusiastic about learning sign language. The waitress who are thoughtful will use a tablet to communicate when necessary. More and more people join the ranks of sign language learning and communication. Harmony and joy filled the whole cafe.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这个设定本身就很微妙。我们总觉得&amp;quot;服务&amp;quot;嘛，就是得说话得热情得满面笑容——虽然这种刻板印象细想起来挺可笑的。但他们用tablet交流，认真地比划着每一个动作。反倒是顾客们学得挺开心。&lt;/p&gt;
&lt;p&gt;印象最深的是一位长头发的女士。&lt;em&gt;She write down what she want to learn, and gestures every motion as carefully as a child.&lt;/em&gt; 她把想学的内容写下来，然后每一个动作都认真得像小朋友学写字。她在对服务员比&amp;quot;你很棒&amp;quot;——用这种方式表达赞美和尊重。&lt;/p&gt;</description></item><item><title>有限群体的波动——固定点与随机性的邂逅</title><link>https://touchingfish.top/2023/finite-population-fluctuations/</link><pubDate>Sun, 12 Mar 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/finite-population-fluctuations/</guid><description>&lt;p&gt;雪堆博弈里出现了内部固定点 $x^*$，对应混合纳什均衡。&lt;/p&gt;
&lt;p&gt;听起来很美好。&lt;/p&gt;
&lt;p&gt;但这只是在 ODE 的世界里。真实世界里，群体是有限的。有限意味着随机。&lt;/p&gt;
&lt;p&gt;当固定点遇上随机性，稳定分布和固定点到底是什么关系？&lt;/p&gt;
&lt;h2 id="随机与确定的根本区别"&gt;随机与确定的根本区别&lt;/h2&gt;
&lt;p&gt;先回顾三个对象的定义：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;固定点（ODE）：&lt;/strong&gt; $\frac{dx}{dt} = F(x)$，当 $F(x^*) = 0$ 时，$x^*$ 不再移动。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;马尔可夫链稳定分布（stationary distribution）：&lt;/strong&gt; $\pi P = \pi$，长期后系统有多大概率在各状态。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;纳什均衡：&lt;/strong&gt; 没人愿意单边改变策略。&lt;/p&gt;
&lt;p&gt;在囚徒困境里，因为有吸收态 $x = 0$，三者重合。&lt;/p&gt;
&lt;p&gt;但雪堆博弈的内部点 $x^*$ 不是吸收态。这就导致了根本性的差异。&lt;/p&gt;
&lt;h2 id="离散状态-vs-连续近似"&gt;离散状态 vs 连续近似&lt;/h2&gt;
&lt;p&gt;在复制子 ODE 里，$x$ 是连续变量，$0 \leq x \leq 1$。&lt;/p&gt;
&lt;p&gt;但在真实随机群体里，状态是离散的：&lt;/p&gt;
$$k = 0, 1, 2, \ldots, N$$&lt;p&gt;其中 $k$ 是合作者数量，$x = k/N$。&lt;/p&gt;
&lt;p&gt;每次更新只能 $k \to k \pm 1$，不能直接跳到 $x^*$。&lt;/p&gt;
&lt;p&gt;假设 $N = 100$，$x^* = 0.4$。这意味着 40 个合作者。&lt;/p&gt;</description></item><item><title>即时筛选与历史筛选</title><link>https://touchingfish.top/2023/two-modes-of-natural-selection/</link><pubDate>Thu, 09 Mar 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/two-modes-of-natural-selection/</guid><description>&lt;p&gt;考虑一个简单的 Agent-Based Model（ABM）。在一个网格上，一群 agents 各自带着一个 action（策略）随机移动，每一步找一个邻居配对，玩一把博弈，获得一个 payoff（收益），然后更新自己的 action。更新规则很简单——看看邻居的得分，谁的得分高，下一步就变成谁的策略。&lt;/p&gt;
&lt;p&gt;关键变量只有一个：&lt;strong&gt;比较什么得分？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;模型一：比较&lt;strong&gt;这一步&lt;/strong&gt;的得分 $P_1$。谁这一轮赚得多，我就学谁。&lt;/p&gt;
&lt;p&gt;模型二：比较&lt;strong&gt;历史所有博弈&lt;/strong&gt;的累计得分 $P_2$。谁到目前为止总共赚得多，我就学谁。&lt;/p&gt;
&lt;p&gt;微观设定上，只是&amp;quot;看当前&amp;quot;和&amp;quot;看历史&amp;quot;的区别。但数学推导告诉我们，这两个模型对应着两种截然不同的动态系统——模型一是一阶常微分方程（Replicator Dynamics），收益差决定演化的&amp;quot;速度&amp;quot;；模型二是二阶积分微分方程（Inertial Dynamics），收益差决定演化的&amp;quot;加速度&amp;quot;。速度与加速度，一阶与二阶，无记忆与有惯性。数学上的区别是清楚的。&lt;/p&gt;
&lt;p&gt;但我想做另一件事：&lt;strong&gt;把这两个模型翻译成生物学的语言。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="翻译的第一步"&gt;翻译的第一步&lt;/h2&gt;
&lt;p&gt;这个 ABM 本身就是自然选择的模拟，翻译几乎是直译：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Action = 表现型（phenotype）&lt;/li&gt;
&lt;li&gt;每一步 = 一代&lt;/li&gt;
&lt;li&gt;模仿更好的策略 = 更好的基因在代际之间被传播&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那么 $P_1$ 和 $P_2$ 呢？它们都像是 fitness（适应度）。模型一依据当前 fitness 筛选，模型二依据累计 fitness 筛选。直觉上，模型一的自然选择反应快，模型二因为有&amp;quot;惯性&amp;quot;，反应慢，自然选择被减弱了。&lt;/p&gt;
&lt;p&gt;这个推理大方向是对的。但有三处需要修正。&lt;/p&gt;
&lt;h2 id="和--都是-fitness但不是同一种"&gt;$P_1$ 和 $P_2$ 都是 fitness，但不是同一种&lt;/h2&gt;
&lt;p&gt;$P_1$ 更像 &lt;strong&gt;instantaneous fitness&lt;/strong&gt; 或 &lt;strong&gt;current realized fitness&lt;/strong&gt;——这一代在当前环境下的适应度表现。$P_2$ 更像 &lt;strong&gt;cumulative fitness&lt;/strong&gt; 或 &lt;strong&gt;lifetime reproductive success&lt;/strong&gt;——一个个体到目前为止的总表现。&lt;/p&gt;
&lt;p&gt;区别不只是&amp;quot;看一步&amp;quot;和&amp;quot;看多步&amp;quot;。$P_2$ 作为简单累加，会混入&amp;quot;活得更久、比较次数更多&amp;quot;这些因素。一个个体 $P_2$ 高，可能不是因为它的策略真的好，只是因为它参与博弈的次数多。也就是说，$P_2$ 比较的不纯粹是生物学意义上的适应度，还混入了&amp;quot;累计时间长度&amp;quot;。&lt;/p&gt;
&lt;p&gt;如果想要更干净的生物学解释，常见做法是把 $P_2$ 改成 &lt;strong&gt;average payoff per interaction&lt;/strong&gt;，或者按年龄、交互次数做归一化。这样比较的就是&amp;quot;平均每次博弈的表现&amp;quot;，而非&amp;quot;总表现&amp;quot;。&lt;/p&gt;</description></item><item><title>雪堆博弈的第三条路</title><link>https://touchingfish.top/2023/snowdrift-game-internal-equilibrium/</link><pubDate>Sat, 25 Feb 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/snowdrift-game-internal-equilibrium/</guid><description>&lt;p&gt;囚徒困境是绝望的。&lt;/p&gt;
&lt;p&gt;背叛是严格占优策略。所有动力学、所有演化、所有重复博弈的尽头，都是纯背叛。教科书这么写，实验室这么验证，我们看着，心里大概也是这么想的。&lt;/p&gt;
&lt;p&gt;但雪堆博弈 Snowdrift Game 不一样。&lt;/p&gt;
&lt;p&gt;这里没有绝路。&lt;/p&gt;
&lt;h2 id="铲雪还是不铲"&gt;铲雪，还是不铲？&lt;/h2&gt;
&lt;p&gt;两辆车被雪堵住了。&lt;/p&gt;
&lt;p&gt;这是经典故事。我第一次读到的时候，正在台北等一场永远不会来的雪。窗外只有雨，但脑子里全是那个场景：两个人，两把铲子，两个选择。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;铲（合作 C）&lt;/li&gt;
&lt;li&gt;不铲（偷懒 D）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;规则很简单：只要有一个人铲，路就能通。铲雪的人付出成本。不铲的人——搭便车 free rider。&lt;/p&gt;
&lt;p&gt;最舒服的局面：别人干活，我拿收益。&lt;/p&gt;
&lt;p&gt;最坏的结局：两个人都等着，谁都走不了。&lt;/p&gt;
&lt;p&gt;这和囚徒困境的绝望感不同。囚徒困境里，合作是傻子策略。这里不是。这里存在一种张力：合作和背叛都有各自的理由，取决于对方选了什么。&lt;/p&gt;
&lt;h2 id="收益矩阵"&gt;收益矩阵&lt;/h2&gt;
&lt;p&gt;设通路收益为 $b$，铲雪成本为 $c$，$b &gt; c &gt; 0$。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;对方 C&lt;/th&gt;
 &lt;th&gt;对方 D&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;我 C&lt;/td&gt;
 &lt;td&gt;$b - c/2$&lt;/td&gt;
 &lt;td&gt;$b - c$&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;我 D&lt;/td&gt;
 &lt;td&gt;$b$&lt;/td&gt;
 &lt;td&gt;$0$&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;简单解释：&lt;/p&gt;
&lt;p&gt;双方合作——成本平摊，收益各得 $b - c/2$。&lt;/p&gt;
&lt;p&gt;我背叛对方合作——我不干活，但享受通路，收益 $b$。对方独自承担成本，收益 $b - c$。&lt;/p&gt;
&lt;p&gt;双方背叛——谁都不铲，困在原地，收益 $0$。&lt;/p&gt;
&lt;p&gt;我合作对方背叛——我一个人干活，收益 $b - c$。通了，但代价全是我一个人扛。&lt;/p&gt;
&lt;h2 id="不存在占优策略"&gt;不存在占优策略&lt;/h2&gt;
&lt;p&gt;这是关键。&lt;/p&gt;
&lt;p&gt;看矩阵：&lt;/p&gt;
&lt;p&gt;对方合作时，我选 C 得 $b-c/2$，选 D 得 $b$。$b &gt; b - c/2$，背叛更香。&lt;/p&gt;</description></item><item><title>固定点、稳定分布、纳什均衡——一个困惑的消解</title><link>https://touchingfish.top/2023/fixed-point-stable-distribution-nash/</link><pubDate>Fri, 10 Feb 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/fixed-point-stable-distribution-nash/</guid><description>&lt;p&gt;复制子动力学里的固定点、马尔可夫链的稳定分布、博弈论里的纳什均衡。&lt;/p&gt;
&lt;p&gt;这三个东西，我第一次看到的时候，是当同义词处理的。&lt;/p&gt;
&lt;p&gt;后来发现，不是。&lt;/p&gt;
&lt;h2 id="曾经的误解"&gt;曾经的误解&lt;/h2&gt;
&lt;p&gt;Fixed Point、Stationary Distribution、Nash Equilibrium。&lt;/p&gt;
&lt;p&gt;三个术语，三个领域，三种直觉。听起来像是同一个数学对象的三个侧面。&lt;/p&gt;
&lt;p&gt;囚徒困境里，它们确实是同一个东西。&lt;/p&gt;
&lt;p&gt;但这不代表它们在任何情况下都等价。我花了点时间才把这个混淆搞清楚。&lt;/p&gt;
&lt;h2 id="三个数学对象的定义"&gt;三个数学对象的定义&lt;/h2&gt;
&lt;h3 id="固定点fixed-point"&gt;固定点（Fixed Point）&lt;/h3&gt;
&lt;p&gt;复制子动力学是一个常微分方程：&lt;/p&gt;
$$\frac{dx}{dt} = F(x)$$&lt;p&gt;固定点的定义很简单：&lt;/p&gt;
$$F(x^*) = 0$$&lt;p&gt;如果系统刚好到达 $x^*$，它就不再移动。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;速度为零&amp;quot;的点。确定性的。&lt;/p&gt;
&lt;h3 id="马尔可夫链稳定分布stationary-distribution"&gt;马尔可夫链稳定分布（Stationary Distribution）&lt;/h3&gt;
&lt;p&gt;随机过程里，系统永远在随机跳动。静止？不存在的。&lt;/p&gt;
&lt;p&gt;于是换了个问题：长期后系统有多大概率出现在各状态？&lt;/p&gt;
&lt;p&gt;这就是稳定分布。记作：&lt;/p&gt;
$$\pi P = \pi$$&lt;p&gt;这里 $P$ 是转移矩阵，$\pi$ 是概率分布。&lt;/p&gt;
&lt;p&gt;含义是：经过一步随机演化后，概率分布保持不变。&lt;/p&gt;
&lt;p&gt;本质上是特征值 $\lambda = 1$ 对应的特征向量。&lt;/p&gt;
&lt;h3 id="纳什均衡nash-equilibrium"&gt;纳什均衡（Nash Equilibrium）&lt;/h3&gt;
&lt;p&gt;这是策略概念。&lt;/p&gt;
&lt;p&gt;没有人愿意单独改变策略。&lt;/p&gt;
&lt;p&gt;它甚至不一定涉及时间。&lt;/p&gt;
&lt;h2 id="用矩阵方程求稳定分布"&gt;用矩阵方程求稳定分布&lt;/h2&gt;
&lt;p&gt;以最简单的两状态马尔可夫链为例。&lt;/p&gt;
&lt;p&gt;设群体只有两种状态：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;状态 0：全体背叛&lt;/li&gt;
&lt;li&gt;状态 1：全体合作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;状态向量：&lt;/p&gt;
$$p_t = \begin{pmatrix} P(\text{时刻 } t \text{ 在状态 0}) \\ P(\text{时刻 } t \text{ 在状态 1}) \end{pmatrix}$$&lt;p&gt;转移矩阵：&lt;/p&gt;</description></item><item><title>演化的速度与加速度</title><link>https://touchingfish.top/2023/evolutionary-game-dynamic/</link><pubDate>Sat, 04 Feb 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/evolutionary-game-dynamic/</guid><description>&lt;p&gt;我不懂演化博弈的数学，Replicator Dynamics 对我来说只是个名词。但我会计算机模拟，Agent-Based Model（ABM）是我的语言。&lt;/p&gt;
&lt;p&gt;假如在一个 $n \times n$ 的网格上，按网格数量乘以 population density 生成一群 agents，每一步 agents 带着一个 action 在网格上移动，在 Von Neumann 邻域找另一个 agent 配对，玩一把经典博弈，然后更新 action，进入下一步。所有 agents 更新 action 的方式都一样。以上定义了模型的基本要素。&lt;/p&gt;
&lt;p&gt;现在考虑一个关键变量：agents 更新 action 的依据是什么？&lt;/p&gt;
&lt;p&gt;一、和邻居比较&lt;strong&gt;这一步&lt;/strong&gt;的得分 $P_1$，下一步变成得分 $P_1$ 高的 action。&lt;/p&gt;
&lt;p&gt;二、和邻居比较&lt;strong&gt;历史所有博弈&lt;/strong&gt;的得分 $P_2$，下一步变成得分 $P_2$ 高的 action。&lt;/p&gt;
&lt;p&gt;微观设定上，只是&amp;quot;看当前&amp;quot;和&amp;quot;看历史&amp;quot;的区别。但当我试图用数学去描述这两个模型时，发现它们对应着两种完全不同的物理动态：一阶系统与二阶系统，速度与加速度。&lt;/p&gt;
&lt;p&gt;下面一步步完成推导。&lt;/p&gt;
&lt;h2 id="从代码到方程平均场近似"&gt;从代码到方程：平均场近似&lt;/h2&gt;
&lt;p&gt;在计算机模拟中，有一个 $n \times n$ 的网格，Agent 在上面走动并寻找邻居。数学家做了一个&amp;quot;偷懒&amp;quot;但极其有效的假设——&lt;strong&gt;平均场近似（Mean-Field Approximation）&lt;/strong&gt;：假设网格无限大，且所有人像气体分子一样充分混合，随机相遇。&lt;/p&gt;
&lt;p&gt;这意味着什么？假设当前全图有 $x$ 比例的人使用策略 $A$，有 $1-x$ 比例的人使用策略 $B$。在一个极小的时间步 $\Delta t$ 内，随机抓取一个 Agent，他是策略 $B$ 的概率是 $1-x$；他恰好撞见一个策略 $A$ 邻居的概率就是 $x$。所以，&lt;strong&gt;&amp;quot;$B$ 遇到 $A$&amp;ldquo;这个事件发生的联合概率就是 $x(1-x)$&lt;/strong&gt;。&lt;/p&gt;</description></item><item><title>随机演化过程</title><link>https://touchingfish.top/2023/markov-chain-replicator-dynamics/</link><pubDate>Sat, 28 Jan 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/markov-chain-replicator-dynamics/</guid><description>&lt;p&gt;上篇文章甩出了复制子动力学方程 $\frac{dx}{dt} = x(1-x)(\pi_C - \pi_D)$。没解释从哪来的。&lt;/p&gt;
&lt;p&gt;憋着难受。今天补上。&lt;/p&gt;
&lt;p&gt;这个方程不是拍脑袋写出来的。它的背后，是&amp;quot;大量个体随机互动&amp;quot;的宏观涌现。说人话：一群人瞎折腾，最后折腾出了规律。&lt;/p&gt;
&lt;p&gt;微观随机，宏观确定。这是演化博弈论最迷人之处。&lt;/p&gt;
&lt;h2 id="从离散随机过程开始"&gt;从离散随机过程开始&lt;/h2&gt;
&lt;p&gt;还是囚徒困境。&lt;/p&gt;
&lt;p&gt;群体 $N$ 人，策略只有两种：C 或 D。&lt;/p&gt;
&lt;p&gt;记时刻 $t$ 的合作者数量为 $k$。那么合作比例 $x = \frac{k}{N}$。&lt;/p&gt;
&lt;p&gt;系统状态？只需要跟踪 $k = 0, 1, 2, \ldots, N$。&lt;/p&gt;
&lt;p&gt;这活脱脱一个马尔可夫链（Markov Chain）——下一步长什么样，只看现在，不问过去。&lt;/p&gt;
&lt;h2 id="演化规则"&gt;演化规则&lt;/h2&gt;
&lt;p&gt;规则简单到有点粗暴：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;随机抽一个人当&amp;quot;复制源&amp;quot;&lt;/li&gt;
&lt;li&gt;被抽中概率和收益挂钩&lt;/li&gt;
&lt;li&gt;再随机抽一个人，被替换掉&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;高收益策略扩散，低收益策略收缩。 Darwin 的影子若隐若现。&lt;/p&gt;
&lt;p&gt;于是状态 $k$ 每次只跳一个单位：$k \to k+1$ 或 $k \to k-1$。&lt;/p&gt;
&lt;p&gt;这叫&lt;strong&gt;出生-死亡链（birth-death chain）&lt;/strong&gt;。名字很直观，生死之间，一进一退。&lt;/p&gt;
&lt;h2 id="转移概率"&gt;转移概率&lt;/h2&gt;
&lt;p&gt;先算合作者的平均收益。&lt;/p&gt;
&lt;p&gt;当前合作者 $k$ 人，背叛者 $N-k$ 人。&lt;/p&gt;
&lt;p&gt;合作比例 $x = \frac{k}{N}$，所以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;合作者收益：$\pi_C = 3x = \frac{3k}{N}$&lt;/li&gt;
&lt;li&gt;背叛者收益：$\pi_D = 4x + 1 = \frac{4k}{N} + 1$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;群体总&amp;quot;适应度&amp;quot;：&lt;/p&gt;</description></item><item><title>囚徒困境的终点</title><link>https://touchingfish.top/2023/replicator-dynamics-prisoners-dilemma/</link><pubDate>Sun, 15 Jan 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/replicator-dynamics-prisoners-dilemma/</guid><description>&lt;p&gt;我想搞清楚一件事——&lt;/p&gt;
&lt;p&gt;(D, D) 为什么既是均衡，又是终点？&lt;/p&gt;
&lt;p&gt;不是道德判断。是数学事实。复制子动力学 Replicator Dynamics 把这套逻辑说得非常清楚。&lt;/p&gt;
&lt;h2 id="收益矩阵"&gt;收益矩阵&lt;/h2&gt;
&lt;p&gt;两个人，两种策略：合作（记作 C）和背叛（记作 D）。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;对方 C&lt;/th&gt;
 &lt;th&gt;对方 D&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;我 C&lt;/td&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;我 D&lt;/td&gt;
 &lt;td&gt;5&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;含义很简单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;双合作：各得 3&lt;/li&gt;
&lt;li&gt;我背叛、对方合作：我得 5（对方得 0）&lt;/li&gt;
&lt;li&gt;双背叛：各得 1&lt;/li&gt;
&lt;li&gt;我合作、对方背叛：我得 0&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;关键观察在这里。无论对方选什么，背叛的收益都不低于合作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对方 C 时，背叛 5 &amp;gt; 合作 3&lt;/li&gt;
&lt;li&gt;对方 D 时，背叛 1 &amp;gt; 合作 0&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;D 是&lt;strong&gt;占优策略 dominant strategy&lt;/strong&gt;。理性人一定选 D。&lt;/p&gt;
&lt;p&gt;所以 (D, D) 是唯一纳什均衡。&lt;/p&gt;
&lt;p&gt;静态博弈已经告诉我们答案，不需要动力学。&lt;/p&gt;
&lt;p&gt;但——这个均衡是怎么&amp;quot;达到&amp;quot;的？如果一开始有人合作，系统会怎样演化？&lt;/p&gt;
&lt;p&gt;这才是复制子动力学要回答的。&lt;/p&gt;
&lt;h2 id="群体视角"&gt;群体视角&lt;/h2&gt;
&lt;p&gt;不是两个人了。假设一个很大的群体，一部分人用 C，一部分人用 D。&lt;/p&gt;
&lt;p&gt;记时刻 $t$ 时，合作者比例为 $x(t)$，背叛者就是 $1 - x(t)$。&lt;/p&gt;</description></item><item><title>大病初愈（A New Lease on Life）</title><link>https://touchingfish.top/2023/a-new-lease-on-life/</link><pubDate>Mon, 09 Jan 2023 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2023/a-new-lease-on-life/</guid><description>&lt;p&gt;新年伊始，一月上旬接近尾声。情绪一直不高，该整理的年终收获也迟迟没有动笔。&lt;/p&gt;
&lt;h2 id="一"&gt;一&lt;/h2&gt;
&lt;p&gt;又是以&amp;quot;大病初愈&amp;quot;开局的一个月，开题已经过了一个月，还是会觉得导师似乎对我当时的表现不大满意。&lt;/p&gt;
&lt;p&gt;排在卷王后没有理由不摆。卷王对本次汇报的重视程度，从着装就能看得出来。&lt;/p&gt;
&lt;p&gt;轮到我的时候，院长刚好有事开会去了。老师们明显懈怠不少，反正他们也没耐心听懂，也提不出什么问题，也给不了什么意见。&lt;/p&gt;
&lt;p&gt;反正我也不想好好讲，因为反正都会通过。最后果然是通过了。&lt;/p&gt;
&lt;p&gt;虽然还是心有余悸，花了一点时间转化为吐槽：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;一些同学甚至连survey都做得不好，却在开题时大谈自己选题的创新点。导师和委员会里有一些人和他一样，以为&amp;quot;这个领域文章不多&amp;quot;，他们惺惺相惜的样子，真是令人十分动容。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本学期最后一次组会开得比想象中要早得多，导师总结性发言没有针对任何人，说的问题也不在要害，所以也不清楚具体是何态度，很难不让人觉得虚伪。在家经常睡到中午，上午收到的消息几乎没有回复过，估计也给他留下一些不太正面的印象。&lt;/p&gt;
&lt;h2 id="二"&gt;二&lt;/h2&gt;
&lt;p&gt;两周后，寒假的通知正式发布。如果不是突然让学生在一周内提交课程论文，很多人应该没有想到，这学期竟然还有一门课。遣返回乡已经近一个月，前两天才刚刚发出正式的寒假通知。一般以为，寒假时间的公布意味着这个学期的教学任务画上句号，却怎么也没想到被要求赶出本学期的唯一一项期末作业。因为导师早上突然谈起此事，我没有及时在群里回复他，只是下午整理出一篇&amp;quot;初稿&amp;quot;发给他过目。&lt;/p&gt;
&lt;p&gt;如果说教学计划是楼房的建筑框架，那贵校绝对是个专家级的危楼工程师。一系列方便院系在防疫期间完成任务的操作已经习以为常。能上的课，该上的课，应上尽上。巴不得利用上网课的这一学期，把学生培养计划里的课时一网打尽。考察已经无关紧要，线上考试的舞弊行为完全失控。形式主义地要求学生全程录屏，考后却没有任何提交这份录屏文件的通知。由教授和导师们打分的课程论文本就毫无意义，即使是学阀作风的toxic advisor，也会直接给成绩让学生通过，因为他们需要学生把更多时间和精力投入到为他创造&amp;quot;财富&amp;quot;的实验室工作。&lt;/p&gt;
&lt;p&gt;不知是不是该说幸运？我遇到一个&amp;quot;严格&amp;quot;的导师。在我觉得自己已经对这套废材体系完全麻木的时候，还在鼓励我&amp;quot;丰富&amp;quot;课程论文的内容。虽然我心里只想拿&amp;quot;合格&amp;quot;，但还是记着老师的话，&amp;ldquo;要珍惜自己的羽毛&amp;rdquo;…&lt;/p&gt;
&lt;p&gt;这是一项被告知要写论文和截止日期只有不到五天的挑战，我必须提交一份能从导师手里换来&amp;quot;合格&amp;quot;二字的论文。短短两天，不少同学已经从各自的导师手中套来了成绩，而我则是收到修改意见…不解，学生教学都荒诞成什么样了，没有实质内容的意见却还是提得出来。（我真的只想&amp;quot;合格&amp;quot;，更没指望写出什么干货。）如果是去年，我还会在意绩点能不能维持在80以上，以免后续有申请博士的打算时被卡成绩。如今，我只是越来越感受到，自己已经学&amp;quot;废&amp;quot;了。至少这个体系中，丧失了对科研的信心和热情，只想早日完成任务，拿到学位。&amp;ldquo;合格&amp;quot;就是我需要的最低标准。当全院系的尺度都扭曲的时候，还在坚持自己另一套&amp;quot;非理性&amp;quot;的标准，除了制造矛盾之外，并不能带来什么。也许这些学术骗子和所有学生都是矛盾的吧。无论是只手遮天的压榨型导师，还是虚情假意的放养型导师，都从来没有关心过自己要为世界培养怎样的人。终于，在返工复制粘贴一千字后的两天，我拿到了想要的&amp;quot;合格&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;…还好年底发生了这三年最值得见证的历史：梅西夺冠。让我透了口气，觉得世界上还有美好在发生。&lt;/p&gt;
&lt;h2 id="三"&gt;三&lt;/h2&gt;
&lt;p&gt;说回&amp;quot;大病初愈&amp;quot;。在圣诞节前夕，在家里成功被感染。那天，我几乎就要完成我的&amp;quot;圣诞树&amp;quot;了，然后咳了大半天，终于发烧了。早在前两天，老父就处于流感样症状的状态。但不得不说，他恢复得很快，第三天又开始出门&amp;quot;溜达&amp;quot;了（实际上，我们都不知道他在外面做些什么）。因为全家刚刚经历了一轮真正的flu，以及他从来不戴口罩，所以有理由怀疑他感染了covid，而且我们马上也会感染。不出意外，今天老母也躺了一天，不过据她口述，除了疲劳，几乎没有不舒服的症状。&lt;/p&gt;
&lt;p&gt;洗完澡后，我把米饭煮成红糖粥，应付了晚餐。然后出门扛了一箱矿泉水回家。便利店老板的小孩在店里玩耍，我尽量站得离远一点，希望不会感染到他们。最后一瓶宝矿力也被我买了。我能想象会度过一个怎样的夜晚。发烧到满脸通红，视野也好像有一层滤镜。躺在床上，满脑子不成逻辑的胡思乱想，反映出最近什么最吸引我（答案是韩综——「地球游戏厅」后，正在看「山友都市女人」）&lt;/p&gt;
&lt;p&gt;十点多，从床上爬起来吃布洛芬。此时，我才百分百地确定自己阳性，不需要抗原检测。像很多人一样，一辈子没有几次发烧到这种程度。偶尔拿床头的农夫山泉放在额头降降温，穿的衣服偏厚，感觉被窝里马上要&amp;quot;着火&amp;quot;。嘴唇很快就干了，矿泉水喝了大半瓶，每一口都像&amp;quot;两块钱的可乐&amp;quot;（喝可乐的时候，第一口值两块钱）。但是在被子里裹得火热，脏器估计受不了这种温差带来的刺激，很可能是导致后来呕吐的原因之一。&lt;/p&gt;
&lt;p&gt;两点钟，微微出汗，体温似乎有所下降，准备换一身衣服。下床后突然开始喷射性呕吐。此前一直觉得有打不出的嗝，从流感以来，也便秘了好几天，消化系统肯定是出了问题。吐了一次，我尽量忍住，走到厕所，这才终于放心地把该吐的东西都吐了出来。完全不受控制，从口中喷射而出。站直身子那一刻，突然觉得自己已经康复了，体温好像也恢复正常。清理完刚刚的&amp;quot;作品&amp;quot;，消毒并换上新衣服，腰开始剧烈的疼痛。自认为已经看了不少科普，如今也见证了许多因人而异的未了解症状。于是便借助网络，补充了一些知识点：如何有效的漱口，喝运动饮料缓解消化道不适，为什么会腰痛等。这个症状令人有些坐立难安，幸好躺下后顺利入睡了，也许被窝的温度帮了一点忙。&lt;/p&gt;
&lt;p&gt;第二天，下午又开始低烧，且伴随着一些免疫反应带来的屁股痛，无碍。上床休息了几次，还是失水速度太快比较要命。每次喝完水不到二十分钟，嘴唇就又干了。鉴于昨天饮水过量，呕吐物中无色液体含量也明显偏多，补充水分的时候小心翼翼。一口一口地喝着宝矿力，吃了不少圣女果和草莓，想着尽量让胃里的食物成分简单点。早睡晚起，第三天已经好多了。除了呼吸还不太自然，几乎没感到异常。流感后虚弱的身体就这样又经历了一场免疫大战，偶尔还是用叹几声气来协助肺部收缩舒张。夜里重操旧业，把&amp;quot;圣诞树&amp;quot;最后的两层折好，用白乳胶固定。9/9的进度条终于完成，却没有分享的欲望了。把过程发出来让朋友监督，把结果留下来给自己欣赏。&lt;/p&gt;
&lt;h2 id="四"&gt;四&lt;/h2&gt;
&lt;p&gt;吊诡的一年终于要结束，对美好未来已经丧失了信心。让我尤其共感的是，许老师的微博上写道，最怕的是未来回想起来，2022年是比较好的一年。我有些不知道努力的方向，也不想听到&amp;quot;加油&amp;quot;之类的话。当我以为朋友圈不会有人在回顾去年时的态度是积极的时，还是被不少人打脸了。我们在岁月静好和平庸之恶面前其实多么无力。庆幸自己去年最后一本书读到了「可能性的艺术」。&lt;/p&gt;
&lt;p&gt;一月第三天已经把两本去年没有翻完的书看了下来。感染之前在学习计算机网络，书读到一半，以精神状态不佳为由拖延了几日。年关一过，便把书看完了。主要还是对这部分内容有好奇心，并且借着重燃的编程热情，顺便翻完了「SQL必知必会」。如果不知道今年怎么办的话，那就尽量把时间花在感兴趣的事情上吧。因为猛然想起19年在惠安工作时，和在学校最大的不同是，自己常常觉得没有时间学习想知道的事情。跟风看了阿瑟的「打火机与公主裙」之后，又让我开始对计算机有强烈的求知欲。好像渐渐发现自己对大模型之前的AI没那么感兴趣，编程本身和可能即将出现Web3.0更让我着迷。越来越高的围墙内，能否看到帮助我们还原真相的信息，是我这两个月来在意的课题。如果去中心化的信息时代到来，势必对一些&amp;quot;北韩化&amp;quot;的措施有所冲击。&lt;/p&gt;
&lt;p&gt;十二月以来，也看了一些剧综。有时电视上播什么便看什么，毕竟现在周三到周末晚，都有还算不错的节目。年前进入了一段追剧低潮期，只能靠悬疑剧吊着，即使看的时候已经听说烂尾了。值得一提的是，补了少女时代15周年的团综。从韩娱的全世界路过又回来，当然不能错过这个我唯二记住全员名字的女团（另一个团是tara）。这些年有意无意地看了一些成员们的影和剧，也更加能够欣赏到她们的魅力。&lt;/p&gt;
&lt;p&gt;昨晚失眠的时候，在听贤者时间聊熬夜的播客。谈话的内容是影视剧如何&amp;quot;让我们活下去&amp;quot;。非常认同。我看的一些节目，虽然称不上艺术作品，但的确发挥了让我的生命更加多彩的作用。想起「死亡诗社」才知道，因为这些东西，也是生命本身。&lt;/p&gt;
&lt;p&gt;最近还读了「1984」，现在生活也应该被记录。虽然我已经快两个月没有出过门了，但在日记里写下自己的状态也很重要。最好的记录应该发生在当天，因为我们的回忆太容易被&amp;quot;篡改&amp;quot;，曼德拉效应持续在发生。&lt;/p&gt;</description></item><item><title>去死吧十一月（Death to November）</title><link>https://touchingfish.top/2022/nov-magic-realism/</link><pubDate>Thu, 01 Dec 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/nov-magic-realism/</guid><description>&lt;h2 id="2022-11-02"&gt;2022-11-02&lt;/h2&gt;
&lt;p&gt;错过的社会新闻早晚要补上，带来一点心灵冲击。没有人会知道兰州七里河煤气中毒的真相。&lt;/p&gt;
&lt;p&gt;用爱因斯坦的话说，世界大战只会有三次，我也不知道希望最后他说得是真是假。&lt;/p&gt;
&lt;h2 id="2022-11-06"&gt;2022-11-06&lt;/h2&gt;
&lt;p&gt;没有完成政治任务（做核酸），被家人多说了两句。以她的年纪和经历，该怕惹麻烦才是正常。&lt;/p&gt;
&lt;p&gt;第一次想动手写covid19的科普。新冠病毒演化到今天，若继续“内卷”，对人类来说是天大的好消息。令人叹息的是，这些跟我们好像又没关系。&lt;/p&gt;
&lt;h2 id="2022-11-12"&gt;2022-11-12&lt;/h2&gt;
&lt;p&gt;下雪了，汕头和沈阳相差三十度。&lt;/p&gt;
&lt;h2 id="2022-11-14"&gt;2022-11-14&lt;/h2&gt;
&lt;p&gt;原来双十一低迷，动作最大的是“二十条”。两天过去了，大家对这套规则各有各的理解。如果不是网上在说石家庄打响了全面开放的第一枪，我甚至没想过会出现这种事情。“一个时代的结束”？我不知道这个说法是否准确，但我的头脑中好像正在发生了什么，提醒自己要尽快颠覆出这套被控制的逻辑，去做不会被外界因素过度干扰的决定。&lt;/p&gt;
&lt;p&gt;三年前武汉无症状毒株培养的文章再次出现在朋友圈里，一句“不传谣不信谣”便被否认的研究结论终于得到正名。&lt;/p&gt;
&lt;p&gt;我的微博账号莫名被锁。&lt;/p&gt;
&lt;h2 id="2022-11-26"&gt;2022-11-26&lt;/h2&gt;
&lt;p&gt;荒谬！大量被删的评论和文章终于将人们的愤怒推向一个小高潮。以前尽量克制的朋友也开始在朋友圈发声。广州这一轮封控，让许多没有明白上半年“静默”二字多么令人崩溃的朋友也觉醒了。&lt;/p&gt;
&lt;p&gt;晚上，第一位学生。如果不是关注了一些敢怒敢言的博主，我可能也错过这条消息，南京高校的关键词被屏蔽得如此之快。&lt;/p&gt;
&lt;p&gt;华中科技大学公卫学生的发声，湖南大学抗议学生书包中搜出一片空白。信息的封堵越来越严密，大家只能将事实发布到推特上。九点，越来越多的不满化作了行动。不断有来自不同高校的大学生加入声讨和抗议。&lt;/p&gt;
&lt;p&gt;周六的电视节目已经不能吸引我的注意力。&lt;/p&gt;
&lt;p&gt;与此同时，上海乌鲁木齐中路上，人们自发地上街悼念在火灾中丧生的同胞。勇气和愤怒，成为乌中路上越来越多的蜡烛和鲜花。&lt;/p&gt;
&lt;p&gt;大学生们的行动还在继续。凌晨时分，北京大学用行动见证了新地标的诞生。从洋洋洒洒的红字，到此地无银的遮挡，再到围观学生唱起的国际歌。这所以学潮为灵魂的大学加入，为夜里这些行动能否被定性为“运动”增加了说服力。我们只能看到一段学生和校方的交涉，以及内地互联网上迅速的息事宁人。他们畏惧这些替住在地下室里的人着想的学生。&lt;/p&gt;
&lt;p&gt;蜡烛和鲜花的相聚，也演变成游行和抗议。对骨肉同胞的追思已经转为对政治病毒的声讨。人民用呼声为自己争取正常生活的权力。积怨已久的愤慨，使这一场去中心化的行动掺杂了不和谐的噪音。&lt;/p&gt;
&lt;p&gt;两点半，颠覆性的口号在人群中出现，也给暴力镇压提供了切入点。回首三十年前对学生门残忍的处理方式，不禁令人后背一凉。“清场”一词在今夜后续更新的信息中将异常敏感。噪音的出现太容易被做文章，但掺入这些沙子的对哪一方来说都是轻而易举的事情。信息战还热火朝天，网络上关键词消失，以及所谓的“信号减弱”都在指向最危险的情况。&lt;/p&gt;
&lt;p&gt;屏幕前的人心也跟着悬着。&lt;/p&gt;
&lt;p&gt;有惊无险，不需要被悲壮或全身而退来形容这个夜晚。四点半，现场的人数已经不及派出的警力，并没有大规模的被逮捕和控制。这个夜晚是成功的，我们会记住一些勇敢的身影，大家也都像保护重庆超人一样保护着并肩的同胞。&lt;/p&gt;
&lt;h2 id="2022-11-27"&gt;2022-11-27&lt;/h2&gt;
&lt;p&gt;北大入场后，便有人说“压力给到隔壁”，大学生们的行动还在继续。清华大学的表达让我印象颇深：「文」有形象如“不再给公权力口交”，「理」有弗里德曼谐音梗。&lt;/p&gt;
&lt;p&gt;下午，最令人振奋的声援来自到派出所要求放人的上海人民。运动没有结束，这一夜有更多的城市出现了自发的抗议。武汉像两年前一样，再次被冠名以“英雄的城市”。走到哪拆到哪的气势，江城人民首当其冲。昨晚上海的振臂高呼在国内各大省会城市得到了回应。&lt;/p&gt;
&lt;p&gt;晚间的北京，人民聚集在亮马桥，为逝去的同胞默哀。很多人应该像我一样，第一次从《送别》的歌声听到这么多情感和力量。活动同样演变为游行，而且比昨晚的上海更有组织和秩序。人群在努力克制，表达合理的诉求。虽然越来越多人意识到问题的根源所在，但正如不久前北京大学部分学生所联名发出的陈述，人民此刻的愿望更多在于自身的权益，绝没有到颠覆政权的程度。&lt;/p&gt;
&lt;p&gt;夜晚的魔力是令人情绪化。激进的言论还是不可避免。警方的一举一动令人毛骨悚然，三十年前的惨剧在人们心中挥之不去，这座城市离武装力量太接近了。我们唯一能做的，只有为前方的人祈祷……历史没有重演，他们也不敢让历史重演，我们有取得了胜利。全球的声援也达到了高潮。&lt;/p&gt;
&lt;h2 id="2022-11-28"&gt;2022-11-28&lt;/h2&gt;
&lt;p&gt;工作日，没有可罢的工。周末发生的一切是人常交往不可避免的话题。事实上，被堵截的信息和备受关注的世界杯，让大部分人还未了解到事情的全貌。高校里的言论封锁更是令人作呕，还不忘对真相进行隐瞒和加工来对年轻人洗脑。团委的老师被我请出了通讯录。&lt;/p&gt;
&lt;p&gt;前所未有的政治抑郁让我的免疫系统先罢工了。前两日的肾上腺素帮了大忙，让我没有感到生理上的不适。今天才渐渐的感受到畏寒，咳嗽，便秘所带来的痛苦。&lt;/p&gt;
&lt;h2 id="2022-11-29"&gt;2022-11-29&lt;/h2&gt;
&lt;p&gt;事件发酵后，又是以“境外势力”为由大做文章。年轻人难道辨别是非的能力那么低下，总是轻易被人蛊惑？谁才是最能洗脑的机器不言自明。实在不能理解，在大陆生活的人都明白，这里的高压威权绝对不是支付几百块钱就能让人去与它对抗的。但他们还是选择相信“境外势力”的钞能力。简中互联网就是这么糟糕，终于让我下定决心注销掉原来的微博账号。&lt;/p&gt;
&lt;p&gt;互联网记忆多少令我有些不舍，最后成为一张张截图，留在硬盘一个相册里面。&lt;/p&gt;
&lt;p&gt;日光之下无新事。&lt;/p&gt;
&lt;p&gt;吴亦凡和核酸公司转移不了的焦点，终于让舆论找到一个焦点，而为期一周的禁娱和缅怀能够起到最好的效果。&lt;/p&gt;
&lt;p&gt;白天的新闻“口风”还紧，但微博上已经有不少人知道，我们只要看凌晨的消息就好了。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;不出意外，这个夜晚，在后面几天被称作“大转弯之夜”。&lt;/p&gt;</description></item><item><title>从酵母细胞说起</title><link>https://touchingfish.top/2022/yeast-prisoners-dilemma/</link><pubDate>Tue, 15 Nov 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/yeast-prisoners-dilemma/</guid><description>&lt;p&gt;读到一篇有意思的论文。Greig 和 Travisano 在 &lt;em&gt;Biology Letters&lt;/em&gt; 上发了篇文章，研究酵母的&amp;quot;作弊&amp;quot;行为。&lt;/p&gt;
&lt;p&gt;酵母会分泌 invertase 到细胞外消化蔗糖，消化的糖大家都可以用——这就有意思了。一个细胞可以选择&amp;quot;作弊&amp;quot;：偷用邻居分泌的酶，自己却不分泌。研究者把有功能 SUC2 基因的酵母叫&amp;quot;合作者&amp;quot;，把删除了 SUC2 基因的叫&amp;quot;作弊者&amp;quot;，然后把它们放在一起竞争。&lt;/p&gt;
&lt;p&gt;结果很反直觉：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在稀疏的群体里（低社交密度），作弊者的 fitness 只有 0.87——比合作者差&lt;/li&gt;
&lt;li&gt;在密集的群体里（高社交密度），作弊者的 fitness 高达 1.19——比合作者强&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;为什么？社交密度越高，合作者越容易遇到其他合作者。大家一起分泌酶，公共池塘变大，每个人的收益都高。但这时候作弊者混进来，单方面享受公共成果还不付成本，收益爆炸。&lt;/p&gt;
&lt;p&gt;当密度极高时，作弊者几乎总能找到合作目标，偷到的比自己分泌的还多。合作者反而被拖累。&lt;/p&gt;
&lt;p&gt;这完美符合我的直觉。但我想自己做一遍——不是验证论文结论，而是想亲手&amp;quot;看见&amp;quot;这个过程，把方程写进格子，看数字跑起来。&lt;/p&gt;
&lt;h2 id="模型设定"&gt;模型设定&lt;/h2&gt;
&lt;p&gt;$n \times n$ 的网格，population density 控制每格放置 agent 的概率。Agent 有两种策略：C（合作，分泌酶）和 D（作弊，不分泌）。&lt;/p&gt;
&lt;p&gt;两两相遇时玩标准囚徒困境，payoff 矩阵：&lt;/p&gt;
$$
\begin{pmatrix}
R=3 &amp; S=0 \\
T=5 &amp; P=1
\end{pmatrix}
$$&lt;p&gt;R 是合作-合作的奖励，T 是背叛的诱惑，S 是被背叛者的收益，P 是双双背叛的惩罚。按经典设定：$T &gt; R &gt; P &gt; S$，且 $2R &gt; T + S$（互惠合作优于反复背叛）。&lt;/p&gt;
&lt;p&gt;每一步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Agent 在 Von Neumann 邻域（上下左右四格）找邻居&lt;/li&gt;
&lt;li&gt;两人玩一把博弈&lt;/li&gt;
&lt;li&gt;比较这一步的得分 $\pi$&lt;/li&gt;
&lt;li&gt;以正比于收益差的概率模仿邻居策略&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;只看&lt;strong&gt;当期得分&lt;/strong&gt;。不记历史，不做规划。&lt;/p&gt;</description></item><item><title>原来十月还有一天（One Day Left）</title><link>https://touchingfish.top/2022/oct-one-day-left/</link><pubDate>Wed, 02 Nov 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/oct-one-day-left/</guid><description>&lt;h2 id="躺不明白"&gt;躺不明白&lt;/h2&gt;
&lt;p&gt;从老板那里喜提新任务，又得安排时间想想怎么糊弄。于是睡前又看了一篇论文，立志把前些日子的&amp;quot;历史遗留问题&amp;quot;解决一些，至少保证毕业论文研究的科学问题没被发表过，或者至少保证会读这篇论文的人并不知道 —— 是的。&lt;/p&gt;
&lt;p&gt;写到这里，突然想到一句名言 —— &amp;ldquo;世界上除了导师和自己，没人会认真看你的论文&amp;rdquo;。但愿如此。目前看来，让我们老板这种三分钟热度的新手满意可能没什么问题。&lt;/p&gt;
&lt;p&gt;入夜，又是拿出平板。&lt;/p&gt;
&lt;p&gt;眼睛跟论文打架。&lt;/p&gt;
&lt;p&gt;对所谓的研究框架有了思路，只能祈祷没人做过，好让我有题可毕业。今日一役，对于明后几日的工作也有了指导性的想法。&lt;/p&gt;
&lt;p&gt;时隔多日，终于继续看看论文。改改模型。&lt;/p&gt;
&lt;p&gt;组里有个好习惯，把交周报的那一天作为唯一工作日。现在我才意识到，这其实没什么不好的 —— 拖延让我摆脱无用的焦虑。为了下午能尽情娱乐，甚至中午就找了个借口先把周报发给老师。&lt;/p&gt;
&lt;p&gt;日子空虚得把人都逼卷了。&lt;/p&gt;
&lt;p&gt;决定把基本模型的程序推翻重写，实在难以忍受这么多逻辑错误的代码，也找到了一些一直困扰我的&amp;quot;症结&amp;quot;。（想说但没说的直言不讳：&amp;ldquo;老师，你的模型怎么那么多bug&amp;rdquo;。）&lt;/p&gt;
&lt;p&gt;没别的意思，我还挺享受debug的，不过，是调试自己的代码。睡不着的时候又起床玩了一会儿模型，终于达到一种满意的运行状态。&lt;/p&gt;
&lt;p&gt;有点想学习，有点不想学习。&lt;/p&gt;
&lt;p&gt;及时行乐，彻底摆烂到底还是很难做到。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="所有的社会新闻都成了个人日记"&gt;&amp;ldquo;所有的社会新闻都成了个人日记&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;喜提黄码，疫情第三年，不再是健康码virgin了。绝对的&amp;quot;人在家中坐，黄码天上来&amp;quot;，傍晚才收到短信提醒。不出意外，全家的健康码都出了问题。幸好朋友没来汕头，不然走都走不掉。假期告吹得刚刚好，不然也是一路黄码，走到哪里，新增到哪里，反向跑毒路线全都被他安排到了。&lt;/p&gt;
&lt;p&gt;意外收到第二批返校的通知。进行了不久的心理建设才接受事实。幸好最近睡眠质量差，晚上太困了，不至于想太多。接受返校事实后，还是不断地给自己做心理建设，用&amp;quot;把上学当出差&amp;quot;，&amp;ldquo;假期和学期颠倒&amp;quot;来麻痹自己。如今处理社会，学校和自我的关系，唯有苦中作乐这一种态度可选。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;所有的社会新闻都成了个人日记&amp;rdquo; —— 如果没有这样一天一天地记录的话，过段时间将会难以想起这些日子生活的细节。没有变换的场景，会让记忆变得单一，而我们只能每天被动地，坚持消化着社会信息。最近两天因为返校通知，又开始天天刷着微博超话里&amp;quot;重复&amp;quot;的内容。虽然和八月份等待开学通知相比已经释然许多，但焦虑还是在所难免。点了外卖，电话一响，心里想的竟然是：&amp;ldquo;完了，流调又来了。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;返校取消。简直精彩。整天盼着疫情扩散的心理，确实略微有点阴暗。果然，下午在校同学喜提静态管理。近期&amp;quot;在意&amp;quot;的事情尘埃落定，总是有点空虚。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;记住不能被记录的部分&amp;rdquo;。我开始想象，重新将这些记录呈现时，会不会得到难以想象的放大。所谓的社会新闻，以素材的形式收集，在年末重新盘点，与这部作品无异的昨日重现。一年比一年荒诞的日子，这件事情，太难。注册了小号，今天正好是个容易记住的日期，适合作为账号的生日。想尽情记录日常，也许对发现自己的使命有所帮助。&lt;/p&gt;
&lt;p&gt;连执政党开个会，娱乐节目都能停摆月余。不至于，真的不至于。全网都在开会，只有我选择逃避到网络视频中，看了一天的电视。如果看 YouTube，新加坡媒体拍摄的画面：右手边的所有人，无一回头慰问。如果是健康问题，澄清又有什么麻烦？遮掩，真正别有用心的人想借题发挥就找不到方法了吗。公信力和舆论监督都在付出代价。&lt;/p&gt;
&lt;p&gt;接着发生郑州富士康大逃亡，我想象不出这么震撼的画面，城市化后的徒步返乡。以为是高速路旁成群结队的牛羊，再定睛一看，竟是人群。网友已经开始预言舆论的焦点马上要朝正能量的方向发生转变了。天灾人祸，与此同时的梨泰院事故也在热搜榜上占着一席之地。并不是对受伤的友人们没有同情心，现在更关心我们自己的同胞经历着荒唐的苦难更合理一些吧。&lt;/p&gt;
&lt;p&gt;最近澄海开始被交通管制了，目前为止，家里距离22年经典魔幻操作最近的一次。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="人间关系"&gt;人间关系&lt;/h2&gt;
&lt;p&gt;又看了一天的电视剧。最近一直有在担心久坐的问题，膝盖也越来越容意感到不适。憋到十二点半，终于还是换了身衣服便出门跑步。&lt;/p&gt;
&lt;p&gt;午夜的街上竟然还有那么多人，今年假日的汕头前所未有的拥挤。说来还要感谢疫情管控的关照，非必要不出省的叮嘱，让汕头获得这次创收的机会。&lt;/p&gt;
&lt;p&gt;早上被电饭煲报警强行叫醒，三点才躺下休息，睡到十点半总觉得不够。我已经是个成熟的&amp;quot;儿子&amp;quot;了，懂得在抱怨前，思考如何心平气和地让明知道电饭煲已经异常报警了两次，还是按了电源就外出的家长意识到这件事的危险性。和大人交流真的好困难 —— 无法理解自己的家人在听完《告别》的故事之后，竟然是&amp;quot;不就死个妈&amp;rdquo;（原话）的心态。我不知道她是不是认真的，但这次我希望当真。这样我便可以无所顾虑地死掉了 —— &amp;ldquo;不就死个儿子&amp;quot;而已。完成这段时间的记录，也许可以考虑怎么安然地死去。&lt;/p&gt;
&lt;p&gt;我其实是个很笨的人吧。仔细想想，已经很多年没有考过第一名了。无论是学业考试，就业笔试都没有拿到过第一的名次，以致于现在看到需要笔试的岗位，自然而然的没有信心。所以才会，不耍小聪明就焦虑到失眠。&lt;/p&gt;
&lt;p&gt;把手头的钱花掉，走出去后是不是能开心起来，就不想死了呢。跟最好的朋友聊了天：也许真的适合，也许只是在这个环境下不开心而已。可惜的是，长期无助让我对自己有没有完成博士学位的能力产生怀疑。一种前所未有的不自信。为了不让话题一直在我身上，我们谈到了他最近约会的两个对象。突然发现，从小到大，我都一直在听他和异性之间精彩的故事。好像跟另一个好朋友也是这样的，原来我和朋友还有这样特别的相处方式。&lt;/p&gt;
&lt;p&gt;大概是某一年的圣诞节，在六公主夜间档上第一次看《非常主播》。因为我一向被要求早睡早起，就算是周末，也很少有机会看一部十点多才开始的电影。第一次对理想型有模糊的印象，后来喜欢的都是同一种类型的女生；逐渐对圣诞节有特别的情愫，每年都能在这个节日上感到美好的氛围；即使身处不幸的家庭，还是会对其乐融融的亲子关系有莫名的期待。&lt;/p&gt;
&lt;p&gt;多出门走走，发现自己身边还是有能说上话的朋友。又见到两位认识多年的老友。今天是去踢球。五年了，我终于又买了一双球鞋。​年初在旅顺，在打不到车的情况下，我骑电动车载着一位因为同游潜艇博物馆认识的大叔，一起回市区赶轻轨。聊到投缘时，说自己中学时如何如何喜欢足球。于是，他掐了一下我小腿肚上的肌肉，我便猜到他年轻时也爱踢球。冥冥之中，今年会重新回到球场上，即使是复健级别的运动强度。&lt;/p&gt;
&lt;p&gt;只是没想到是在世界杯之前。&lt;/p&gt;
&lt;p&gt;看着晚上的球局越来越多人，日渐自闭社恐的我本来有点不太想去了。突然想到普通的生活已经如此难得，踢球简直像礼物一样。我可能不太喜欢足球，比如很少看球赛，现在连游戏都不爱打了，但踢球的快乐又被我找回来了一些。有一段时间，我以为踢球更重要的是和朋友们一起度过的时光。今天在球场上盘带的那几秒钟，我好像明白了自己更享受什么——年轻时那种莫名其妙的自信（自大），&amp;ldquo;过你就像过清晨的马路&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;回家路上，朋友发来了一段很尴尬的短视频（甚至可以用粗制滥造来形容）。没想到多看几遍，竟然有些泪目 _ &amp;ldquo;人生的意义就是寻找活下去的勇气&amp;rdquo; —— 虽然我坚持，这话的逻辑好像经不起推敲，但还是备受触动。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;2022-10-30
&lt;em&gt;早上通知开组会，而我昨晚连夜改好了PPT。好像混完了这一次，今年也就混完了。原来十月还有一天。&lt;/em&gt;&lt;/p&gt;</description></item><item><title>缘木求榆（碳中和与一个突然靠谱的同门）</title><link>https://touchingfish.top/2022/elm-carbon-sequestration/</link><pubDate>Tue, 20 Sep 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/elm-carbon-sequestration/</guid><description>&lt;p&gt;2022年3月。被老板安排了一个建模比赛。&lt;/p&gt;
&lt;p&gt;暑期学校那个打下手测试 netlogo 模型的同门，给我发消息了。&lt;/p&gt;
&lt;p&gt;他说他想进步。&lt;/p&gt;
&lt;p&gt;我盯着屏幕看了半天。上次听到类似的话，还是在本科毕业答辩的时候。那时候有个同学说，他选择这个课题是因为&amp;quot;想锻炼自己&amp;quot;，评委老师当场问：那锻炼得怎么样了呢？&lt;/p&gt;
&lt;p&gt;同门这次是真的想进步。&lt;/p&gt;
&lt;p&gt;老板近年的项目全是碳中和。系统动力学、Anylogic、植物种群生活史、固碳能力估算。这些词他倒是说得头头是道，至于具体怎么建模、怎么仿真，那是另外一回事了。&lt;/p&gt;
&lt;p&gt;我懂。我太懂了。
他只懂他懂的那一套，超过这个范围就装聋作哑。&lt;/p&gt;
&lt;p&gt;项目内容是基于种群生活史过程的植物固碳潜力评估模型。系统动力学（System Dynamics）本质上是一种通过微分方程描述反馈回路的建模方法，把植物种群看成一系列状态变量——种子库、幼苗库、成树库——随着时间演化。榆树从种子到成熟树要经历萌发、幼苗生长、成熟结果三个阶段，每个阶段的碳固定效率差异巨大。模型的任务，就是追踪碳在这条链路里的流动。&lt;/p&gt;
&lt;p&gt;用 Anylogic 软件做仿真，看不同降水情景对固碳能力的影响。&lt;/p&gt;
&lt;p&gt;数据是现成的。浑善达克沙地、科尔沁沙地原生榆树疏林，Shapefile 文件里有区域降水信息。榆树疏林是沙地生态系统的顶级群落，根系深、寿命长、碳储量高。但榆树幼苗到成树的存活率差异极大——种子萌发需要充足土壤水分，幼苗期抗旱性弱，成熟后根系深扎才能利用深层地下水。这套生活史策略决定了不同阶段的固碳贡献完全不同。模型也是现成的——老板之前接过类似的项目，有一定基础。&lt;/p&gt;
&lt;p&gt;问题是代码。&lt;/p&gt;
&lt;p&gt;Anylogic 是个仿真软件，自带建模语言和环境。说实话，这东西比 NetLogo 复杂多了。NetLogo 至少文档的可读性很高。Anylogic 遇到问题，基本上只能靠玄学搜索。&lt;/p&gt;
&lt;p&gt;同门说他来写代码，我以为他在开玩笑。但他确实写了。几乎全部。&lt;/p&gt;
&lt;p&gt;我只是负责那些他解决不了的技术问题。他卡住的地方，我用英文搜索能力顶上——在 Stack Overflow 和 Anylogic Community Forum 里大海捞针，看看有没有人遇到过类似的问题。&lt;/p&gt;
&lt;p&gt;有时候找到了，解决方案稍微改改就能用。有时候找不到，那就得自己摸索。&lt;/p&gt;
&lt;p&gt;印象最深的是关于植物生长曲线的参数标定。模型里有个地方需要输入不同生长阶段的碳储量转换效率，文献里的数据要么单位不对，要么样本量太小，用上去之后曲线跑出来跟实际情况差得离谱。&lt;/p&gt;
&lt;p&gt;同门试了三天，没调出来。&lt;/p&gt;
&lt;p&gt;我去搜。也搜了半天。我们一起看，一起改代码，一起调试。&lt;/p&gt;
&lt;p&gt;最后跑通了。&lt;/p&gt;
&lt;p&gt;比赛结果倒是出乎意料。抱着打酱油的心态去的，结果模型作品成功入围。被迫在暑假某一个本可以睡到自然醒的上午早起，进行线上报告。&lt;/p&gt;
&lt;p&gt;报告是同门讲的。他讲得比我想象的好。不怯场，逻辑清晰，该强调的地方强调，该略过的地方略过。&lt;/p&gt;
&lt;p&gt;评委问了几个问题。有个问题关于模型的空间尺度效应，评委质疑我们没有考虑榆树个体之间的竞争关系。&lt;/p&gt;
&lt;p&gt;我想反驳，但一时找不到合适的论据。&lt;/p&gt;
&lt;p&gt;同门接话了。这一接，虽然没有答出个所以然，但成了他的研究方向。&lt;/p&gt;
&lt;p&gt;我在旁边看着，心里想：这小子什么时候变得这么能说了？&lt;/p&gt;
&lt;p&gt;他确实想进步。进步得还挺快。&lt;/p&gt;
&lt;p&gt;评委最后没再追问。报告结束，线上会议室的人数已经掉到了十几个。&lt;/p&gt;
&lt;p&gt;出来之后我问他，那个空间尺度的回答是谁想的。&lt;/p&gt;
&lt;p&gt;他说自己想的。&lt;/p&gt;
&lt;p&gt;妙。&lt;/p&gt;
&lt;p&gt;生活有时候就是这样。你以为有些人永远是那个样子，结果他突然就变了。变化来得猝不及防，让你措手不及。&lt;/p&gt;
&lt;p&gt;可能是因为遇到了合适的机会，可能是因为被谁刺激到了，也可能只是到了该进步的年纪。&lt;/p&gt;
&lt;p&gt;总之，碳中和这个项目，意外地成了他成长的一个节点。&lt;/p&gt;
&lt;p&gt;也成了我的。&lt;/p&gt;
&lt;p&gt;老板在水货这件事，我大概会记很久。但在水货手下干活，也不是完全没有好处——至少自由度够大。大到可以让我和同门一起摸索一些他根本不懂的东西，然后在他面前假装这些都是基于他&amp;quot;英明的指导&amp;quot;。&lt;/p&gt;
&lt;p&gt;成年人的世界，就是这么虚伪而务实。&lt;/p&gt;
&lt;p&gt;同门后来又找了我几次，问了一些技术问题。有些我能回答，有些不能。不能的那些，我就说等我查查。&lt;/p&gt;
&lt;p&gt;然后就去搜。&lt;/p&gt;
&lt;p&gt;用英文。&lt;/p&gt;
&lt;p&gt;在无数个深夜里。偷偷努力。&lt;/p&gt;</description></item><item><title>开学遥遥无期（New Term at Home）</title><link>https://touchingfish.top/2022/new-term-at-home/</link><pubDate>Thu, 01 Sep 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/new-term-at-home/</guid><description>&lt;h2 id="2022-09-02"&gt;2022-09-02&lt;/h2&gt;
&lt;p&gt;开完组会，喜提新研究方向，好像暂时放下了许多。&lt;/p&gt;
&lt;p&gt;去年的经济学奖颁给了“因果推断”之后，我也买了 Judea Pearl 的畅销书《为什么》，不幸被老板撞见，就让我去研究看看。本质上是替他学习，每次都是我在单方面输出。“因果推断”这个中文翻译的误导性极强，如果简单地认为是推断因果关系就大错特错。台湾地区“因果推论”的说法则准确得多，能跟“因果发现”有效区分。&lt;/p&gt;
&lt;p&gt;今年以来和导师几次无效沟通，让我一度怀疑自己的表达能力。直到发现，我不是一个人，大家都和他有交流障碍。意识到老板只是一个不负责任的水货之后，我的结论是 ——— 做他懂的研究才能保证按时毕业。于是接手了跳过组里前两届学生的遗产级项目，聊了大半小时，倒也没什么信息量。理工背景就应该研究社科，其实我还挺乐意的。&lt;/p&gt;
&lt;p&gt;命里有球的一天。下午的球局被放鸽子了，傍晚洗完澡收到了另一位朋友发来的消息，便爽快地答应了。上次跟这两位十多年来没怎么见面联系的小学同学一起打球，除了有点触发社恐外，体验不算糟。&lt;/p&gt;
&lt;h2 id="2022-09-03"&gt;2022-09-03&lt;/h2&gt;
&lt;p&gt;最近在微博留下生活记录的频率变高的原因：我本来就是内向慢热的人，想给愿意了解自己的人留下一些角度。&lt;/p&gt;
&lt;p&gt;狠下心开了微信读书一元5天付费无限卡，为了方便地阅读《合作的进化》，一本科普书竟然读出了“我们终将实现共产主义的感觉”。除了这笔“开销”，真的配得上“狠下心”的还是买了一年的agentneo，终于又实现了上网自由。&lt;/p&gt;
&lt;p&gt;花钱是会上瘾的，今晚差点又入了一款写作app，但鉴于作者有口皆碑，忍忍算了。把文章一篇一篇地复制到WPS的文本文档中，考虑试一试百度网盘的同步空间功能。&lt;/p&gt;
&lt;h2 id="2022-09-04"&gt;2022-09-04&lt;/h2&gt;
&lt;p&gt;醒来后，先在床上看了半小时的书，不用起床被“安排”吃早午餐，感觉是个不错的策略。&lt;/p&gt;
&lt;p&gt;追剧。先是把《非正》补完了：几年下来，很多喜欢的代表们“散是满天星”，第一次意识到他们需要去追逐自己的梦想，所以才没有“停”在这个节目。曾经一直对这些代表们不能继续在节目里给我们精彩的故事感到遗憾，现在突然理解了他们所选择的人生。不过，主席团的四位老师能够始终陪伴我们已经很知足了，只要他们还在，听到节目最后那一句“下一季我们再见”，我便安心了。&lt;/p&gt;
&lt;p&gt;晚餐吃得很撑，潮菜，咸和腻，让我想到上次在广州吃粤菜，体验也一般般。也许我没有一个南方胃。其实是“赴宴”之后才知道，原来是大姨的寿宴。围坐在席的都是小时候对我最好的一群长辈，颇感温暖。&lt;/p&gt;
&lt;h2 id="2022-09-07"&gt;2022-09-07&lt;/h2&gt;
&lt;p&gt;大失眠，从1算到40²，越算越精神。&lt;/p&gt;
&lt;p&gt;恢复运动。早上有几点小雨。我的主要运动方式是跑步，其他练习对我来说没什么吸引力。跟在汕头工作的小学同学一起跑步、聊天。原来还有人和我一样想当个岛民。得知，妈屿上有一个面朝大海的图书馆，对回到这片海湾又多了些奔头（理由）。跑道掉色，加上每天都穿着运动，让我立下了周末必刷鞋的flag。午睡两小时，疲劳度并不高，有补觉的嫌疑。&lt;/p&gt;
&lt;p&gt;书读完了，硬着头皮把阅读时长刷够五小时，誓要薅完付费无限卡最后一丝羊毛。认真地看了一下论文的数学，似乎还是能够领会一些。&lt;/p&gt;
&lt;p&gt;书读完了，预计需要跟老板沟通，下午就收到亲切的慰问。把问题简单地交流了一番。很遗憾，我的结论是：这个课题对理论分析和解释的要求，远超程序设计的实现能力，而接手过来的所谓“遗产”，目前并无实质内容。&lt;/p&gt;
&lt;h2 id="2022-09-08"&gt;2022-09-08&lt;/h2&gt;
&lt;p&gt;也许是这两天运动，睡得很好，原来我还是睡够十小时最痛快。&lt;/p&gt;
&lt;p&gt;每天都要该模型，有一个很棒的优点。不用一直钻进文献里做阅读理解，可以偶尔抽离出来coding，debug虽然很费时间，但能说服自己做了一些事情。&lt;/p&gt;
&lt;p&gt;这两年一直在和世界相处，对人类的社会治理失去信心。终于明白了什么叫回头是岸。在微博上看了一些在读校友对师院的抱怨，将心比心都能理解。谁都知道，这两三年的高等教育，不过是培养了一批未来的社会不稳定因素。有时候觉得自己颇为幸运，能够在19年本科毕业。所以也会后悔在这个时候读研，确实是当时对大环境的严重误判。回忆起被怀念的，不会是这世界，而是身边最亲切的，人和故事。&lt;/p&gt;
&lt;p&gt;睡了一个好觉，解决了一个编程问题，收集了一些模型。&lt;/p&gt;
&lt;h2 id="2022-09-10"&gt;2022-09-10&lt;/h2&gt;
&lt;p&gt;跑步跑步。&lt;/p&gt;
&lt;p&gt;又忍不住吐槽，long-covid难道不是精神后遗症？&lt;/p&gt;
&lt;h2 id="2022-09-11"&gt;2022-09-11&lt;/h2&gt;
&lt;p&gt;《脱口秀大会5》意外更新，从无事到有事。&lt;/p&gt;
&lt;h2 id="2022-09-12"&gt;2022-09-12&lt;/h2&gt;
&lt;p&gt;超级失眠，于是把《底牌》读完了。&lt;/p&gt;
&lt;p&gt;早上十点睡到一点起床吃饭，今天再怎么困也得撑着，睡眠只能靠自己守护。&lt;/p&gt;
&lt;p&gt;多一点蓝天，少一点蓝光。&lt;/p&gt;
&lt;h2 id="2022-09-13"&gt;2022-09-13&lt;/h2&gt;
&lt;p&gt;本来不是很想起床，但骑行卡最后一天还剩两次，还是选择去小跑几圈。&lt;/p&gt;
&lt;p&gt;果然早起对大部分人来说都是困难的，我还是做个暗属性的人类吧。&lt;/p&gt;
&lt;p&gt;天气难得的干燥，茶包从杯子里拎出来放一会儿，竟然干了，发硬。&lt;/p&gt;
&lt;p&gt;今天的学习工作还算顺利，至少井然有序地进行着。&lt;/p&gt;
&lt;h2 id="2022-09-14"&gt;2022-09-14&lt;/h2&gt;
&lt;p&gt;失眠。四点多起床后就没再睡着，不过至少睡了四小时。&lt;/p&gt;
&lt;p&gt;上午看着电脑，眼睛有点流泪，找来眼镜戴上。&lt;/p&gt;
&lt;p&gt;周三是不错的休息日（候选日），有综艺更新，娱乐事项比较确定。&lt;/p&gt;
&lt;p&gt;失眠的话，就把今天当作休息日处理，不放松好像也无事可做。在家找电视看，点开《飞狐外传》后，我悟了——永远可以相信金庸，永远可以相信武侠。&lt;/p&gt;
&lt;h2 id="2022-09-16"&gt;2022-09-16&lt;/h2&gt;
&lt;p&gt;羡慕小周，划水毕业。在我看来，他就是那种很幸运的人。虽然也经常自扰，但最后结果总是比较如意。考研，奖学金，作为党员，毕业论文等。按这势头，预言毕业后考个公务员，当个辅导员应该问题不大，不然也能有个无编教师苟一苟。&lt;/p&gt;
&lt;p&gt;今天也是眼睛很涩，需要补觉的一天。好像这个生物钟已经调好固定下来了，但我的身体并不接受。&lt;/p&gt;
&lt;p&gt;两年前便是科研的情怀，才头铁又考个硕士来念。早就知道生态不好，但如今“环境还能再差吗”的毒奶应验，令我身心交瘁。&lt;/p&gt;
&lt;p&gt;晚上再次研究所谓的“局部密度”模型，一度怀疑自己的理解，最后在一个随意的移动测试看到了希望，收工。&lt;/p&gt;
&lt;h2 id="2022-09-18"&gt;2022-09-18&lt;/h2&gt;
&lt;p&gt;模型一运行，感觉毕业论文的框架已经跃然纸上。&lt;/p&gt;
&lt;p&gt;魔幻2022，一场车祸又补充了一段精彩剧情。直到晚上，贵阳的涉疫人员转运工作还没被暂停整改，仍有一群人被要求“上车”。幸好他们是拒绝的。&lt;/p&gt;
&lt;p&gt;刷到了开学的风声，终于打算让学生返校了吗？并没有想象中焦虑。可能潜意识其实已经接受了该去一趟的现实。结果是 —— 自愿返校。我自然没把自己当作该批返校的学生，导师也没强求到校工作。&lt;/p&gt;
&lt;h2 id="2022-09-20"&gt;2022-09-20&lt;/h2&gt;
&lt;p&gt;开始研究进展的survey，搜到的硕博论文不多，根据参考文献下载了一些，也拿表格列了一些，似乎能摸到的方向。换关键词后硕博论文数量变多了不少，又日常质疑导师对研究方向的了解情况——“这个领域文章不多”，可能说的是多少年前的事了吧。收藏了一些，让同学帮忙下载了两篇，饭后浏览。&lt;/p&gt;
&lt;p&gt;一天的有效工作时间不长 —— 有时候上午睡得着觉，便不起来了；下午则因为家里有人在，总有被监视的感觉（从小的习惯），学习体验一般；意外的是晚上竟然可以投入多达两小时的时间，需要一点自律，还得承受用眼过度的疲劳不适。&lt;/p&gt;
&lt;p&gt;晚上看了《沼泽地里的女孩》，狠狠当了一次原著党。虽然电影情节完整，但故事没那么丰满了。&lt;/p&gt;
&lt;p&gt;今天倒在读书的十几分钟内又想了一些类似“生命起源”的无聊事情 —— 最后总结为一组押韵的反义词：直抒胸臆对阴阳怪气。&lt;/p&gt;
&lt;h2 id="2022-09-21"&gt;2022-09-21&lt;/h2&gt;
&lt;p&gt;睡眠质量又很差，具体表现为每两个小时会醒过来一次，要么就是醒来之后很难睡着，有时早上六点左右恢复意识，明明才睡了三四个小时，却得等到上午九点十点左右才会有困意。干脆作为休息日的一天，因为早上眼睛难受得不行，症状倒是和小时候很像，时隔多年又在镜子前扒拉眼皮。&lt;/p&gt;
&lt;p&gt;下午补觉的时候，在梦里“表演”心算36的平方，醒来后又算了一遍，校对一下答案。第一遍算的是81乘以16，第二遍算的是144乘以9。然后觉得合数计算过于简单，又心算了一遍37×37=900+420+49。&lt;/p&gt;</description></item><item><title>超长夏日（Long Summer）</title><link>https://touchingfish.top/2022/long-long-summer/</link><pubDate>Sat, 27 Aug 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/long-long-summer/</guid><description>&lt;p&gt;提前放假。&lt;/p&gt;
&lt;h2 id="一"&gt;一&lt;/h2&gt;
&lt;p&gt;七月以来保持每天一小时左右的阅读。自那日回家后，天气就一直在下雨。双台风，但又很家常便饭了。奇怪的是家里并没有因为下雨感到凉快一些，反而晚上没开空调前更觉得有些闷热。&lt;/p&gt;
&lt;p&gt;今天开始感到在家工作的不自在。一是会有“客人”，二是没有专门的“工位”。&lt;/p&gt;
&lt;p&gt;不过这两天倒是都能抽出几个小时，先把课程论文都写完，还有口语视频的素材。经过两天的努力，又把&lt;a href="../../2020/angel-passing-by/"&gt;“天使飞过”&lt;/a&gt;的那篇作文更新了一遍，可读性也强了不少，想当作R语言课程的期末作业交了。&lt;/p&gt;
&lt;p&gt;线上考试水得很，平板没有亮屏，和黑色桌面融为一体。镜头拍不到，但凡想作弊，完全没难度。答题期间的电脑录屏了也不用交，真是搞笑。&lt;/p&gt;
&lt;h2 id="二"&gt;二&lt;/h2&gt;
&lt;p&gt;假期最重要的事情当然是拟出开题框架。把放假前收藏地文献读了读，能获得的数据还挺多，但要这些数据何用倒是个问题。&lt;/p&gt;
&lt;p&gt;好不容易搞明白了&lt;a href="../../2022/scm-is-a-causal-hypothesis/"&gt;Donald的“biodiversity is not causal”&lt;/a&gt;，又刚好没有能用的性状和生态功能数据。今天又搜了搜BEF，真是有被生态学不成体系的理论模糊到，定义如此不明确的变量，潜在结果怎么可能做到well-defined。大部分看到的文章都在用scm，以为“好起来了，上天眷顾”。眼看直接用常见的causal discovery logarithm（PC或FCI）给数据来一遍好像确实舒服得多，但手头又没有能处理和尝试的小数据。结果就是想得整个人有点高血压。&lt;/p&gt;
&lt;p&gt;再看看那些复杂科学视角的文章，新颖又有趣，把生态系统的故事讲得真是漂亮！只是看起来不太“统计学”。信息论和因果涌现看起来可太有兴趣了。我根本不想思考什么森林和生物量的问题，一开始就是想改良统计方法，最后来个生物学或生态学的例子看看效果，如今感觉被带上了歪路。晚些打开《海洋生态学》再读了一章，把头疼都读好了，如果能够重回海洋生物的主题，也许能够更有动力解决，也不至于像现在，到晚上根本不敢想关于研究的内容，怕又在睡觉做梦时还疯狂地无效头脑风暴。&lt;/p&gt;
&lt;h2 id="三"&gt;三&lt;/h2&gt;
&lt;p&gt;凭借昨日的失眠，换来一个体验较好的懒觉。一天还是想睡够八到十小时才满足，所以以后可能得找个不用在路上花太多时间的工作。&lt;/p&gt;
&lt;p&gt;虽然不知道活着干啥，但生活对我好像很重要。总是待在家里，回忆点太少了。&lt;/p&gt;
&lt;p&gt;看肥皂剧 —— 后疫情爆发时代，好像越来越多人关注心理问题，每部剧也都至少拥有一位精神障碍担当。留意到这些现象本身就是一种进步了，但观众老爷还是贪得无厌地希望看到更多有深度的解剖。其实电视剧的题材如此多元，定位不同自然应该从不同的角度来评价一部影视作品的好坏。于是我在刷评论选片看的时候通常是很主观的，所以也不爱打分。&lt;/p&gt;
&lt;p&gt;晚上去打球，据说这几位朋友和朋友的朋友们都是00后，球风果然相当“年轻化”。人就是这样奇怪的生物，也许自己中学的时候也是球场上其他大哥眼里的“牛鬼蛇神”。还没出门的时候就想过 —— 无论如何不要受伤，安全第一。明天还要坐动车。越畏越对（方言版“怕什么，来什么”）。抢篮板的时候，被一位185cm的竹竿兄拦腰顶飞，整个人拱到空中，失去控制，身体跟地面平行，自由落体……大家都说摔得挺响，我爬起来后倒是觉得问题不大，没感到哪里有难忍的剧痛，心里窃喜：幸好不是崴脚。出于之前受伤总是先小伤再大伤的前车之鉴，以及明天还有出行计划的考虑，这次倒是直接选择暂时退出比赛。的确，这是好几年来，在球场上最刺激的一次对抗体验，久违的失衡。复盘一下刚才落地的过程，靠手肘的缓冲，只有肘部，小臂和胯骨有点不适，再有可能就是内脏经历了一番振荡而已了。整套技术动作感觉还是相当流畅，救我一条“小命”。&lt;/p&gt;
&lt;p&gt;终于睡了几天好觉，没有半夜满脑子“科学问题”但毫无逻辑的思考。前段时间压力颇大，近日才开始入夜不学习的时间安排。&lt;/p&gt;
&lt;h2 id="插曲"&gt;插曲&lt;/h2&gt;
&lt;p&gt;（2022-08-02）已经有段时间没有留意两岸关系。这一次，昨天根本不知道还有这么有趣的瓜吃。有意思的是，被消费了两年的热情，竟然还有那么多人在意这次的结果。大概率又是雷声大雨点小。我的心态倒是有点像一些“岛内群众”。可能是对国家的太有信心了，特别是“定力”这一方面。一次跟舍友们吹牛逼的机会倒是很值得珍惜。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;从前对未知的兴奋，到对未知的恐惧，再到对未知且不可知的不安。&lt;/em&gt;&lt;/p&gt;</description></item><item><title>当混淆因素隐匿于幕后</title><link>https://touchingfish.top/2022/unobserved-confounding/</link><pubDate>Mon, 27 Jun 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/unobserved-confounding/</guid><description>&lt;h2 id="基本问题"&gt;基本问题&lt;/h2&gt;
&lt;p&gt;所谓混淆因素，指的是与处理（treatment）及结果（outcome）皆有联系之变量。若不予控制，易致偏差，令我们所得结论非因果关系之实，乃混淆所致之假象。然而，倘若混淆因素不可观测（unobserved confounding），我们又该如何在未知中求解因果？&lt;/p&gt;
&lt;p&gt;&lt;img src="UnobservedConfound.svg" alt=""&gt;&lt;/p&gt;
&lt;h2 id="界限估计"&gt;界限估计&lt;/h2&gt;
&lt;p&gt;当我们不能妄断“unconfoundedness”的条件成立，则需要借助弱假设，推导出因果效应的区间（interval）估计。这类方法一般依赖部分识别（partial identification）之思想，亦即在无法完全排除混淆时，通过宽泛但合理的假设，限定因果效应的可能范围。&lt;/p&gt;
&lt;p&gt;如 Bounding methods 并不假设完全无混淆（unconfoundedness），而是假设混淆的影响在某特定范围内。借此，我们可以得出一个因果效应的上下界，而非唯一值之估计。这种思路可以在不严苛的假设之下，仍提供有意义的推断。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“The Law of Decreasing Credibility: the credibility of inference decreases with the strength of the assumptions maintained.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="no-assumptions-bound"&gt;No-Assumptions Bound&lt;/h3&gt;
&lt;p&gt;对二元（binary）之个体处理效应（ITE）而言，其最大值和最小值为&lt;/p&gt;
$$
-1 \leq Y_i(1)-Y_i(0) \leq 1 \qquad \text{if } \forall t,0 \leq Y(t) \leq 1
$$&lt;p&gt;故平均处理效应（ATE）之区间长度也都在 $2$ 之内。&lt;/p&gt;
&lt;p&gt;在无需任何假设的条件下，较之 ITE，ATE 的区间长度可减半，即 ATE 将落于长度为 $1$ 的区间内。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ASSUMPTION&lt;/strong&gt; Bounder Potential Outcomes&lt;/p&gt;
$$
\forall t,a \leq Y(t) \leq b
$$&lt;p&gt;根据该假设，易得&lt;/p&gt;
$$
\begin{aligned}
a-b \leq Y_i(1)-Y_i(0) \leq b-a
\\\
a-b \leq \Bbb{E}[Y_i(1)-Y_i(0)] \leq b-a
\end{aligned}
$$&lt;p&gt;ITE 的区间长度为 $(b-a)-(a-b)=2(b-a)$.&lt;/p&gt;</description></item><item><title>天使飞过 / Angel Passing By</title><link>https://touchingfish.top/application/an_anagel_passed_by/</link><pubDate>Sun, 15 May 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/application/an_anagel_passed_by/</guid><description>&lt;div class="simulation-container"&gt;
 &lt;div class="language-switcher"&gt;
 &lt;button id="langCn" class="lang-btn active"&gt;中文&lt;/button&gt;
 &lt;button id="langEn" class="lang-btn"&gt;English&lt;/button&gt;
 &lt;/div&gt;

 &lt;div class="language-content cn"&gt;
 &lt;h2&gt;天使飞过：无监管课堂的"自发静默"现象&lt;/h2&gt;
 &lt;p&gt;这个模拟展示了课堂上的一个有趣现象：即使没有老师在场，学生们有时也会不约而同地突然安静下来。&lt;/p&gt;
 &lt;p&gt;这是复杂系统中"涌现"现象的体现——当课堂音量降低到一定程度时，会触发连锁的"冻结反应"，让教室在极短时间内趋于寂静。&lt;/p&gt;
 &lt;/div&gt;

 &lt;div class="language-content en" style="display: none;"&gt;
 &lt;h2&gt;Angel Passing By: Spontaneous Silence in Unsupervised Classrooms&lt;/h2&gt;
 &lt;p&gt;This simulation demonstrates an interesting classroom phenomenon: students sometimes suddenly fall silent simultaneously, even without a teacher present.&lt;/p&gt;
 &lt;p&gt;This is an example of "emergence" in complex systems - when the classroom volume drops below a certain threshold, it triggers a chain reaction of "freeze responses," silencing the room in moments.&lt;/p&gt;
 &lt;/div&gt;

 &lt;div class="canvas-wrapper"&gt;
 &lt;canvas id="classroomCanvas" width="350" height="350"&gt;&lt;/canvas&gt;
 &lt;/div&gt;

 &lt;div class="legend"&gt;
 &lt;div class="legend-item"&gt;
 &lt;span class="legend-color speaking"&gt;&lt;/span&gt;
 &lt;span id="legendSpeakingCn"&gt;发言中&lt;/span&gt;
 &lt;span id="legendSpeakingEn" style="display: none;"&gt;Speaking&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="legend-item"&gt;
 &lt;span class="legend-color listening"&gt;&lt;/span&gt;
 &lt;span id="legendListeningCn"&gt;倾听中&lt;/span&gt;
 &lt;span id="legendListeningEn" style="display: none;"&gt;Listening&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="legend-item"&gt;
 &lt;span class="legend-color silent"&gt;&lt;/span&gt;
 &lt;span id="legendSilentCn"&gt;静默中&lt;/span&gt;
 &lt;span id="legendSilentEn" style="display: none;"&gt;Silent&lt;/span&gt;
 &lt;/div&gt;
 &lt;/div&gt;

 &lt;div class="controls"&gt;
 &lt;button id="startButton" class="control-btn"&gt;
 &lt;span id="btnStartCn"&gt;开始&lt;/span&gt;
 &lt;span id="btnStartEn" style="display: none;"&gt;Start&lt;/span&gt;
 &lt;/button&gt;
 &lt;button id="resetButton" class="control-btn secondary"&gt;
 &lt;span id="btnResetCn"&gt;重置&lt;/span&gt;
 &lt;span id="btnResetEn" style="display: none;"&gt;Reset&lt;/span&gt;
 &lt;/button&gt;
 &lt;/div&gt;

 &lt;div id="info" class="info-panel"&gt;
 &lt;span id="infoTimeCn"&gt;当前时间: 0.0s&lt;/span&gt;
 &lt;span id="infoTimeEn" style="display: none;"&gt;Current Time: 0.0s&lt;/span&gt;
 | 
 &lt;span id="infoSpeakingCn"&gt;发言人数: 0&lt;/span&gt;
 &lt;span id="infoSpeakingEn" style="display: none;"&gt;Speaking Students: 0&lt;/span&gt;
 &lt;/div&gt;

 &lt;div class="language-content cn"&gt;
 &lt;br&gt;
 &lt;h3&gt;说明&lt;/h3&gt;
 &lt;ul&gt;
 &lt;li&gt;点击"开始"按钮启动模拟&lt;/li&gt;
 &lt;li&gt;点击"暂停"可以暂停模拟&lt;/li&gt;
 &lt;li&gt;双击"开始"或点击"重置"来重新开始&lt;/li&gt;
 &lt;li&gt;观察班级何时会进入自发静默状态&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

 &lt;div class="language-content en" style="display: none;"&gt;
 &lt;h3&gt;Instructions&lt;/h3&gt;
 &lt;ul&gt;
 &lt;li&gt;Click "Start" to begin the simulation&lt;/li&gt;
 &lt;li&gt;Click "Pause" to pause the simulation&lt;/li&gt;
 &lt;li&gt;Double-click "Start" or click "Reset" to restart&lt;/li&gt;
 &lt;li&gt;Watch for when the class enters spontaneous silence&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;style&gt;
 .simulation-container {
 max-width: 800px;
 margin: 0 auto;
 padding: 20px;
 background: var(--surface-1);
 border-radius: 12px;
 box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
 }

 .language-switcher {
 display: flex;
 justify-content: flex-end;
 margin-bottom: 20px;
 gap: 10px;
 }

 .lang-btn {
 padding: 8px 16px;
 border: 2px solid var(--primary);
 background: transparent;
 color: var(--primary);
 border-radius: 6px;
 cursor: pointer;
 font-size: 14px;
 transition: all 0.3s ease;
 }

 .lang-btn:hover {
 background: var(--surface-2);
 }

 .lang-btn.active {
 background: var(--primary);
 color: var(--background);
 }

 .language-content h2,
 .language-content h3 {
 color: var(--primary);
 border-bottom: none;
 margin-top: 0;
 }

 .canvas-wrapper {
 display: flex;
 justify-content: center;
 margin: 30px 0;
 }

 canvas {
 border: 3px solid var(--surface-3);
 border-radius: 8px;
 background-color: var(--surface-2);
 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
 }

 .legend {
 display: flex;
 justify-content: center;
 gap: 30px;
 margin: 20px 0;
 }

 .legend-item {
 display: flex;
 align-items: center;
 gap: 8px;
 color: var(--text);
 }

 .legend-color {
 width: 24px;
 height: 24px;
 border-radius: 4px;
 border: 2px solid var(--surface-3);
 }

 .legend-color.speaking {
 background-color: var(--primary);
 }

 .legend-color.listening {
 background-color: var(--danger);
 }

 .legend-color.silent {
 background-color: var(--surface-3);
 }

 .controls {
 display: flex;
 justify-content: center;
 gap: 15px;
 margin: 25px 0;
 }

 .control-btn {
 padding: 12px 32px;
 font-size: 16px;
 cursor: pointer;
 background-color: var(--primary);
 color: var(--background);
 border: none;
 border-radius: 8px;
 font-weight: 600;
 transition: all 0.3s ease;
 box-shadow: 0 2px 8px rgba(34, 211, 238, 0.3);
 }

 .control-btn:hover {
 background-color: var(--link-visited);
 transform: translateY(-2px);
 box-shadow: 0 4px 12px rgba(167, 139, 250, 0.4);
 }

 .control-btn.secondary {
 background-color: var(--surface-2);
 color: var(--text);
 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
 }

 .control-btn.secondary:hover {
 background-color: var(--surface-3);
 }

 .info-panel {
 text-align: center;
 padding: 15px;
 background: var(--surface-2);
 border-radius: 8px;
 color: var(--text-dim);
 font-size: 16px;
 margin-top: 20px;
 }

 .language-content ul {
 color: var(--text);
 }

 .language-content li {
 margin: 8px 0;
 }
&lt;/style&gt;

&lt;script&gt;
 const canvas = document.getElementById('classroomCanvas');
 const ctx = canvas.getContext('2d');
 const startButton = document.getElementById('startButton');
 const resetButton = document.getElementById('resetButton');
 const infoDiv = document.getElementById('info');

 const GRID_SIZE = 7;
 const CELL_SIZE = canvas.width / GRID_SIZE;
 const NUM_STUDENTS = GRID_SIZE * GRID_SIZE;

 let studentsStates = [];
 let mentalShadows = [];
 let currentVolume = 0;
 let timestep = 0;
 let animationFrameId;
 let simulationRunning = -1;

 const maxTimestep = 18000;
 const speakingColor = '#22D3EE';
 const listeningColor = '#EF4444';
 const silentColor = '#475569';

 let currentLang = 'cn';

 const langCnBtn = document.getElementById('langCn');
 const langEnBtn = document.getElementById('langEn');
 const contentsCn = document.querySelectorAll('.language-content.cn');
 const contentsEn = document.querySelectorAll('.language-content.en');
 const legendSpeakingCn = document.getElementById('legendSpeakingCn');
 const legendSpeakingEn = document.getElementById('legendSpeakingEn');
 const legendListeningCn = document.getElementById('legendListeningCn');
 const legendListeningEn = document.getElementById('legendListeningEn');
 const legendSilentCn = document.getElementById('legendSilentCn');
 const legendSilentEn = document.getElementById('legendSilentEn');
 const btnStartCn = document.getElementById('btnStartCn');
 const btnStartEn = document.getElementById('btnStartEn');
 const btnResetCn = document.getElementById('btnResetCn');
 const btnResetEn = document.getElementById('btnResetEn');
 const infoTimeCn = document.getElementById('infoTimeCn');
 const infoTimeEn = document.getElementById('infoTimeEn');
 const infoSpeakingCn = document.getElementById('infoSpeakingCn');
 const infoSpeakingEn = document.getElementById('infoSpeakingEn');

 function switchLanguage(lang) {
 currentLang = lang;
 
 if (lang === 'cn') {
 langCnBtn.classList.add('active');
 langEnBtn.classList.remove('active');
 contentsCn.forEach(el =&gt; el.style.display = 'block');
 contentsEn.forEach(el =&gt; el.style.display = 'none');
 legendSpeakingCn.style.display = 'inline';
 legendSpeakingEn.style.display = 'none';
 legendListeningCn.style.display = 'inline';
 legendListeningEn.style.display = 'none';
 legendSilentCn.style.display = 'inline';
 legendSilentEn.style.display = 'none';
 btnStartCn.style.display = 'inline';
 btnStartEn.style.display = 'none';
 btnResetCn.style.display = 'inline';
 btnResetEn.style.display = 'none';
 infoTimeCn.style.display = 'inline';
 infoTimeEn.style.display = 'none';
 infoSpeakingCn.style.display = 'inline';
 infoSpeakingEn.style.display = 'none';
 } else {
 langEnBtn.classList.add('active');
 langCnBtn.classList.remove('active');
 contentsCn.forEach(el =&gt; el.style.display = 'none');
 contentsEn.forEach(el =&gt; el.style.display = 'block');
 legendSpeakingCn.style.display = 'none';
 legendSpeakingEn.style.display = 'inline';
 legendListeningCn.style.display = 'none';
 legendListeningEn.style.display = 'inline';
 legendSilentCn.style.display = 'none';
 legendSilentEn.style.display = 'inline';
 btnStartCn.style.display = 'none';
 btnStartEn.style.display = 'inline';
 btnResetCn.style.display = 'none';
 btnResetEn.style.display = 'inline';
 infoTimeCn.style.display = 'none';
 infoTimeEn.style.display = 'inline';
 infoSpeakingCn.style.display = 'none';
 infoSpeakingEn.style.display = 'inline';
 }
 }

 langCnBtn.addEventListener('click', () =&gt; switchLanguage('cn'));
 langEnBtn.addEventListener('click', () =&gt; switchLanguage('en'));

 function initializeSimulation() {
 studentsStates = Array.from({ length: NUM_STUDENTS }, () =&gt; Math.round(Math.random() * 200) - 100);
 mentalShadows = Array.from({ length: NUM_STUDENTS }, () =&gt; Math.round(Math.random() * 7) + 12); 
 timestep = 0;
 currentVolume = 0;
 updateVolume();
 drawGrid();
 updateInfo();
 }

 function updateVolume() {
 currentVolume = studentsStates.filter(state =&gt; state &gt; 0).length;
 }

 function drawGrid() {
 ctx.clearRect(0, 0, canvas.width, canvas.height);

 for (let i = 0; i &lt; NUM_STUDENTS; i++) {
 const row = Math.floor(i / GRID_SIZE);
 const col = i % GRID_SIZE;
 const x = col * CELL_SIZE;
 const y = row * CELL_SIZE;

 let color;
 if (studentsStates[i] &gt; 0) {
 color = speakingColor;
 } else if (studentsStates[i] &lt; 0) {
 color = listeningColor;
 } else {
 color = silentColor;
 }

 ctx.fillStyle = color;
 ctx.fillRect(x + 1, y + 1, CELL_SIZE - 2, CELL_SIZE - 2);
 ctx.strokeStyle = '#334155';
 ctx.lineWidth = 1;
 ctx.strokeRect(x, y, CELL_SIZE, CELL_SIZE);
 }
 }

 function updateInfo() {
 const currentTime = (timestep * 0.1).toFixed(1);
 if (currentLang === 'cn') {
 infoTimeCn.textContent = `当前时间: ${currentTime}s`;
 infoSpeakingCn.textContent = `发言人数: ${currentVolume}`;
 } else {
 infoTimeEn.textContent = `Current Time: ${currentTime}s`;
 infoSpeakingEn.textContent = `Speaking Students: ${currentVolume}`;
 }
 }

 function simulateStep() {
 if (currentVolume === 0 || timestep &gt;= maxTimestep) {
 console.log("Simulation ended.");
 simulationRunning = -1;
 updateButtonText();
 }
 
 if (simulationRunning &lt; 1) {
 cancelAnimationFrame(animationFrameId);
 return;
 }

 const nextStates = [...studentsStates];

 for (let i = 0; i &lt; NUM_STUDENTS; i++) {
 if (currentVolume &lt; mentalShadows[i]) {
 nextStates[i] = -10;
 } else {
 if (studentsStates[i] === 0) {
 nextStates[i] = Math.round(Math.random() * 200) - 100;
 } else if (studentsStates[i] &gt; 0) {
 nextStates[i]--;
 } else {
 nextStates[i]++;
 }
 }
 }
 studentsStates = nextStates;
 updateVolume();
 drawGrid();

 timestep++;
 updateInfo();

 if (simulationRunning === 1) {
 animationFrameId = requestAnimationFrame(simulateStep);
 }
 }

 function updateButtonText() {
 if (currentLang === 'cn') {
 if (simulationRunning &lt; 0) {
 btnStartCn.textContent = '开始';
 } else if (simulationRunning === 0) {
 btnStartCn.textContent = '继续';
 } else {
 btnStartCn.textContent = '暂停';
 }
 } else {
 if (simulationRunning &lt; 0) {
 btnStartEn.textContent = 'Start';
 } else if (simulationRunning === 0) {
 btnStartEn.textContent = 'Resume';
 } else {
 btnStartEn.textContent = 'Pause';
 }
 }
 }

 startButton.addEventListener('click', () =&gt; {
 if (simulationRunning &lt; 0) {
 initializeSimulation();
 simulationRunning = 1;
 simulateStep();
 updateButtonText();
 } else if (simulationRunning === 0) {
 simulationRunning = 1;
 simulateStep();
 updateButtonText();
 } else {
 simulationRunning = 0;
 updateButtonText();
 }
 });
 
 startButton.addEventListener('dblclick', () =&gt; {
 console.log("Simulation restarted.");
 initializeSimulation();
 simulationRunning = 1;
 simulateStep();
 updateButtonText();
 });

 resetButton.addEventListener('click', () =&gt; {
 initializeSimulation();
 simulationRunning = 1;
 simulateStep();
 updateButtonText();
 });

 initializeSimulation();
&lt;/script&gt;</description></item><item><title>春困去哪儿了（Spring Lethargy）</title><link>https://touchingfish.top/2022/spring-lethargy/</link><pubDate>Thu, 28 Apr 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/spring-lethargy/</guid><description>&lt;h2 id="2022-03-01"&gt;2022-03-01&lt;/h2&gt;
&lt;p&gt;虽然说要接受自己的失眠，但每天四点多才睡着也不太合适吧。&lt;/p&gt;
&lt;h2 id="2022-03-02"&gt;2022-03-02&lt;/h2&gt;
&lt;p&gt;没有一次航班正常准时起飞。去合肥的登机队伍排得很长，我像以前坐动车检票一样，不急不缓地等到排队的人少些后，站在最后一个。找座位的时候，第一次感到经济舱是这么挤。每个位置好像都坐上了人，但通道还是拥满了像我一样的乘客。还在担心自己的座位靠窗，需要麻烦邻座给我让一让时，看到我的那排位置上竟然一个人也还没到，颇为满意。起飞的时候更是发现原来旁边空着一个座位，有点沾沾自喜。直到我闻见一股异味……&lt;/p&gt;
&lt;h2 id="2022-03-06"&gt;2022-03-06&lt;/h2&gt;
&lt;p&gt;最近的生活记忆并不能靠手机还原，所以写日记成为了有必要的选择。天气没那么冷了，但还是打退堂鼓没有跑步。&lt;/p&gt;
&lt;p&gt;（一个生活小技巧，微信和支付宝账单能帮你回忆起每天在做什么。）&lt;/p&gt;
&lt;h2 id="2022-03-12"&gt;2022-03-12&lt;/h2&gt;
&lt;p&gt;很长时间难以面对自己荒废的学业，加上恩师对我的期待，没有勇气告知他自己的近况。过去一年的重新出发，再次正视自己的选择后，却好像再也联系不上程老师了：跟元旦节的微信问候一样，过年的邮件也没有回复。在听路人抓马的失眠夜晚，从悠总和川总的声音中，开始逐渐感受到了融入社会也能发现生活点滴中的美好，于是有在反思自己的科研之路还要走多远。&lt;/p&gt;
&lt;p&gt;在朋友圈看到当年在我校这种辣鸡本科都差点毕不了业的师弟，亮出了英联邦高等学校硕士项目录取通知书。虽然知道是钞能力，但是眼红。&lt;/p&gt;
&lt;p&gt;我有两位读博的朋友，虽然不像师弟&amp;quot;不学无术&amp;quot;（我不确定可以这样形容），家里的支持和底气算是他们的共同点吧。&lt;/p&gt;
&lt;p&gt;网络越来越擅长制造焦虑。有一些人，可能就是用收集offer来表达他们热爱生活、追求梦想的方式。不管是知道自己该做什么，还是别人替他想好了去做什么，都在朝着更好的方向发展。&lt;/p&gt;
&lt;p&gt;我想自己有时候太过纠结于是否deserve的问题，如果把只把这当作个人的标准，或许就能够过得更开心？&lt;/p&gt;
&lt;p&gt;生活的学术也很精彩，我现在似乎更想在完成这个学位以后，具备的是研究&amp;quot;生活&amp;quot;的能力。最近的做事方式太过功利，想要确定一些所谓的目标以高效地做事，但身体很聪明，已经提醒我该休息了。&lt;/p&gt;
&lt;h2 id="2022-03-15"&gt;2022-03-15&lt;/h2&gt;
&lt;p&gt;终于也感觉到了政治病毒就在身边。&lt;/p&gt;
&lt;p&gt;三月十三日，入校以来第三次被核酸。无伤大雅。毕竟昨天刚刚有一批参加教师资格证考试的同学们回到学校。除了二百米长队，等了大半个小时以外，没什么好吐槽的。&lt;/p&gt;
&lt;p&gt;晚些便看到沈市全面核酸排查的消息，对今天这次全校核酸早有心理准备。昨晚加急的线上会议，宣布了学校封闭管理的消息，对我这样除了吃饭洗澡，只会出现在宿舍和自习室的人，实际上影响不大。开学前便想到了会有一段时间，至少出入校不会很方便，也就什么去街上闲逛的念头。&lt;/p&gt;
&lt;p&gt;但天生的敏感让我完全能够察觉到今天会发生的事情 —— 研究生的所有线下活动（包括工作）被叫停了，对做实验的同学来说可能不是好消息。&lt;/p&gt;
&lt;p&gt;对我而言，只是换个地方读书看文献，写代码。唯一不适的，可能就是宿舍的卫生问题了。我不觉得寝室的同学不爱干净，倒是卫生间的恶臭确实难忍。直到来这上学前，我以为不冲厕所和会在楼道随地吐痰的人是很少见的。没想到被这些不知道对方姓名的双一流研究生朋友恶心到了。呕。&lt;/p&gt;
&lt;h2 id="2022-03-23"&gt;2022-03-23&lt;/h2&gt;
&lt;p&gt;封闭管理一周。&lt;/p&gt;
&lt;p&gt;前天，一架飞机直冲地面。&lt;/p&gt;
&lt;h2 id="2022-04-07"&gt;2022-04-07&lt;/h2&gt;
&lt;p&gt;不记录一些事情，容易忘记lockdown的生活。&lt;/p&gt;
&lt;p&gt;今天是第一次上、下午都好好地把网课听了。&lt;/p&gt;
&lt;p&gt;没想到学院还有老师在研究文物修复的生物化学，倒不是觉得有什么稀奇，但不内卷的方向以及能和省图省博打交道对我来说确实很有吸引力。&lt;/p&gt;
&lt;p&gt;又是一次全员核酸，在体验过了各个时段下楼排队之后，已经逐渐习惯这种生活，掌握了一些速战速决的排队小技巧。&lt;/p&gt;
&lt;p&gt;因为研究生调剂考生复试，今天的课暂停了，不用准备两个课一起上。（是的，为了学分，我在同一时间有另一门选修课）&lt;/p&gt;
&lt;p&gt;认真听毕老师讲《论语》，大家都被不知自己没有闭麦的&amp;quot;小程序用户&amp;quot;吵到，还好她是匿名听课，不然免不了被阴阳怪气到社死。&lt;/p&gt;
&lt;p&gt;本想下楼练练球，投篮养生，没想到一下场就跟别人打起比赛来了。难得的实力相当，可以尽兴的机会，早知道该把秋裤脱了，换上球鞋（而不是跑鞋）。太快伤到手指，以及迟迟未能找到球感，只能是不尽人意。&lt;/p&gt;
&lt;h2 id="2022-04-12"&gt;2022-04-12&lt;/h2&gt;
&lt;p&gt;当我想要分享那篇&amp;quot;来路未明&amp;quot;的通讯文章时，搜遍了两位发过相关内容的博的主页，发现已经被从服务器中删除了吧，甚至没有留下和谐后的遗产（违规or谣言），而是完完全全像没发出来过一般。&lt;/p&gt;
&lt;p&gt;我刷着推特上那些好的坏的言论，到底哪个是真实的上海？&lt;/p&gt;
&lt;p&gt;我想能看见事情都是存在的，不过是哪些被有意地放大而已。&lt;/p&gt;
&lt;p&gt;舆论是可怕的武器，心灵的创伤后知后觉。&lt;/p&gt;
&lt;p&gt;你会想起前年被封锁的江城让我们看到的人性光辉。自认为先进的文明判断失误了，错失控制住alpha的最佳时机后注定一发不可收拾。&lt;/p&gt;
&lt;p&gt;假如这一次科学不再跟我们站在同一边了，谁来尝傲慢的果实？&lt;/p&gt;
&lt;p&gt;不惜一切代价从来不会说明是谁的代价？或许有人正巴不得出现一个新的VOC来证明ZeroCovid policy是高明的。&lt;/p&gt;
&lt;p&gt;两年前，我们面对未知，心中却有希望的光。现在即使被告知：上下一心、一切都将过去，也仿佛置身能够打湿头发的浓雾里，一脚踏进难以抽出的泥沼。&lt;/p&gt;
&lt;p&gt;国家前所未有的分裂，小粉红给自己树立了一个假想敌，也是我也属于他们眼中的对立面。真正被洗脑的人，已经不愿意思考站在其他立场的人是否掌握了自己未知的信息。&lt;/p&gt;
&lt;p&gt;我也不敢肯定地说他们是在杞人忧天，与&amp;quot;生命&amp;quot;有关的问题从来就不是那么容易下定义。在眼前的证据和未来的不确定性中权衡。&lt;/p&gt;
&lt;h2 id="2022-04-28"&gt;2022-04-28&lt;/h2&gt;
&lt;p&gt;过年的时候，在推特看到刘小乐辞职进入了业界，我猜生物信息学应该是遇到了一些问题。&lt;/p&gt;
&lt;p&gt;2017年，组学分析在国内正火热，花钱测序就能出成果吸引了不少&amp;quot;需要被考核的研究人员&amp;quot;。那时，彪哥去了集美，学院承诺给程爷爷的实验室也不落实了，于是我也刚好在风口浪尖告别了湿实验。&lt;/p&gt;
&lt;p&gt;一年，两年，同种范式的文章越来越难发表。干湿结合成为主流，验证也不再局限于荧光定量，于是邯郸学步的教授们开始要求一些无关紧要的&amp;quot;工作量&amp;quot;，甚至只需要稍微考虑研究的问题就能有更好的实验设计。我意识到，能够很方便学会的技术都是过时的技术，即使还有人在用它完成考核和评审的指标。2019年，我逃跑了。&lt;/p&gt;
&lt;p&gt;我跟朋友说，若是回到研究生活，当然很难比得上科班出身的人。因为我会选择一切都从头开始，而不是跟之前一样&amp;quot;garbage in，garbage out&amp;quot;。又是两年，当时写的文章也见刊了。&lt;/p&gt;
&lt;p&gt;如果把生物学分为所谓的&amp;quot;古典&amp;quot;生物学和&amp;quot;现代&amp;quot;生物学的话，那我的技能点应该大多给到了后者。演化和分子生物学是如此迷人，几年前管中窥豹，至今仍对定量生物学时代会带来什么充满好奇。即使这些不是我现在的研究方向，也不影响保持对他们的关注，为迎接这场&amp;quot;理论生物信息学&amp;quot;革命而准备。&lt;/p&gt;
&lt;h1&gt;&lt;/h1&gt;
&lt;p&gt;总是在想 —— 不写日记的话，回头又怎么知道lockdown这段时间到底做了什么。&lt;/p&gt;
&lt;p&gt;前些天排队做核酸的时候，跟同学谈起封校的&amp;quot;学生生活&amp;quot;。本科的出入自由让我可以感觉到自己的忙碌。即使最后也不知道&amp;quot;忙&amp;quot;了什么，拿不出任何能够说明这段经历有意义的凭证，但也算是充实且值得回味。那些在校外才能见到的世面，如今可望不可即。&lt;/p&gt;
&lt;p&gt;最近听说假期提前，才开始想到要把暑期安排提上日程。无论是科研，实习，志愿服务，还是旅游和写博客，好像都没有头绪。然后发现那些看上去体面点的单位，早就进入发暑假实习offer的最后阶段。近日才开始准备的我有些手足无措，又因为身边没有朋友提醒我应该早做打算，不免感到有些失落。改完简历，看着自己去年写的许多&amp;quot;废话&amp;quot;，也换位思考了&amp;quot;面试官&amp;quot;（导师）在考虑候选人适不适合时，我的这些所谓经验到底是不是匹配呢？其实我对社会上常见的岗位兴趣不大。&lt;/p&gt;
&lt;p&gt;先不说能不能找到愿意接受一位大龄废材的老板，实际上，到时候疫情管控的规则如何都让我头大，也许回了家就是非必要不出市。在这是锁在学校，在汕头也好像被自己关起来一样，不过是空间大些而已。昨日，看到亚青会被取消的新闻，让我为家乡的未来又&amp;quot;无奈&amp;quot;了数分钟。&lt;/p&gt;
&lt;p&gt;动态清零政策下的lockdown，真的会让人不适。对我来说，最主要的日常 —— 学习、运动和娱乐都没有被耽误，自以为影响不大。直到近日，逐渐发觉这种PTSD如此潜移默化。突然便能够理解悠总和川总为何那么久没有更新播客了，住在上海很难不自闭吧。寒假的时候，我才刚刚开始从她们的对话里，体会到什么是热爱生活，从而开始有些向往生活的&amp;quot;学术&amp;quot;。原来我对这种感觉如此依赖 —— 我是如此不善于发现生活的美好，而且需要有人不断提点。&lt;/p&gt;</description></item><item><title>衡量因果推论之稳定性</title><link>https://touchingfish.top/2022/sensitivity-analysis/</link><pubDate>Wed, 27 Apr 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/sensitivity-analysis/</guid><description>&lt;p&gt;敏感性分析（sensitivity analysis）乃衡量因果推论之稳定性所用。当研究中存有不可观测混淆因素时，结论或受此影响而失真，敏感性分析可助吾等评估此种未知因素对估计因果效应之干扰程度。今撰此小文，略述其要义。&lt;/p&gt;
&lt;h2 id="基本原理"&gt;基本原理&lt;/h2&gt;
&lt;p&gt;敏感性分析旨在通过设定不同假想情境，量化未观测混淆之潜在影响。其核心在于引入两个参数：一为混淆因素对处理（treatment）的影响，二为混淆因素对结果（outcome）的影响。通过调整此等参数之值，吾辈可模拟不同程度之混淆，并观察因果效应估计之变化。&lt;/p&gt;
&lt;p&gt;若吾等发现某结论在较大范围之参数变动中仍保持稳健，则可对所得推断更有信心；反之，若结论在微小假设变化下便剧烈波动，则应审慎看待，或重新考虑所用之假设。&lt;/p&gt;
&lt;p&gt;举例而言，在一个线性模型中，考虑可观测的共因 $W$，和不可观测的共因 $U$：&lt;/p&gt;
$$
\begin{aligned}
T &amp;:= \alpha_w W + \alpha_u U\\\
Y &amp;:= \beta_w W + \beta_u U + \delta T
\end{aligned}
$$&lt;p&gt;其中，$\alpha_u$ 乃是混淆因素 $U$ 对处理 $T$ 的影响， $\beta_u$ 则为混淆因素 $U$ 对结果 $Y$ 的影响，$T$ 对 $Y$ 之因果效应表示为 $\delta$。&lt;/p&gt;
&lt;p&gt;由调整公式得&lt;/p&gt;
$$
\Bbb{E}[Y(1)-Y(0)]=\Bbb{E}_{W,U}\big[\Bbb{E}[Y|T=1,W,U]-\Bbb{E}[Y|T=0,W,U]\big]=\delta
$$&lt;p&gt;因 $U$ 不可观测，故我们只能对 $W$ 进行调整，混淆因素所致之偏差为 $\frac{\beta_u}{\alpha_u}$。&lt;/p&gt;
$$
\Bbb{E}_{W}\big[\Bbb{E}[Y|T=1,W]-\Bbb{E}[Y|T=0,W]\big]-\Bbb{E}_{W,U}\big[\Bbb{E}[Y|T=1,W,U]-\Bbb{E}[Y|T=0,W,U]\big]=\frac{\beta_u}{\alpha_u}
$$&lt;h2 id="证明"&gt;证明&lt;/h2&gt;
&lt;p&gt;据 $Y$ 与 $T$ 之结构方程，可推出 $\implies U=\frac{T-\alpha_w W}{\alpha_u}$，故有&lt;/p&gt;
$$
\begin{aligned}
\Bbb{E}_W\big[\Bbb{E}[Y|T=t,W]\big]
&amp;=\Bbb{E}_W\big[\Bbb{E}[\beta_w W + \beta_u U + \delta T|T=t,W]\big]
\\\
&amp;=\Bbb{E}_W\left[\beta_w W + \beta_u \Bbb{E}[U|T=t,W] + \delta t\right]
\\\
&amp;=\Bbb{E}_W\left[\beta_w W + \beta_u \left(\frac{t-\alpha_w W}{\alpha_u}\right) + \delta t\right]
\\\
&amp;=\Bbb{E}_W\left[\beta_w W + \frac{\beta_u}{\alpha_u}t - \frac{\beta_u\alpha_w}{\alpha_u}W + \delta t\right]
\\\
&amp;=\beta_w\Bbb{E}[W]+\frac{\beta_u}{\alpha_u}t - \frac{\beta_u\alpha_w}{\alpha_u}\Bbb{E}[W] + \delta t
\\\
&amp;=\left(\beta_w - \frac{\beta_u\alpha_w}{\alpha_u}\right)\Bbb{E}[W]+\left(\delta+\frac{\beta_u}{\alpha_u}\right) t
\end{aligned}
$$&lt;p&gt;若我们对 $W$ 进行调整时，根据上式来估计 ATE&lt;/p&gt;</description></item><item><title>孟德尔随机化的原理</title><link>https://touchingfish.top/2022/mendelian-randomization/</link><pubDate>Sun, 24 Apr 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/mendelian-randomization/</guid><description>&lt;p&gt;手冲咖啡的香气弥漫在狭小的房间里。&lt;/p&gt;
&lt;p&gt;窗外下着雨，和往常一样。我端着第二杯아아（冰美式简称，아이스 아메리카노，ice americano —— 一个无聊的冷知识），坐在电脑前，屏幕上是那篇用孟德尔随机化（Mendelian Randomization, MR）研究喝咖啡和抑郁症关系的论文&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。结论是：没关系。&lt;/p&gt;
&lt;p&gt;喝咖啡续命这件事，看来只是续命。&lt;/p&gt;
&lt;p&gt;这个结果令人有点失落。毕竟每天两杯美式，总想骗自己说这是在预防抑郁。&lt;/p&gt;
&lt;p&gt;去年的经济学奖把因果推论的地位又提升了一档，前几天刚啃完IV（Instrumental Variable, 工具变量法），再看这篇文章，清楚了许多，心境也已经不一样了。&lt;/p&gt;
&lt;h2 id="从一个问题开始"&gt;从一个问题开始&lt;/h2&gt;
&lt;p&gt;咖啡和抑郁没有关系。这句话本身没问题。&lt;/p&gt;
&lt;p&gt;问题在于：怎么证明？&lt;/p&gt;
&lt;p&gt;最直接的方法是比较喝咖啡的人和不喝咖啡的人，看谁的抑郁风险更高。&lt;/p&gt;
&lt;p&gt;但喝咖啡的人和不喝咖啡的人，能直接比较吗？恐怕不能。喝咖啡的人可能本来就生活规律、社交广泛、压力较小——这些因素本身就降低抑郁风险。你怎么知道是咖啡有用，还是这些混淆因素在作祟？&lt;/p&gt;
&lt;p&gt;随机对照试验（RCT）可以解决。但你不能把人随机分组，一组命令喝咖啡，一组禁止喝，然后跟踪十年看谁先抑郁。伦理上说不通，时间上也等不起。&lt;/p&gt;
&lt;p&gt;所以观察性研究只能告诉你&amp;quot;喝咖啡的人抑郁风险更低&amp;quot;，永远不能告诉你&amp;quot;喝咖啡能降低抑郁风险&amp;quot;。&lt;/p&gt;
&lt;p&gt;因果推论在这里碰壁了。&lt;/p&gt;
&lt;h2 id="工具变量登场"&gt;工具变量登场&lt;/h2&gt;
&lt;p&gt;这时候，计量经济学的老朋友出现了：工具变量。&lt;/p&gt;
&lt;p&gt;一个变量 $Z$ 要成为好的工具变量，需要满足三个条件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;相关性&lt;/strong&gt;：$Z$ 必须和自变量 $T$ 相关&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;排他性&lt;/strong&gt;：$Z$ 只能通过 $T$ 影响因变量 $Y$，不能有别的途径&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无混淆&lt;/strong&gt;：$Z$ 和混淆因素无关&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;用人话说：$Z$ 要能影响 $T$，但只能通过 $T$ 来影响 $Y$，不能自己偷偷影响 $Y$，也不能和影响 $Y$ 的其他因素有关联。&lt;/p&gt;
&lt;p&gt;举例：烟草税 $Z$ 作为工具变量，研究吸烟 $T$ 对肺癌 $Y$ 的影响。&lt;/p&gt;
&lt;p&gt;烟草税影响吸烟行为（相关性）。烟草税和个人生活习惯可能无关（无混淆）。烟草税只能通过改变吸烟行为来影响肺癌，不能自己直接导致肺癌（排他性）。&lt;/p&gt;
&lt;p&gt;满足这三个条件，工具变量就帮你绕开了混淆问题。&lt;/p&gt;
&lt;p&gt;怎么用？二阶最小二乘法（2SLS）：&lt;/p&gt;
&lt;p&gt;第一阶，用 $Z$ 预测 $T$：&lt;/p&gt;
$$T = \pi_0 + \pi_1 Z + u$$&lt;p&gt;第二阶，用预测值 $\hat{T}$ 回归 $Y$：&lt;/p&gt;</description></item><item><title>精准刻画的智慧（局部效应）</title><link>https://touchingfish.top/2022/local-average-treatment-effect/</link><pubDate>Fri, 22 Apr 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/local-average-treatment-effect/</guid><description>&lt;p&gt;局部平均处理效应（Local Average Treatment Effect, LATE）是解决工具变量（instrumental variables, IV）分析中“异质性”问题的重要概念，尤其在处理效应并非全体受试者均一致之时，LATE 能准确捕捉那些响应工具变量之人群的因果效应。其所估计者，并非总体平均处理效应，而是仅针对那些遵从工具变量之个体（即“遵从者”）的平均处理效应。&lt;/p&gt;
&lt;h2 id="样本的分层"&gt;样本的分层&lt;/h2&gt;
&lt;p&gt;如果将医生的处方作为工具变量 $Z$，是否遵从处方服用药物为 $T$，则可以将样本分为“遵从者”（Compliers）与“非遵从者”（Defiers）组，并对这两组个体之潜在结果进行比较。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;样本分层记号&lt;/strong&gt;：借鉴潜在结果的表示，我们用
&lt;/p&gt;
$$
\begin{aligned}
T(1) \triangleq T(Z=1)\\\
T(0) \triangleq T(Z=0)
\end{aligned}
$$&lt;p&gt;
来表示对 $Z$ 进行干预时获得的处理 $T$，所有样本可以分为以下 4 种类型：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Compliers: $T(1)=1$ and $T(0)=0$&lt;/li&gt;
&lt;li&gt;Always-takers: $T(1)=1$ and $T(0)=1$&lt;/li&gt;
&lt;li&gt;Never-takers: $T(1)=0$ and $T(0)=0$&lt;/li&gt;
&lt;li&gt;Defiers: $T(1)=0$ and $T(0)=1$&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;其中，遵从者与非遵从者是否接受处理完全取决于工具变量。&lt;/p&gt;
&lt;p&gt;而 Always-takers 和 Never-takers 是否接受处理则与工具变量无关。例如，根据自己意愿，而不按处方用药者。&lt;/p&gt;
&lt;p&gt;后者之因果图中不存在 $Z \to T$ 的边，故对 Always-takers 和 Never-takers 而言，$Z$ 对 $Y$ 之因果效应为 $0$。&lt;/p&gt;
&lt;p&gt;&lt;img src="LATE.svg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;根据是否被要求接受处理($Z=1 \quad \text{or} \quad Z=0$)，以及是否接受处理($T=1 \quad \text{or} \quad T=0$) 进行分层时，共有4种组合：&lt;/p&gt;</description></item><item><title>BEF研究中的因果假设争论</title><link>https://touchingfish.top/2022/scm-is-a-causal-hypothesis/</link><pubDate>Sun, 03 Apr 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/scm-is-a-causal-hypothesis/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;a specific SCM is a causal hypothesis. Fitting to data gives you feedback about your hypothesis (and more). It represents a workflow that can lead to stunning advances. It&amp;rsquo;s not a magical box that you put your data into, shake, and watch all causal relationships fall out.&lt;/p&gt;
&lt;p&gt;— Don Schoolmaster, 05 Feb 2023&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;生物多样性-生态系统功能（Biodiversity-Ecosystem Function, BEF）研究是生态学中最具争议的领域之一。自1990年代以来，大量研究表明物种多样性与生态系统功能之间存在正相关关系。然而，这种相关性是否代表因果关系，一直是激烈辩论的焦点。&lt;/p&gt;
&lt;p&gt;2020年，Schoolmaster、Zirbel和Cronin（SZC）在《Ecology》发表了一篇论文，运用图形因果模型（Graphical Causal Model）重新审视BEF研究中的因果假设。随后，Grace、Loreau和Schmid（GLS）在2021年发表评论文章批评SZC的模型，SZC则在2022年发表回复。这场学术争论不仅涉及BEF研究的核心问题，更触及因果推论方法论的根本。&lt;/p&gt;
&lt;h2 id="标准因果模型的问题"&gt;标准因果模型的问题&lt;/h2&gt;
&lt;h3 id="传统bef研究的因果假设"&gt;传统BEF研究的因果假设&lt;/h3&gt;
&lt;p&gt;传统BEF研究隐含的因果模型可以表示为：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;E → B → Q → F
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;其中：&lt;/p&gt;</description></item><item><title>宝可梦：数据可视化作业</title><link>https://touchingfish.top/2022/pokemon-dataviz/</link><pubDate>Wed, 30 Mar 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/pokemon-dataviz/</guid><description>&lt;h2 id="数据准备宝可梦属性必知必会"&gt;数据准备：宝可梦属性必知必会&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Type（属性）：共十多种，到第五世代开始，宝可梦可以拥有两个属性&lt;/li&gt;
&lt;li&gt;Total（能力值）：也叫种族值，表示该种宝可梦各项能力的数值总和&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;HP（体力值）&lt;/li&gt;
&lt;li&gt;Attack（物理攻击力）&lt;/li&gt;
&lt;li&gt;Defence（物理防御力）&lt;/li&gt;
&lt;li&gt;SpAtk, SpecialAttack（特殊攻击力）&lt;/li&gt;
&lt;li&gt;SpDef, SpecialDefence（特殊防御力）&lt;/li&gt;
&lt;li&gt;Speed（速度）&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Generation（世代）：第一代即为大家熟知的皮卡丘、杰尼龟等，本次作业的数据集为前六个世代的宝可梦&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Legendary（传说）：神兽。通常被主角小智撞见，或者剧场版登场的稀有宝可梦&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="p0.png" alt=""&gt;&lt;/p&gt;
&lt;h5 id="数据简介"&gt;数据简介&lt;/h5&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#加载&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tidyverse&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#处理图标&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;png&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;ibrary&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#读取数据&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;pokemon&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;read.csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Pokemon.csv&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#查看数据概况&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;glimpse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pokemon&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#数据整理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;colnames&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pokemon&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;[1]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;ID&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;colnames&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pokemon&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;str_replace_all&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;names&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pokemon&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;\\.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;names&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Gen&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;names&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Type&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;levels&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;as.factor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pokemon&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;Type1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;names&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Stat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;levels&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pkm_long&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;Key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#长数据转换&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;pkm_long&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;pokemon&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;%&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;pivot_longer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;names_to&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Key&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;values_to&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Value&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#筛选&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;pkm_nonLegendary&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;pokemon&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;%&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Legendary&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;False&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#载入图标&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;img&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;readPNG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;pokemon.png&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;img&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;rasterGrob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;interpolate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#取色&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Gen&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#DA4511&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;#FFBD00&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;#6A953F&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;#9A6233&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;#D3AE7C&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;#307CA1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Type&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#a8b820&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#705848&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#7860e0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#f8c030&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#FFAAFF&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#a05038&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;#f05030&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#98a8f0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#6060b0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#78c850&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#d0b058&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#58c8e0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;#a8a090&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#b058a0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#f870a0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#b8a058&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#a8a8c0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#3898f8&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Stat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#f5ac78&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#fae078&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#ff5959&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#9cb4f3&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#a3da8a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#fa92b2&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="可视化"&gt;可视化&lt;/h2&gt;
&lt;h3 id="属性"&gt;属性&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#原生属性的宝可梦数量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;pokemon&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;%&lt;/span&gt; &lt;span class="nf"&gt;group_by&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Type1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;%&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;summarise&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;n&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;%&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;ggplot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;aes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;fct_reorder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Type1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;desc&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fill&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Type1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;black&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;geom_bar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;stat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;identity&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;position&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;dodge&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;show.legend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;F&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;geom_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;aes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;label&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;nudge_y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;coord_flip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;scale_fill_manual&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;values&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Type&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;labs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Num of Pokemons by Type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;subtitle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;All pokemons have a primary type. But not all pokemons have a secondary type.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;panel.background&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;element_blank&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;panel.border&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;element_rect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fill&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;NA&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plot.background&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;element_blank&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;axis.text.x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;element_blank&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plot.title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;element_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;face&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;bold&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;annotation_custom&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;xmin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;xmax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ymin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ymax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;112&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="p1.png" alt=""&gt;&lt;/p&gt;</description></item><item><title>工具变量如何通向因果效应</title><link>https://touchingfish.top/2022/instrumental-variables/</link><pubDate>Mon, 28 Mar 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/instrumental-variables/</guid><description>&lt;p&gt;在日常生活中，我们经常会遇到这样的问题：某种行为是否会导致某种结果？例如，吸烟是否会导致肺癌？参加工作培训是否会提高就业率？这些问题的答案并不总是显而易见，因为很多时候，行为和结果之间可能存在其他隐藏的混淆因素。工具变量（Instrumental Variables, IV）是当混淆因素不可观测时，识别因果效应的一种解决方案。&lt;/p&gt;
&lt;p&gt;假设我们有以下变量：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$T$：处理变量（例如，是否接受某种治疗）&lt;/li&gt;
&lt;li&gt;$Y$：结果变量（例如，健康状况）&lt;/li&gt;
&lt;li&gt;$U$：混淆因素（例如，个人健康习惯）&lt;/li&gt;
&lt;li&gt;$Z$：工具变量（例如，是否被建议接受治疗）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;工具变量 $Z$ 必须满足下列三个假设:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;相关性假设（Relevance Assumption）: $Z$ 对 $T$ 存在因果效应&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;排他限制（Exclusion Restriction）: $Z$ 对 $Y$ 的所有因果效应都必须经过中介 $T$&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;$Z$ causal effects on $Y$ is fully mediated by $T$.&lt;/p&gt;
&lt;p&gt;This assumption is known as the exclusion restriction because it excludes $Z$ from the structural equation for $Y$ and from any other structural equations that would make causal association flow from $Z$ to $Y$ without going through $T$.&lt;/p&gt;</description></item><item><title>利用时间信息探寻因果</title><link>https://touchingfish.top/2022/difference-in-differences/</link><pubDate>Fri, 25 Mar 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/difference-in-differences/</guid><description>&lt;p&gt;评估政策或者事件的影响，常以历史数据为镜。然而，历史数据错综复杂，要从中识别出真实的因果效应（treatment effect）实非易事。双重差分法（Difference in Differences, DiD）的核心思想在于：比较同一组个体在政策实施前后之变化，并与另一组未受政策影响的个体在相同时段的变化进行对比。若从两组数据间观测到显著差异，便可以认为这一变化是由政策所引起。&lt;/p&gt;
&lt;h2 id="基础知识回顾"&gt;基础知识回顾&lt;/h2&gt;
&lt;h3 id="关键假设"&gt;关键假设&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;无混淆假设（Unconfoundedness Assumption）&lt;/strong&gt;
&lt;/p&gt;
$$
 \big(Y(1),Y(0)\big) \perp\!\!\!\perp T
 $$&lt;p&gt;
即处理状态 $T$ 与潜在结果 $Y(1)$ 和 $Y(0)$ 相互独立。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;一致性假设（Consistency Assumption）&lt;/strong&gt;
&lt;/p&gt;
$$
 \mathbb{E}[Y(1)|T=1] = \mathbb{E}[Y|T=1]
 $$&lt;p&gt;
即在接受处理的组别中，观测到的结果 $Y$ 可以代表潜在结果 $Y(1)$。&lt;/p&gt;
&lt;p&gt;在上述假设下，可识别平均处理效应（ATE, Average Treatment Effect）：
&lt;/p&gt;
$$
 \mathbb{E}[Y(1) - Y(0)] = \mathbb{E}[Y|T=1] - \mathbb{E}[Y|T=0]
 $$&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;针对处理组的平均处理效应（ATT, Average Treatment Effect on Treated）&lt;/strong&gt;
&lt;/p&gt;
$$
 \mathbb{E}[Y(1) - Y(0)|T=1]
 $$&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="引入时间维度"&gt;引入时间维度&lt;/h3&gt;
&lt;p&gt;引入时间维度，是为了在&lt;strong&gt;不依赖于无混淆假设&lt;/strong&gt; 下进行因果效应的识别。用 $Y_{\tau}(t)$ 表示时间为 $\tau$ 时处理为 $t$ 的潜在结果，那么 ATT 可以表示为：&lt;/p&gt;
$$
 \mathbb{E}[Y_1(1) - Y_1(0)|T=1]
 $$&lt;h2 id="识别策略"&gt;识别策略&lt;/h2&gt;
&lt;h3 id="假设"&gt;假设&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;时间一致性假设（Consistency Assumption Extended to Time）&lt;/strong&gt;
&lt;/p&gt;</description></item><item><title>自组织与人工生命</title><link>https://touchingfish.top/2022/self-organization-and-alife/</link><pubDate>Mon, 07 Mar 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/self-organization-and-alife/</guid><description>&lt;p&gt;这篇文章主要基于Carlos Gershenson等2018年的综述《Self-Organization and Artificial Life》，算是我对自组织这个概念的一些笔记。人工生命在计算模拟(soft)、机器人(hard)、生物化学(wet)三个领域都有研究，自组织是贯穿其中的暗线。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;最近，一位名叫吉尔森逊（Carlos Gershenson）的学者向他的一些同行（其中包括我）分发了一份复杂系统问题表，并计划在名为《复杂性：5个问题》（Complexity：5 Questions）的书中发表这些回应。问题如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;你为何会研究复杂系统？&lt;/li&gt;
&lt;li&gt;你怎样定义复杂性？&lt;/li&gt;
&lt;li&gt;你喜欢的复杂性方面/概念是什么？&lt;/li&gt;
&lt;li&gt;在你看来，复杂性最成问题的方面/概念是什么？&lt;/li&gt;
&lt;li&gt;你如何看待复杂性的未来？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;摘自《复杂》，梅拉妮·米歇尔&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;嗐，这个问题清单看得我有点汗颜。研究复杂系统的人，多少觉得自己在回答&amp;quot;宇宙终极问题&amp;quot;——虽然说不清楚到底能不能回答。&lt;/p&gt;
&lt;h2 id="什么是自组织self-organization"&gt;什么是自组织(self-organization)?&lt;/h2&gt;
&lt;p&gt;Ashby (1947)用自组织来描述一个挺有意思的现象：系统中没有中央指挥，个体之间通过局部相互作用，愣是产生了某种整体模式。&lt;/p&gt;
&lt;p&gt;说的再直白点：从上帝视角看过去，发现组成系统的零件们自发形成了一种&amp;quot;秩序&amp;quot;，这种秩序不是谁特意设计的，而是从零件的集体行为中&amp;quot;涌现&amp;quot;出来的。&lt;/p&gt;
&lt;p&gt;自然界里这类例子一抓一把：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;鸟群、鱼群（Flocking, Shoaling, Swarming）&lt;/li&gt;
&lt;li&gt;形态发生（Morphogenesis）&lt;/li&gt;
&lt;li&gt;斑图形成（Pattern formation）&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;A formal definition of the term runs into difficulties in agreeing on what is a system, what is organization, and what is self (Gershenson and Heylighen, 2003), none of which are perfectly straightforward.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;翻译过来就是：自组织这个概念，定义起来特别麻烦——什么叫&amp;quot;系统&amp;quot;？什么叫&amp;quot;组织&amp;quot;？什么叫&amp;quot;自&amp;quot;？每个词都能吵半天。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ashby coined the term &amp;ldquo;self-organizing system&amp;rdquo; to show that a machine could be strictly deterministic and yet exhibit a self-induced change of organization (Ashby, 1947).&lt;/p&gt;</description></item><item><title>冬季假期（Winter Holiday）</title><link>https://touchingfish.top/2022/winter-holiday/</link><pubDate>Sat, 26 Feb 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/winter-holiday/</guid><description>&lt;p&gt;写日记的确让人感觉生活更加充实且有趣，以及缓解焦虑？&lt;/p&gt;
&lt;p&gt;收拾完行李，学校已经没什么能吃的东西了，食堂的大叔大妈倒是不错，会看看还剩什么食材给你做点。没晾干的棉裤也只能让单师兄过两天帮忙收起来。离校前一天搭了几座纸桥，试图助328的植物们度过这个可能有点漫长的假期，生死有命。&lt;/p&gt;
&lt;h3 id="一"&gt;一&lt;/h3&gt;
&lt;p&gt;在大连度过了一个有趣的星期第一天逛了不太有趣的大连博物馆，途中还顺便帮康师姐下载NASA的数据。小陈回大连后，带我逛了海洋馆。他的热情令我有点不适，原因是不知道如何回应。旅顺半日游很精彩。多少感到自己有些吸引社牛的体质，不过对一面之缘的人我总是&amp;quot;应付&amp;quot;得还行。回了家，没想到妈妈的学期还没有结束。本来跟小陈说的是，有机会的话和我妈妈一起到广州玩两天，到时可以在那碰面，以回敬&amp;quot;地主之谊&amp;quot;。&lt;/p&gt;
&lt;h3 id="二"&gt;二&lt;/h3&gt;
&lt;p&gt;在家的日子比较无聊，但因为哥哥裸辞未就业，今年春节假期回家很早。非常难得地度过了一段久违的四口核心家庭生活。&lt;/p&gt;
&lt;p&gt;他还是跟每次回来一样，背着好几台&amp;quot;设备&amp;quot;，带我玩了一把《怒之铁拳4》。倒是我变得很奇怪，玩什么好像也嗨不起来。在我心里，哥哥是对我最好的家人。只有亲情没有伤害。我还没有成熟到不抱怨自己的父母。家人以爱之名，弄巧成拙的「伤害」，对心软之人而言，只是催生了因&amp;quot;责备关爱&amp;quot;而感到的愧疚。更难过的是，家人并不会意识到发生的事情及其影响。&lt;/p&gt;
&lt;h3 id="三"&gt;三&lt;/h3&gt;
&lt;p&gt;自从不再跟婶婶家一起吃年夜饭以后，除夕的晚餐质量一直掉到家里平均水平以下。一方面是潮汕地区喜欢有些过年过节必须吃的东西，另一方面是这两三年妈妈喜欢在家里煮火锅（一种偷懒的料理方式），汤底是白开水。&lt;/p&gt;
&lt;p&gt;在家吃火锅的体验极差，最大的原因可能是跟老父的饮食习惯不同。他有自己的一套逻辑和知识体系，并且有点顽固。也许是我几乎不与老父有多余的交谈，所以也懒得进行指正。他的菜系时常令我难以接受。&lt;/p&gt;
&lt;p&gt;这个年是在雨水和冷空气中度过，不过可能是疫情以来最有幸福感的一次过年。&lt;/p&gt;
&lt;h3 id="四"&gt;四&lt;/h3&gt;
&lt;p&gt;影音报告虽迟但到。回家以来，先是把去年开学带到学校的两部综艺《我听》和《脱口秀大会》补完了，然后是心心念念的《万物生灵2》，接着有《鱿鱼游戏》，《倚天屠龙记》，《一人之下4》，《星空下的仁医》，《开端》，《僵尸校园》，《时光音乐会》，《鹤唳华亭》，《变成你的那一天》，《半熟恋人》，《爱很美味》等。&lt;/p&gt;
&lt;p&gt;展开讲讲：&lt;/p&gt;
&lt;p&gt;因为没有被剧透冠军，《我听》看起来还蛮有趣的，如果不是《时光音乐会》，就是当之无愧的21年最强音综。考虑《时光音乐会》的话，我这里并列没问题。&lt;/p&gt;
&lt;p&gt;《万物生灵2》不用多说，白月光还撒糖了，&lt;/p&gt;
&lt;p&gt;很满足。《鱿鱼游戏》被剧透得明明白白，如果不知道老头是Boss的话，看的时候大概会直呼牛逼？&lt;/p&gt;
&lt;p&gt;《倚天屠龙记》意外地好看，我简直太喜欢武侠了。
想起来《一人之下4》是天花板的篇章，于是一天就看完了整一季，如果是追更的话，节奏慢且信息量少，可能被气死。&lt;/p&gt;
&lt;p&gt;《星空下的仁医》又是一部医疗剧，可能是武侠以外我第二喜欢的题材了，并且还有TVB加持，主演和配角都很满意。&lt;/p&gt;
&lt;p&gt;理所当然地被安利了《开端》，he也不算烂尾，只是明显感到为了过审有些牺牲，最后一环没把关键人物交代好，略略可惜。&lt;/p&gt;
&lt;p&gt;《僵尸校园》我只能说韩国人拍僵尸一向可以，很难理解因为人设就打低分的人，真就把片子只当剧本看？&lt;/p&gt;
&lt;p&gt;《变成你的那一天》从上学期开学前就想看了，当时没挺过第一集，网友说熬过去就好了，果然打开了新世界，看到男女主在一起后收手正合适。&lt;/p&gt;
&lt;p&gt;《半熟恋人》是少有的那种没有专门拍些刻意的情节的一部国产恋综了，看下来真的有天花板的感觉，几位嘉宾请得也很不错，期间在微博豆瓣到一些黑料也无伤大雅。&lt;/p&gt;
&lt;p&gt;《爱很美味》是川上在节目里推荐的，愿称为无愧于时代的优秀文艺作品，没想到大结局落点竟然还是抗疫故事，有点不太舒服。&lt;/p&gt;
&lt;p&gt;刚刚提到的节目就是《路人抓马》。过完年后竟然有点焦虑，失眠，每天睡前都要做些事情——读读书，看看剧，听听歌，或者一期播客。两位美女的闲聊真的让我有所反思，想要好好地热爱生活。去赚钱，去社交，看以前喜欢过的文学。&lt;/p&gt;
&lt;h3 id="五"&gt;五&lt;/h3&gt;
&lt;p&gt;关于博客，回家之后通过了备案，然后做了很多奇奇怪怪的美化后，又&amp;quot;打回原形&amp;quot;选择了进行一些简约的风格。翻译了一篇小文献，又整理上传了一些笔记，算是有点东西了。时常感到自己的服务器没什么卵用，也当不了算力，有一天发现还不能拿来搭梯子。&lt;/p&gt;
&lt;p&gt;假期没有完成一些所谓的计划，至少电视剧没少看。最近又临近开学，规矩还真不少，有一天被班主任逮到没有好好填表，不过我酷酷地甩了个&amp;quot;哦&amp;quot;给她。选择了2号的机票，晚上到沈后还得在校外通宵一夜，so bad。&lt;/p&gt;</description></item><item><title>贝叶斯网络：因果图模型的前身</title><link>https://touchingfish.top/2022/bayesian-network/</link><pubDate>Mon, 20 Dec 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/bayesian-network/</guid><description>&lt;p&gt;贝叶斯网络（Bayesian Network），作为一种图形化模型，早在20世纪末便广为流传，其主要用以描述随机变量之间的条件独立性与概率分布关系。它以有向无环图（Directed Acyclic Graph, DAG）为基础，将复杂的概率系统分解为易于处理的子结构。&lt;/p&gt;
&lt;p&gt;在这一框架下，每个节点代表一个随机变量，每条有向边则表示变量间的条件依赖。例如，在贝叶斯网络中，若变量 $X$ 指向 $Y$，这仅表示给定 $X$ 的条件下，$Y$ 的概率分布被决定。&lt;/p&gt;
&lt;h2 id="条件独立性的理论基础"&gt;条件独立性的理论基础&lt;/h2&gt;
&lt;p&gt;考虑我们将要进行建模的分布为 $P(x_1,x_2,\dots,x_n)$，根据链式法则（chain rule），对其进行分解：&lt;/p&gt;
$$
\begin{aligned}
P(x_1,x_2,\dots,x_n)&amp;=P(x_n|x_{n-1},\dots,x_1)P(x_{n-1}|x_{n-2},\dots,x_1)\cdots P(x_2|x_1)P(x_1)\\&amp;=P(x_1)\prod_iP(x_i|x_{i-1},\dots,x_1)
\end{aligned}
$$&lt;p&gt;假设 $x_i$ 均为二元变量（binary），其中 $i=1,2,3,\dots,n$。当考虑 $3$ 个变量时（$n=3$），需要建模的因子 $P(x_3|x_2,x_1)$ 有 $4$ 个参数（parameters）：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;$x_1$&lt;/th&gt;
 &lt;th&gt;$x_2$&lt;/th&gt;
 &lt;th&gt;$P(x_3\|x_2,x_1)$&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;$a_1$&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;$a_2$&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;$a_3$&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;$a_4$&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;当考虑 $4$ 个变量时（$n=4$），参数为 $8$ 个。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;$x_1$&lt;/th&gt;
 &lt;th&gt;$x_2$&lt;/th&gt;
 &lt;th&gt;$x_3$&lt;/th&gt;
 &lt;th&gt;$P(x_4\|x_3,x_2,x_1)$&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;$a_1$&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;$a_2$&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;$a_3$&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;$a_4$&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;$a_5$&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;$a_6$&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;$a_7$&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;$a_8$&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;也就是说，对 $P(x_n|x_{n-1},\dots,x_1)$ 进行建模必要的参数为 $2^{n-1}$ 个，随着 $n$ 的增加呈指数型增长。&lt;/p&gt;</description></item><item><title>甲基化的记忆（DNA Methylation）</title><link>https://touchingfish.top/2021/programmable-dna-methylation-breast-cancer/</link><pubDate>Fri, 10 Dec 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2021/programmable-dna-methylation-breast-cancer/</guid><description>&lt;p&gt;癌症基因组图谱计划画出了癌症的基因组地图，但知道了地图不等于找到了路。基因会突变，这事大伙都知道——一个个碱基发生替换、缺失、插入，细胞就慢慢走向失控。但很多人不知道的是，基因本身没变，表达的方式也能出问题。这就是表观遗传学干的事。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cytosine methylation in mammalian DNA is regarded as a key epigenetic modification controlling essential processes such as imprinting, silencing of retrotransposons and cell differentiation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;甲基化是表观遗传最经典的一种修饰。DNA还是那串DNA，但上面多了一些甲基基团，原本能打开的基因就被关上了。反过来也一样。正常细胞通过甲基化来保持身份——肝细胞记得自己是肝细胞，神经元记得自己是神经元，靠的就是这套表观遗传的记忆系统。&lt;/p&gt;
&lt;p&gt;问题是，这套系统在癌症里被打乱了。癌细胞不仅有基因突变，还有异常的甲基化模式——本该沉默的基因被打开，本该活跃的基因被关上。乳腺癌尤其典型，不同亚型的乳腺癌有不同的甲基化指纹。&lt;/p&gt;
&lt;p&gt;SOX2就是一个典型的例子。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;SOX2 is normally expressed in embryonic stem cells and neural progenitor cells, where it maintains self-renewal. DNA methylation in the SOX2 promoter and enhancer regions functions as an epigenetic switch, which forces cells to activate multiple differentiation pathways.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这个基因在胚胎干细胞里是主角，负责维持干细胞的自我更新。正常成人的组织里它基本不表达，细胞分化了，不需要它了。但研究者发现，在约43%的基底样乳腺癌里，SOX2异常激活了。肿瘤组织中的SOX2启动子甲基化水平比正常组织低，拷贝数却增加了——双重推动下，这个转录因子开始在癌细胞里疯狂表达，直接激活CYCLIN D1，驱动细胞加速增殖。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The downregulation of SOX2 by RNA interference decreased the tumorigenic phenotype in the lung, breast and ovarian cancers.&lt;/p&gt;</description></item><item><title>结构性的因果关系表征（因果图）</title><link>https://touchingfish.top/2022/structural-causal-model/</link><pubDate>Sat, 20 Nov 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/structural-causal-model/</guid><description>&lt;p&gt;传统的因果推断（causal inference）多依赖于回归模型与假设检验，着重于处理数据中变量间的关联性，而忽视了因果关系的结构性。因果图模型的引入，则为我们提供了一种全新的视角，可谓因果推断领域的一大颠覆。&lt;/p&gt;
&lt;h2 id="结构方程"&gt;结构方程&lt;/h2&gt;
&lt;p&gt;相比传统回归分析的变量间关联，结构因果模型强调因果关系的显性表达，为我们提供了更多的信息。例如，$M$ 是一个结构因果模型（structural causal model），其中 $V=\{Z,X,Y\}$ 是研究中所讨论因果关系的变量，称为内生变量（endogenous variables），$U=\{U_z.U_x,U_y\}$ 是外生变量（exogenous variables），代表研究中没有被明确建模的扰动（disturbances）。&lt;/p&gt;
&lt;p&gt;函数 $F=\{f_z,f_x.f_y\}$ 称为结构方程（structural equations），每个函数表示对应的内生变量的数据生成机制，即对应的内生变量的值由其他变量的值所决定的因果过程。&lt;/p&gt;
$$
M=\begin{cases}
Z \leftarrow f_z(U_z)\\
X \leftarrow f_x(Z,U_x)\\
Y \leftarrow f_y(X,Z,U_y)\\
U \sim P(U)
\end{cases}
$$&lt;p&gt;$P(U)$ 表示外生变量相关联的概率分布，在本例中，假设外生变量是相互独立的。结构因果模型 $M$ 表示内生变量的联合分布 $P(V)$，称作观测分布（observational distribution）。&lt;/p&gt;
&lt;h2 id="有向无环图"&gt;有向无环图&lt;/h2&gt;
&lt;p&gt;每一个结构因果模型 $M$ 有一个对应的因果图 $G$，直观地刻画了各个变量之间的因果关系，每个节点表示模型 $M$ 中的一个变量（Variables，$V$），图中每一条边都表示变量之间的因果效应，箭头 $V_i \to V_j$ 说明变量 $V_i$ 是变量 $V_j$ 的直接原因（$V_i$ 出现在 $V_j$ 的结构方程中），表现为一个有向无环图（directed acyclic graph, DAG）。&lt;/p&gt;
&lt;p&gt;&lt;img src="SCM.svg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;通常情况下，因果图不会将外生变量明确地表示出来。如果外生变量非独立，即同时存在结构方程 $f_{v_i}$ 和 $f_{v_j}$ 中时，可以用虚线的双向箭头 $V_i \dashleftarrow\dashrightarrow V_j$ 表示。&lt;/p&gt;
&lt;h2 id="do-算子"&gt;&lt;em&gt;do&lt;/em&gt; 算子&lt;/h2&gt;
&lt;p&gt;关于因果关系的讨论中，Fisher 的随机化试验是实验性研究的黄金标准，而是否能够进行操纵（manipulability）被认为是讨论因果关系的先决条件，并形成了“无操纵不因果”（“no causation without manipulation”）的观念。&lt;/p&gt;</description></item><item><title>潜在结果框架（因果推论的基石）</title><link>https://touchingfish.top/2021/potential-outcome/</link><pubDate>Wed, 17 Nov 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2021/potential-outcome/</guid><description>&lt;p&gt;在 Neyman-Rubin 因果模型（或称“潜在结果框架”，Potential Outcome）中，所谓因果推论，实际上是估计“因果效应”（causal effect）。&lt;/p&gt;
&lt;h2 id="何谓因果效应"&gt;何谓因果效应&lt;/h2&gt;
&lt;p&gt;Rubin 给出一个直观的例子：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Intuitively, &amp;hellip;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;If an hour ago I had taken two aspirins instead of just a glass of water, my headache would now be gone,&amp;rdquo; or &amp;ldquo;Because an hour ago I took two aspirins instead of just a glass of water, my headache is now gone.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;“如果一个小时前我服用了两个阿司匹林而不是一杯水，我的头痛现在就会消失”，或者“因为一个小时前我服用了两个阿司匹林而不是一杯水，我的头痛现在消失了”&lt;/p&gt;
&lt;p&gt;&amp;hellip;&lt;/p&gt;
&lt;p&gt;Now define the causal effect of the $E$ versus $C$ treatment on $Y$ for a particular trial (i.e., a particular unit and associated
times $t_1$, $t_2$) as follows:&lt;/p&gt;</description></item><item><title>北国秋日（October Sketches）</title><link>https://touchingfish.top/2021/october-sketches/</link><pubDate>Sun, 31 Oct 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2021/october-sketches/</guid><description>&lt;p&gt;永远可以相信课题组里的前辈。&lt;/p&gt;
&lt;p&gt;这话在组里流传甚广。每次不知道吃什么、玩什么、干什么的时候，只要有人出手，总不会失望。带我逛沈阳师范大学，看古生物博物馆里满地跑的小孩子；在校门口那块比人还大的石头前拍照；在需要走很久才能到的烧烤店里，课题组又一次高估自己的战斗力，没在餐桌上把饭干完。&lt;/p&gt;
&lt;p&gt;那是十月的一个午后，组会开得异常顺利。大家都正开心地聊天，突然发现有人在阴阳怪气——“出去玩没有告诉我们”——原来是前几天组队去故宫的时候没有约前辈一起。&lt;/p&gt;
&lt;p&gt;气氛一时有点尴尬。兄弟之情危在旦夕。三乘二小时的直男自我感动行为。捡树叶，准备礼物，手残得不行，也可能是技巧还没掌握，没起到什么贡献。拍起照片来看着还行。也许研究生三年不会再像今天一样，认真为别人准备礼物了。&lt;/p&gt;
&lt;p&gt;&lt;img src="Ginkgo1.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;下午人都来328了，前辈主动示好，给足了面子。气氛略有缓和，还跟我们借球拍一起到球场打球。显然我已经掌握了一些击球小技巧，越来越熟练，有那么几下还以为自己已经会打了。&lt;/p&gt;
&lt;p&gt;有些歉意不需要言语。&lt;/p&gt;
&lt;p&gt;前辈带我吃过很多东西。有一天下午拿来一盒&amp;quot;饼&amp;quot;，吃了整整一个下午，晚饭胃口依然不错。后来才知道那是一位师兄用可乐蒸鸡蛋——又是课题组的迷惑行为大赏。师兄总能在吃的方面整出点新花样，今天是可乐蒸鸡蛋，明天不知道又是什么。&lt;/p&gt;
&lt;p&gt;说起吃的，彩电塔的小吃街第一次去就遇到了臭豆腐。那臭豆腐臭得惊人，还好买了烤酸奶缓冲缓冲。中街的汉堡王也算来得及时，本来想给大家带点吃吃喝喝的东西，但不知道什么原因打消了念头。&lt;/p&gt;
&lt;p&gt;我的发型也值得记录一笔。&lt;/p&gt;
&lt;p&gt;托尼老师喜欢唠嗑，东北人更热情。但我很难说清是他的审美不行还是技术不好，或是经验不足。眼看我的发型逐渐奇怪，他使出每位托尼老师的常用套路——&amp;ldquo;等下给你吹一吹，做个造型&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;我可太明白了。言下之意就是现在的发型不捯饬捯饬，看上去显然是不值这个价了。&lt;/p&gt;
&lt;p&gt;幸好我对形象的要求并不算很高。洗完吹干后勉强能够接受。&lt;/p&gt;
&lt;p&gt;英语课就没这么幸运了。&lt;/p&gt;
&lt;p&gt;被老师点名翻译句子，翻译出来的内容完全读不通，当场尬住。也没什么不好意思的，本来就是这个例句断章取义的错。但按这进度，自我介绍轮到我的可能性还是挺大的，emo。&lt;/p&gt;
&lt;p&gt;比起英语课，更让我emo的是奖学金申报。&lt;/p&gt;
&lt;p&gt;老师嫌弃的语气基本上已经断了念想。交完材料那天，想着除了论文没有其他拿得出手的东西了，还得找人写推荐，想想有些尴尬。后来竟然让我发电子版材料了，又觉得还有点希望。其他人也不是省油的灯，自己除了一篇论文，没有任何能秀的东西。如果能答辩秀一下综合素质可能还有戏。&lt;/p&gt;
&lt;p&gt;晚上在328开小会，除了组里的人，还来了几个朋友。一开就聊了好久，迟迟没有规划明天外出的行程。书记一个线上会议，又给大家的出入校审批提高了难度，一时很是扫兴。&lt;/p&gt;
&lt;p&gt;说起来，328真是个神奇的地方。&lt;/p&gt;
&lt;p&gt;328是研究生办公室。围坐开小会，奶茶局，成功把其他人聊走。这个氛围真是太有趣了。晚上有人提议一起上政治课，集体坐在第一排，明目张胆地摸鱼、睡觉、吃瓜。&lt;/p&gt;
&lt;p&gt;有一次我正在烧水，突然有人来敲门。根本没想到会有人来，根本没机会一个人待着学会儿习。设了路由器密码，发现竟然无从下手。十月份大部分时间，328都是这样热热闹闹的。&lt;/p&gt;
&lt;p&gt;也有安静的时候。&lt;/p&gt;
&lt;p&gt;早上做生统作业，奖励自己跑个步。刚开始跑的时候真是冷得很难控制呼吸，这个天气运动有点勉强了。运动完后扛冻能力短时间内是max，洗完澡吃完饭又开始感受到刺骨的寒冷。跑步的时候想明白了一些事情——在解释知识这方面，国内做得有点一般。也许再读一两遍就能把实验串起来。&lt;/p&gt;
&lt;p&gt;但有些道理，不是跑步能想通的。&lt;/p&gt;
&lt;p&gt;那天晚上看了Y叔的直播。他是国内从事生信软件开发的人员中，我很早便知道且颇有个性、值得欣赏的一位老师。在直播中，看出他做人做事的特点和原则。开发一个受众广泛的应用已经不是一件容易的事情，能够坚持维护这么长时间更是一项困难的工作。脚踏实地、持之以恒地做事（学术）这方面，给我很大的震撼。也许他并没有发太多高分的大文章，但他的引用量已经超过绝大多数靠灌水评职称的学阀教授。对国内生信的学习和进步也有很大的贡献。&lt;/p&gt;
&lt;p&gt;开题和中期答辩那阵子，第一次见到大家所谓的“和老师讨论”。场面确实有点激烈。但看下来，倒没有见到其他人被&amp;quot;为难&amp;quot;。看师兄师姐开题，好像有点水，但也没那么水。&lt;/p&gt;
&lt;p&gt;十月份眼看就要结束了。&lt;/p&gt;
&lt;p&gt;最近学习进度实在一般，综艺节目也很多没补上。个人的节奏有点被打乱，该重新调整过来。&lt;/p&gt;
&lt;p&gt;铁锅炖确实越吃越香，体验还算不错，但实际上并没有很合个人口味。比起第一次聚餐尬玩桌游，氛围已经好多了，大家关系亲近不少。&lt;/p&gt;
&lt;p&gt;这个月流量限速后，刷手机体验极差。一度想要先眯一觉，但又说要买套过冬装备，坚持挺到了十二点。&lt;/p&gt;
&lt;p&gt;有人请吃饭。除了天气，都很美好。&lt;/p&gt;
&lt;p&gt;&lt;img src="Ginkgo2.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;做了很多事情，又好像什么也没做。&lt;/p&gt;
&lt;p&gt;第一次跟大家出去玩耍还是很开心的。&lt;/p&gt;</description></item><item><title>陷阱不只是交换学科（CSS Summer School）</title><link>https://touchingfish.top/2021/css-summer-school-memory/</link><pubDate>Sun, 15 Aug 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2021/css-summer-school-memory/</guid><description>&lt;p&gt;2021年7月，研0。&lt;/p&gt;
&lt;p&gt;研究生录取之后接到的第一个任务，是去上一个暑期学校。&lt;/p&gt;
&lt;p&gt;七月的最后一周，华中农大和帝国理工合办了一个计算社会科学方法论的暑期学校。课程安排在线上，每天从早到晚排满了课，结课还要交一个 NetLogo 模型。&lt;/p&gt;
&lt;p&gt;在这之前，我刚被电动车撞了。&lt;/p&gt;
&lt;p&gt;不是我自己被撞，是我妈。一大早出门买早餐，让一个跑单的骑手撞了。手肘肿得厉害，脚趾被前轮碾过，死皮掀开一大块。报警，ct，派出所，交警大队。一家人跑了一整天。&lt;/p&gt;
&lt;p&gt;第二天网课就开始了。&lt;/p&gt;
&lt;p&gt;我以为这就是全部了。后来发现，这只是开始。&lt;/p&gt;
&lt;p&gt;开课第一天早上 Georgiy 老师的课，我盯着屏幕里那个俄罗斯男人看了半天。客观来说，确实挺帅，专业背景也跟我比较 fit。我寻思着要是能保持联系以后说不定有用。&lt;/p&gt;
&lt;p&gt;上课讲了什么现在差不多忘光了。只记得下课前他演示了几个 NetLogo 模型，其中一个关于 covid 的印象深刻——后来我们小组的作业就是从这个模型改出来的。&lt;/p&gt;
&lt;p&gt;课间我骑着自行车出门把骑行卡的次数用完。回来接着划水。晚上的综艺追到三四点。&lt;/p&gt;
&lt;p&gt;现在回想起来，那大概是我最接近&amp;quot;帝国理工&amp;quot;三个字的一次。虽然线上，虽然只有一周，虽然本质上就是个 NetLogo 入门培训。但怎么说呢，title 好听啊。&lt;/p&gt;
&lt;p&gt;第二天下午的 Jerry 孙老师是全场最有人情味的一个。&lt;/p&gt;
&lt;p&gt;前半程用英文讲，听得云里雾里。后半程不知道谁提了一句能不能用中文，孙老师居然答应了。Koen 在旁边听了一会儿，大概是觉得没意思，中途下线回血。&lt;/p&gt;
&lt;p&gt;用中文讲果然效果好很多。那些&amp;quot;学习&amp;quot;、&amp;ldquo;贝叶斯网络&amp;rdquo;、&amp;ldquo;遗传算法&amp;quot;的概念，从孙老师嘴里说出来变得接地气了不少。他说微观到宏观的角度，说抽象和复杂的关系，我突然意识到这可能就是建模的思维方式。&lt;/p&gt;
&lt;p&gt;之前自学 NetLogo 的时候，只知道怎么把代码敲正确。从没想过为什么要建这个模型，为什么抽象，为什么复杂。&lt;/p&gt;
&lt;p&gt;抽象还是复杂？&lt;/p&gt;
&lt;p&gt;这是个哲学问题。&lt;/p&gt;
&lt;p&gt;小组作业是结课前才布置的。&lt;/p&gt;
&lt;p&gt;在此之前，我已经大概猜到了——每次小组作业的剧本都是这样的：定题那天大家头脑风暴热热闹闹，真正干活的就那么一两个人。选题的时候每个人都参与，讨论的时候每个人都发言，等到了写代码的阶段，环顾四周，发现只有自己。&lt;/p&gt;
&lt;p&gt;果然。&lt;/p&gt;
&lt;p&gt;为什么这些小年轻约 meeting 会约在早上，感觉被安排得明明白白。第一次讨论定题，我在同学掩护下闭麦装高手。大家都想做疫苗相关的话题，追热点嘛，都懂。在老师的建议下，我们决定在 SIR 模型基础上加疫苗干预，模拟社会网络中的传播阻断效果。&lt;/p&gt;
&lt;p&gt;选题确定得很快，但研究问题实际上并不明确。这也给后续工作埋下了隐患——我们是在已知模型能实现什么的前提下来设计实验，而不是先明确问题再选择方法。&lt;/p&gt;
&lt;p&gt;第二次讨论的时候，我已经甩了一个半成品模型上去。其实就一个晚上肝出来的，很多参数还没调，ODD 协议也没写。队员们看着屏幕另一端的模型面面相觑——这就开始了？&lt;/p&gt;
&lt;p&gt;我也没想到能这么早进入状态。但没办法，科研这件事嘛，都是自己催自己。无所事事，因为队友看起来不急。&lt;/p&gt;
&lt;p&gt;整个暑期学校有八堂课，我现在能回忆起来的没几门。&lt;/p&gt;
&lt;p&gt;Lecture 3 讲 ODD protocol。概念不难理解，不就是 Overview, Design concepts, Details 吗？但真到自己写的时候傻眼了。描述一个模型比理解一个模型难得多。这感觉就像看别人游泳觉得自己也行，等下了水才发现连换气都不会。&lt;/p&gt;
&lt;p&gt;Lecture 5 讲 GIS。Koen 老师说仿真在时空中演化，空间数据怎么处理，shapefile 怎么用。我想起之前学最大熵模型时也接触过这些概念，当时没学明白，这次还是没学明白。哪些模型需要 GIS，哪些不需要？地理信息在模型中起什么作用？这些问题是好问题，但我没有答案。&lt;/p&gt;
&lt;p&gt;Lecture 7 最有意思。白军飞老师是临时被拉来代课的，讲的是应用经济学研究的规范问题。他说很多所谓的研究只是在&amp;quot;讨论问题&amp;rdquo;，而不是&amp;quot;研究约束对行为的影响&amp;quot;。他还提到一个观点：交叉学科盛行今日，各自发挥优势比换学科更重要——&amp;ldquo;交换学科&amp;quot;的陷阱，迷失在其他学科之中，既丧失自身优势，也没有扎实基础与科班竞争。&lt;/p&gt;
&lt;p&gt;彼时我刚考上研究生，选的是生物统计。本科学生物，信息与计算科学也沾一点，机器学习也自学过一点。现在看来，哪哪都懂一点，哪哪都不精。&lt;/p&gt;
&lt;p&gt;这不就是&amp;quot;交换学科&amp;quot;的陷阱吗？&lt;/p&gt;
&lt;p&gt;但转念一想，如果不是因为什么都会一点，这个暑期学校的作业我也做不来。复杂适应系统、多智能体建模、NetLogo——这些词我之前连听都没听说过。&lt;/p&gt;</description></item><item><title>普林斯顿微积分读本 X</title><link>https://touchingfish.top/calculus101/2021-cal10/</link><pubDate>Sun, 27 Jun 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/calculus101/2021-cal10/</guid><description>&lt;h1 id="体积弧长和表面积"&gt;§体积、弧长和表面积&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;For volumes and surface areas, we&amp;rsquo;ll pay special attention to solids which are formed by revolving a region in the plane about some axis which lies in the plane; such solids are called &lt;em&gt;solids of revolution&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;圆盘法（disc method）和壳法（shell method）求体积&lt;/li&gt;
&lt;li&gt;求更一般固体的体积&lt;/li&gt;
&lt;li&gt;求光滑曲线（smooth curve）的弧长（arc lengths）和带参数的质点（parametric particles）速率&lt;/li&gt;
&lt;li&gt;求旋转体（solids of revolution）的表面积&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="291-旋转体的体积"&gt;29.1 旋转体的体积&lt;/h2&gt;
&lt;p&gt;定积分的回顾（见&lt;em&gt;第16章&lt;/em&gt;）&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;So here&amp;rsquo;s the pattern: we make a little strip of width $\mathrm{d}x$ units and height $y$ units at position $x$ on the $x$-axis, work out its area, then put a definite integral sign in front to get the total area we&amp;rsquo;re looking for.&lt;/p&gt;</description></item><item><title>鳗研（PERVADE）</title><link>https://touchingfish.top/2021/the-ways-of-eel/</link><pubDate>Thu, 24 Jun 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2021/the-ways-of-eel/</guid><description>&lt;p&gt;说是科普文章有点勉强，毕竟这里既没有严谨的实验设计，也没有系统的文献综述。说它是读后感吧，我又实在没那么多愁善感，翻书时没怎么走心，看完也就忘了。&lt;/p&gt;
&lt;p&gt;本科跟着老师做日本鳗鱼，虽然最后因为学院不再提供实验室，项目不了了之，但两年多的摸鱼经历，足够让我对这种生物产生一种说不清道不明的情感。&lt;/p&gt;
&lt;p&gt;&lt;img src="freezed.jpg" alt="冰冻的成鳗（2018年摄于福建泉州）"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;冰冻的成鳗（2018年摄于福建泉州）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;解剖、打针、手术、组织切片、细胞观察——这些湿实验工作，现在回想起来依然历历在目。&lt;/p&gt;
&lt;p&gt;养鱼这件事，考验的其实不是动手能力，而是对动物生理学的理解。你得知道什么时候该升温，什么时候该换水，什么时候该喂食，鳗鱼不舒服了会有什么样的表现。&lt;/p&gt;
&lt;p&gt;听起来像养宠物，但养宠物可不需要你给鱼打针。&lt;/p&gt;
&lt;p&gt;有意思的是，鳗鱼总是给人一种“神秘”的印象。这种印象不是来自教科书，而是来自你真的跟它们相处之后，你会发现这种动物有太多地方说不清楚。&lt;/p&gt;
&lt;h3 id="神秘是鳗鱼的底色"&gt;神秘，是鳗鱼的底色&lt;/h3&gt;
&lt;p&gt;鳗鱼的一生需要经历多次变态。从海里孵化的叶状幼体，到透明如玻璃的玻璃鳗，再到河流里的黄鳗，最后变成银光闪闪的银鳗游回大海产卵——这种一生经历多次完全变形的能力，在脊椎动物里相当罕见。&lt;/p&gt;
&lt;p&gt;&lt;img src="life_history.jpg" alt="发育的幼鳗（2022年摄于辽宁大连）"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;发育的幼鳗（2022年摄于辽宁大连）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;但真正让人着迷的，不是变态本身，而是变态背后的那些未解之谜。&lt;/p&gt;
&lt;p&gt;比如说，鳗鱼是怎么找到回家的路的？&lt;/p&gt;
&lt;p&gt;科学家提出了不少假说：地球磁场、嗅觉导航、听觉信号……听起来头头是道，但说白了，我们还是不知道。它们为什么能在茫茫大海里准确地回到出生的那条河？没有人确切知道。&lt;/p&gt;
&lt;p&gt;&lt;img src="Otolith.jpg" alt="日本鳗鲡的耳石（2017年摄于福建泉州）"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;日本鳗鲡的耳石（2017年摄于福建泉州）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;书里有个说法我印象很深：有人把鳗鱼抓到几公里外放生，一两周后，它们居然能准确地回到最初被捕获的地方。&lt;/p&gt;
&lt;p&gt;程老师说，鳗鱼身上有雷达。&lt;/p&gt;
&lt;p&gt;或许吧。&lt;/p&gt;
&lt;p&gt;再比如说，产卵地到底在哪里？&lt;/p&gt;
&lt;p&gt;欧洲鳗鱼和美洲鳗鱼的产卵地基本确定了——大西洋的马尾藻海。但日本鳗鱼的产卵地，科学家们吵了很多年。一说在马里亚纳群岛附近，一说还有别的可能。马里亚纳群岛。&lt;/p&gt;
&lt;h3 id="书中自有颜如玉书中也有鳗鱼"&gt;书中自有颜如玉，书中也有鳗鱼&lt;/h3&gt;
&lt;p&gt;《鳗鱼的旅行》这本书有意思的地方在于，它不是一本正经地给你讲生物学。 作者帕特里克·斯文松是瑞典人，写得很有意思，把鳗鱼的历史、生物学、哲学，甚至自己的童年回忆混在一起读。&lt;/p&gt;
&lt;p&gt;书里提到一个细节：亚里士多德曾经相信鳗鱼是从淤泥里自然生成的。他建议人们在干旱期去观察干涸的池塘，等第一场雨降临时，池塘里就突然满是鳗鱼了——“雨水赋予了它们存在”。&lt;/p&gt;
&lt;p&gt;现在我们知道这是错的。但在那个没有显微镜、没有实验方法的年代，这种猜测似乎也合情合理。更有意思的是，几千年后，我们有了先进得多的技术，鳗鱼依然有办法让我们困惑。&lt;/p&gt;
&lt;p&gt;书里还提到，鳗鱼问题存在的时间“跟自然科学的历史一样长”。一种我们每天都能在市场和餐桌上见到的鱼繁殖方式至今仍保持隐秘，这听起来有点讽刺，但也恰恰说明了自然的复杂性远超我们的理解。&lt;/p&gt;
&lt;p&gt;我在想，本科那两年，我们实验室里养的鳗鱼，最后都怎么样了？&lt;/p&gt;
&lt;p&gt;大概率是为科学事业往生了，总不会是放生了。&lt;/p&gt;
&lt;p&gt;不是以我希望的方式结束。&lt;/p&gt;
&lt;p&gt;后来转了方向，本科毕业后就没再碰过鳗鱼。&lt;/p&gt;
&lt;p&gt;一两年后偶然翻到这本书，确实想起了一些往事，但也就是想想而已。&lt;/p&gt;
&lt;p&gt;书中引用了一位哲学家托马斯·纳格尔1974年写的那篇著名文章——《身为蝙蝠是一种什么体验》。这个问题同样可以问鳗鱼：身为一条鳗鱼是什么体验？&lt;/p&gt;
&lt;p&gt;我们用尽了各种方法去研究它们，基因、激素、追踪器、卫星定位……但我们真的理解它们吗？&lt;/p&gt;
&lt;p&gt;我不知道。&lt;/p&gt;
&lt;p&gt;但有时候我反而觉得，正是这种“不知道”，让鳗鱼变得有趣。&lt;/p&gt;
&lt;p&gt;如果你对这种神秘的生物感兴趣，或者只是想找本书打发一下午，《鳗鱼的旅行》值得一读。它不会告诉你鳗鱼是什么——因为没人知道。它只会告诉你，鳗鱼有多神秘，以及人类为了破解这个谜，花了多少力气。&lt;/p&gt;
&lt;h3 id="附录读书笔记摘录"&gt;附录：读书笔记（摘录）&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;马尾藻海是一片没有陆地边界的海洋，它只是由四股强大的海流围起来的……500多万平方公里的马尾藻海就像在由海流封闭起来的圆圈里打转的一个温暖又缓慢的漩涡。进入这片海域的东西，要想出去就没有那么简单了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;如果因为外力被冲到其他地方，只要情况一允许，它们就会立刻返回自己所选择的住处。那些在实验中被捕获的鳗鱼被装上无线电发射器后，在距捕获地几公里远的地方被放生，可一两周之内它们就会准确地回到它们最初被捕获的地方。没有人确切地知道它们是如何找回家的。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;亚里士多德建议：在干旱期去观察一个干涸的池塘。所有的水都被蒸发掉了，所有的淤泥和土都被晒干了，硬化了的池塘底部已经完全不存在生命了……但是当第一场雨降临时，当雨水缓缓地重新灌满池塘时，奇妙的事情发生了。一瞬间，池塘里又满是鳗鱼了。突然间，它们就在那里了。雨水赋予了它们存在。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;在鳗鱼这个问题上，那些本来博学的人，在某种程度上却总是受到信仰的摆布。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;有一种鱼，在全世界很多地方都比其他鱼更常见，我们每天都能在市场和餐桌上见到它们，尽管现代科学界花了那么多力气做了那么多实验，它们仍然能够使自己的繁殖、出生、死亡方式保持隐秘。鳗鱼问题存在的时间，跟自然科学的历史一样长。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;遇到一条鳗鱼差不多就像遇到一个去过地球上最美丽、最遥远地方的人；我立刻就能看到一幅生动的景象，那是鳗鱼去过的神秘地方，是我——作为人类——永远无法造访的地方。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;我们似乎被困在了一种“乌托邦僵局”中。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;——选自 [瑞典] 帕特里克·斯文松《鳗鱼的旅行》&lt;/p&gt;</description></item><item><title>普林斯顿微积分读本 IX</title><link>https://touchingfish.top/calculus101/2021-cal9/</link><pubDate>Mon, 21 Jun 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/calculus101/2021-cal9/</guid><description>&lt;h1 id="参数方程和极坐标"&gt;§参数方程和极坐标&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;参数方程（parametric equations）、图像和切线（tangents）&lt;/li&gt;
&lt;li&gt;笛卡尔坐标（Cartesian coordinates）和极坐标（polar coordinates）的转换&lt;/li&gt;
&lt;li&gt;极坐标曲线（polar curve）的切线&lt;/li&gt;
&lt;li&gt;极坐标曲线围成的面积&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="271-参数方程"&gt;27.1 参数方程&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;hellip;suppose that both $x$ and $y$ are functions of another variable $t$.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;$x=3\cos(t)$ 和 $y=3\sin(t)$，其中 $0{\leq}t{\leq}2\pi$ 是圆 $x^2+y^2=9$ 的参数化（parametrization）&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The variable $t$ is called a parameter, and the above equations are called &lt;em&gt;parametric equations&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;描点作图：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;$t$&lt;/th&gt;
 &lt;th&gt;$0$&lt;/th&gt;
 &lt;th&gt;$\pi/6$&lt;/th&gt;
 &lt;th&gt;$\pi/4$&lt;/th&gt;
 &lt;th&gt;$\pi/3$&lt;/th&gt;
 &lt;th&gt;$\pi/2$&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;$x$&lt;/td&gt;
 &lt;td&gt;$3$&lt;/td&gt;
 &lt;td&gt;$3\sqrt{3}/2$&lt;/td&gt;
 &lt;td&gt;$3/\sqrt{2}$&lt;/td&gt;
 &lt;td&gt;$3/2$&lt;/td&gt;
 &lt;td&gt;$0$&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;$y$&lt;/td&gt;
 &lt;td&gt;$0$&lt;/td&gt;
 &lt;td&gt;$3/2$&lt;/td&gt;
 &lt;td&gt;$3/\sqrt{2}$&lt;/td&gt;
 &lt;td&gt;$3\sqrt{3}/2$&lt;/td&gt;
 &lt;td&gt;$3$&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;可以得到圆（$x^2+y^2=(3\cos(t))^2+(3\sin(t))^2=9$）的四等分弧（quarter-arc）&lt;/p&gt;
&lt;p&gt;$t$ 的周期为 $2\pi$，也可以使 $t$ 从 $0$ 向 $t&lt;0$ 的区间取点作图，得到完整的圆&lt;/p&gt;</description></item><item><title>普林斯顿微积分读本 VIII</title><link>https://touchingfish.top/calculus101/2021-cal8/</link><pubDate>Sat, 19 Jun 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/calculus101/2021-cal8/</guid><description>&lt;h1 id="泰勒多项式泰勒级数与幂级数"&gt;§泰勒多项式、泰勒级数与幂级数&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;近似值（approximations）、泰勒多项式和泰勒近似定理（Taylor approximation theorem）&lt;/li&gt;
&lt;li&gt;近似值的精确度和泰勒定理&lt;/li&gt;
&lt;li&gt;幂级数&lt;/li&gt;
&lt;li&gt;泰勒级数和麦克劳林级数（Maclaurin series）&lt;/li&gt;
&lt;li&gt;泰勒级数的收敛性问题&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="241-近似值和泰勒多项式"&gt;24.1 近似值和泰勒多项式&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Here&amp;rsquo;s a nice fact: for any real number $x$, we have
&lt;/p&gt;
$$
&gt; e^x \cong 1 + x + {x^2\over2} + {x^3\over6}
&gt; $$&lt;p&gt;
Also, the closer x is to 0, the better the approximation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="2411-线性化的回顾"&gt;24.1.1 线性化的回顾&lt;/h3&gt;
&lt;p&gt;平滑的函数可经过多次求导（见&lt;em&gt;13.2&lt;/em&gt;），曲线在点 $(a,f(a))$ 处的切线的方程为：
&lt;/p&gt;
$$
y=f(a)+f'(a)(x-a)
$$&lt;p&gt;称为函数 $f$ 在 $x=a$ 处的线性化（linearization）&lt;/p&gt;
&lt;p&gt;线性近似，即&lt;strong&gt;在切点处附近，切线与曲线差别很小&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="2412-二次方程近似"&gt;24.1.2 二次方程近似&lt;/h3&gt;
&lt;p&gt;二次近似（quadratic approximates）
&lt;/p&gt;
$$
y=f(a)+f'(a)(x-a)+{f''(a)\over2}(x-a)^2
$$&lt;p&gt;关于 $x$ 的二次函数&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;$P_2(x)=y$，代入 $x=a$ 时，$P_2(a)=f(a)$&lt;/li&gt;
&lt;li&gt;$P_2'(x)=f'(a)+f''(a)(x-a)$，代入 $x=a$ 时，$P_2'(a)=f'(a)$&lt;/li&gt;
&lt;li&gt;$P_2''(x)=f''(a)$，代入 $x=a$ 时，$P_2''(a)=f'(a)$&lt;/li&gt;
&lt;li&gt;因为 $f''(a)$ 是一个常数，$P_2'''(x)=0$&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;The second-order correction term helps us get even closer to the curve, at least for $x$ near $a$.&lt;/p&gt;</description></item><item><title>普林斯顿微积分读本 VII</title><link>https://touchingfish.top/calculus101/2021-cal7/</link><pubDate>Wed, 09 Jun 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/calculus101/2021-cal7/</guid><description>&lt;h1 id="数列和级数基本概念"&gt;§数列和级数：基本概念&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;数列（sequences）的收敛和发散&lt;/li&gt;
&lt;li&gt;两个重要的数列&lt;/li&gt;
&lt;li&gt;数列极限与函数极限的关系&lt;/li&gt;
&lt;li&gt;级数的收敛与发散，以及几何级数（geometric series）的敛散性&lt;/li&gt;
&lt;li&gt;第 $n$ 项判别法（the $n$th term test for series）&lt;/li&gt;
&lt;li&gt;级数和反常积分的联系&lt;/li&gt;
&lt;li&gt;比式判别法（ratio test）、根式判别法（root test）、积分判别法（integral test）和交错级数判别法（alternating series test）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="221-数列的收敛和发散"&gt;22.1 数列的收敛和发散&lt;/h2&gt;
&lt;p&gt;无穷数列（infinite sequence）的敛散性&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In math notation, does $\lim\limits_{n\to\infty}a_n$ exist, and if so, what is it?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="2211-数列和函数的关系"&gt;22.1.1 数列和函数的关系&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;There&amp;rsquo;s also a connection to horizontal asymptotes:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;若 $\lim\limits_{x\to\infty}f(x)=L$，则 $y=f(x)$ 的图像有水平渐近线 $y=L$&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For example, if you have two convergent sequences $a_n$ and $b_n$, such that $a_n \to L$ and $b_n \to M$ as $n \to \infty$, then the sum $a_n + b_n$ gives a new sequence which converges to $L + M$. The same goes for differences, products, quotients (provided that $M \neq 0$, since you can&amp;rsquo;t divide by $0$), and constant multiples.&lt;/p&gt;</description></item><item><title>有变则通，有通则久</title><link>https://touchingfish.top/2021/alternative-rna-processing/</link><pubDate>Fri, 21 May 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2021/alternative-rna-processing/</guid><description>&lt;p&gt;一上班就收到了《云南蝴蝶大爆发》的直播推送，前段时间在热搜上看到时就颇有兴趣——上学时跟随学院里的两位老师一起到山里观测过蝴蝶，其中一位是生物鉴定达人，另一位则是昆虫学家，他们都是我尊敬的启蒙老师。&lt;/p&gt;
&lt;p&gt;蝴蝶这件事，越想越觉得有意思。毛虫与蝶，同一套基因组，却活出截然不同的两世——并非基因被替换，而是在变态发育中，同一套遗传信息被重新&amp;quot;解读&amp;quot;。犹如换了套剪切方案，羽化出全新的形态与功能。这让我想起古人说的那句&lt;/p&gt;
&lt;p&gt;有变则通，有通则久。&lt;/p&gt;
&lt;p&gt;放在分子生物学的语境下，竟意外贴切。&lt;/p&gt;
&lt;p&gt;人类基因组只有两万多个基因，却构建出如此复杂多样的生命系统，奥秘很大程度上就在转录后的选择性加工里。DNA转录出的初级mRNA，需将内含子剪切移除，外显子相互连接，才能形成成熟的mRNA。但剪切并非只有一种结果——同一个初级转录本，可以保留或跳过某个内含子、包含或排除某个外显子、甚至改变外显子的连接顺序。一套排列组合下来，一个基因能产生数十甚至数百种mRNA变体，翻译出功能各异的蛋白质。&lt;/p&gt;
&lt;p&gt;这便是可变剪切（Alternative Splicing）。&lt;/p&gt;
&lt;p&gt;同一基因在不同组织、不同发育阶段，通过不同的剪切方式产出不同的蛋白质。以神经系统为例，同一基因经不同剪切，可产生对不同神经递质敏感的离子通道蛋白，决定神经元信号传导的特异性。&lt;/p&gt;
&lt;p&gt;另一种同样精妙的机制是可变多聚腺苷酸化（Alternative Polyadenylation）。&lt;/p&gt;
&lt;p&gt;mRNA的3&amp;rsquo;端通常添加poly(A)尾巴，保护其不被降解并协助翻译。但mRNA上可能存在多个潜在的多聚腺苷酸化位点——选择靠近转录起始点的位点时，3&amp;rsquo;端更短，调控序列更少，mRNA更易被降解；选择远端位点时，一些调控元件被保留，影响mRNA的细胞内定位和翻译效率。细胞正是通过选择不同位点，来精细调控mRNA的寿命和翻译时机。&lt;/p&gt;
&lt;p&gt;基因数目有限，却通过这些&amp;quot;变化&amp;quot;极大地拓展了表达的多样性——有限的遗传信息，生生不息。&lt;/p&gt;
&lt;p&gt;云南是下一届《生物多样性公约》缔结大会要召开的地方。云南瑞丽由于地理位置特殊，遭遇了疫情反扑，使原本5月的大会推迟到10月。不然刚好能赶上蝴蝶大爆发的景象，实在可惜。&lt;/p&gt;
&lt;p&gt;如果没有记错，明天是国际生物多样性日。&lt;/p&gt;
&lt;p&gt;生物多样性为什么如此重要？这取决于人们对生态系统自然修复能力的态度是否乐观，出于我们的伦理，以及对复杂的敬畏。在物质极大丰富的时代，智人占有的自然资源和掌握的科学技术，换来寿命的延长和物种的安定，至于这些在多大程度上威胁到其他生物的生存，我想并不容易界定。&lt;/p&gt;
&lt;p&gt;一种稀有生物的灭绝对目前这代人的影响大都不是肉眼可见的，不过我们还是尽可能从可持续的角度出发。持对立价值观的人则少有为资源忧虑，但也仍然会面对疾病的挑战。病毒是简单的生命形式，在全球化背景下带来了空前规模的疫情。癌变则像一套23册的书卷（每本约1000页），仅仅出现了40-60个排字错误，却成为了生命最困难的终极战役。&lt;/p&gt;
&lt;p&gt;幸好，有一部分高明的人（但愿他们并不是自诩&amp;quot;智人为地球的主宰&amp;quot;）考虑到各个物种在系统中隐约发挥着一定的生态作用，提倡人们采取行动，关注生物多样性保护。&lt;/p&gt;
&lt;p&gt;我深受感染。&lt;/p&gt;
&lt;p&gt;从基因的可变剪切到物种的多样并存，&amp;ldquo;变&amp;quot;是生命应对有限资源的根本策略——一个基因通过不同的剪切方式产出多种蛋白质，一个生态系统通过不同的物种组合维持韧性。逻辑同源，尺度不同。&lt;/p&gt;
&lt;p&gt;祝愿后疫情时代的世界，健康和平，焕发新生，羽化成蝶。&lt;/p&gt;</description></item><item><title>普林斯顿微积分读本 V</title><link>https://touchingfish.top/calculus101/2021-cal5/</link><pubDate>Thu, 13 May 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/calculus101/2021-cal5/</guid><description>&lt;h1 id="积分的方法一"&gt;§积分的方法（一）&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;替代法（substitution）&lt;/li&gt;
&lt;li&gt;分部积分法（integration by parts）&lt;/li&gt;
&lt;li&gt;使用部分积分对有理函数求积分&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="181-替代法"&gt;18.1 替代法&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Example1&lt;/strong&gt;
&lt;/p&gt;
$$
\begin{aligned}
\int{x^2\cos(x^3)\mathrm{d}x}
&amp;=\int{\cos(x^3)(x^2\mathrm{d}x)}\\
&amp;=\int{\cos(t)({1\over3}\mathrm{d}t)}={1\over3}\sin(t)+C
\\
\int{e^{2x}\sec^2(e^{2x})\mathrm{d}x}
&amp;=\int{\sec^2(e^{2x})(e^{2x}\mathrm{d}x})\\
&amp;=\int{\sec^2(t)({1\over2}\mathrm{d}t)}={1\over2}\tan(t)+C
\end{aligned}
$$&lt;p&gt;&lt;strong&gt;Example2&lt;/strong&gt;
&lt;/p&gt;
$$
\int{\frac{f'(x)}{f(x)}\mathrm{d}x}=\ln|f(x)|+C
$$&lt;p&gt;&lt;strong&gt;Example3&lt;/strong&gt;
&lt;/p&gt;
$$
\int\frac{1}{x\ln{x}}\mathrm{d}x=\int\frac{1/x}{\ln{x}}\mathrm{d}x=\ln|\ln{x}|+C
$$&lt;h3 id="1811-换元法和定积分"&gt;18.1.1 换元法和定积分&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;So one way to use the substitution method on a definite integral is to focus on the indefinite integral first, then after you&amp;rsquo;ve found it, plug in the limits of integration.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;换元法：先换元求不定积分，然后把积分上下限分别代入求定积分；或者对上下限也进行换元计算&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;
$$
\int_{1/\sqrt{2}}^{\sqrt{3}/2}{\frac{1}{\sin^{-1}(x)\sqrt{1-x^2}}\mathrm{d}x}
$$&lt;p&gt;$\arcsin(x)$ 的导数是 $1\over\sqrt{1-x^2}$，所以用 $t=\arcsin(x)$
&lt;/p&gt;
$$
\int{\frac{1}{\arcsin(x)\sqrt{1-x^2}}\mathrm{d}x}=\int{\frac{1/\sqrt{1-x^2}}{\arcsin(x)}\mathrm{d}x}\int{1\over{t}}\mathrm{d}t=\ln|t|+C
$$&lt;h3 id="1812-替代公式的决定"&gt;18.1.2 替代公式的决定&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>普林斯顿微积分读本 VI</title><link>https://touchingfish.top/calculus101/2021-cal6/</link><pubDate>Thu, 06 May 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/calculus101/2021-cal6/</guid><description>&lt;h1 id="反常积分的基本概念"&gt;§反常积分的基本概念&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;反常积分（improper integrals）的定义、收敛（convergence）和发散（divergence）&lt;/li&gt;
&lt;li&gt;无界区间（over unbounded regions）的反常积分&lt;/li&gt;
&lt;li&gt;比较判别法（comparison test）、极限比较判别法、p 判别法和绝对收敛比较判别法的理论基础&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="201-收敛和发散"&gt;20.1 收敛和发散&lt;/h2&gt;
&lt;p&gt;积分有意义：$\int_a^b{f(x)}{\mathrm d}x$ 的被积函数在区间 $[a,b]$ 内&lt;strong&gt;有界且连续&lt;/strong&gt;（有限个间断点也可以）的；或者&lt;strong&gt;无限多个不连续点&lt;/strong&gt;（infinitely many discontinuities）（见&lt;em&gt;16.7&lt;/em&gt;）&lt;/p&gt;
&lt;p&gt;反常积分的定义：满足以下任一条件&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;$f$ 在区间 $[a,b]$ 内无界&lt;/li&gt;
&lt;li&gt;$b=\infty$ 或&lt;/li&gt;
&lt;li&gt;$a=-\infty$&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;If $f(x)$ is unbounded for $x$ near some number $c$, we&amp;rsquo;ll say that f has a &lt;em&gt;blow-up point&lt;/em&gt; at $x = c$. Again, in most situations, this is the same thing as a vertical asymptote.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;破裂点（blow-up point）的大多数情况是垂直渐近线，需要使用极限思想&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;if the integral isn&amp;rsquo;t improper, it automatically converges!&lt;/p&gt;</description></item><item><title>普林斯顿微积分读本 IV</title><link>https://touchingfish.top/calculus101/2021-cal4/</link><pubDate>Mon, 03 May 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/calculus101/2021-cal4/</guid><description>&lt;h1 id="积分"&gt;§积分&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;求和符号（sigma notation）&lt;/li&gt;
&lt;li&gt;位移与面积的关系&lt;/li&gt;
&lt;li&gt;使用分区的方法求面积&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="151-求和符号"&gt;15.1 求和符号&lt;/h2&gt;
&lt;p&gt;求和符号 —— sigma notation&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In general, the number of integers between $A$ and $B$, including $A$ and $B$, is $B - A + 1$.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;注意：$\sum\limits_{A}^{B}$ 共有 $B-A+1$ 个数求和&lt;/p&gt;
&lt;h3 id="1511-一个有用的求和"&gt;15.1.1 一个有用的求和&lt;/h3&gt;
$$
S = \sum_{i=1}^{100}i = \sum_{i=1}^{100}(101-i)
$$&lt;p&gt;$2S = \sum_{i=1}^{100}(i+101-i) = \sum\limits_{i=1}^{100}101$&lt;/p&gt;
&lt;h3 id="1512-伸缩求和法"&gt;15.1.2 伸缩求和法&lt;/h3&gt;
&lt;p&gt;伸缩级数（telescoping series）&lt;/p&gt;
$$
\sum_{j=a}^{b}(f(j)-f(j-1))=f(b)-f(a-1)
$$&lt;h2 id="152-位移与面积"&gt;15.2 位移与面积&lt;/h2&gt;
&lt;h3 id="1524-连续速度"&gt;15.2.4 连续速度&lt;/h3&gt;
$$
mesh=max(t_1 - t_0); (t_2 - t_1); ... ; (t{n-1} - t{n-2}); (t_n - t_{n-1})
$$&lt;p&gt;Riemann sum（黎曼和）：速度曲线下的实际面积&lt;/p&gt;</description></item><item><title>普林斯顿微积分读本 III</title><link>https://touchingfish.top/calculus101/2021-cal3/</link><pubDate>Thu, 15 Apr 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/calculus101/2021-cal3/</guid><description>&lt;h1 id="最优化和线性化"&gt;§最优化和线性化&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;最优化（optimization）&lt;/li&gt;
&lt;li&gt;线性近似（linearization）&lt;/li&gt;
&lt;li&gt;估算函数的零点&lt;/li&gt;
&lt;li&gt;牛顿法（Newton&amp;rsquo;s method）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="131-最优化"&gt;13.1 最优化&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Identify all the variables you might possibly need. One of them should be the quantity you want to maximize or minimize - make sure you know which one! Let&amp;rsquo;s call it $Q$ for now, although of course it might be another letter like $P$, $m$, or $\alpha$.&lt;/li&gt;
&lt;li&gt;Get a feel for the extremes of the situation, seeing how far you can push your variables. (For example, in the problem from the previous section, we saw that $x$ had to be between $2$ and $8$.)&lt;/li&gt;
&lt;li&gt;Write down equations relating the variables. One of them should be an equation for $Q$.&lt;/li&gt;
&lt;li&gt;Try to make $Q$ a function of only one variable, using all your equations to eliminate the other variables.&lt;/li&gt;
&lt;li&gt;Differentiate $Q$ with respect to that variable, then find the critical points; remember, these occur where the derivative is $0$ or the derivative doesn&amp;rsquo;t exist.&lt;/li&gt;
&lt;li&gt;Find the values of $Q$ at all the critical points and at the endpoints. Pick out the maximum and minimum values. As a verification, use a table of signs or the sign of the second derivative to classify the critical points.&lt;/li&gt;
&lt;li&gt;Write out a summary of what you&amp;rsquo;ve found, identifying the variables in words rather than symbols (wherever possible).&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;考虑所有可能需要的变量&lt;/li&gt;
&lt;li&gt;确认极端变量的可能&lt;/li&gt;
&lt;li&gt;写出不同变量的方程&lt;/li&gt;
&lt;li&gt;构建单变量函数&lt;/li&gt;
&lt;li&gt;求导，计算临界点&lt;/li&gt;
&lt;li&gt;计算临界点及端点的函数值，使用一阶或二阶导数判断最大值和最小值&lt;/li&gt;
&lt;li&gt;结论&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;注意：构建单变量函数时，有时候可以通过隐函数求导&lt;/p&gt;</description></item><item><title>普林斯顿微积分读本 II</title><link>https://touchingfish.top/calculus101/2021-cal2/</link><pubDate>Mon, 12 Apr 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/calculus101/2021-cal2/</guid><description>&lt;h1 id="微分"&gt;§微分&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;通过定义求导&lt;/li&gt;
&lt;li&gt;乘法法则、除法法则和链式法则&lt;/li&gt;
&lt;li&gt;切线方程&lt;/li&gt;
&lt;li&gt;速度和加速度&lt;/li&gt;
&lt;li&gt;求导数伪装的极限&lt;/li&gt;
&lt;li&gt;分段函数的求导&lt;/li&gt;
&lt;li&gt;根据函数图像画出导函数的图像&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="61-通过定义求导"&gt;6.1 通过定义求导&lt;/h2&gt;
&lt;p&gt;定义：
&lt;/p&gt;
$$
f'(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}
$$&lt;p&gt;例如，$\frac{\mathrm d}{\mathrm d x}({1 \over x}) = -\frac{1}{x^2}$ 和 $\frac{\mathrm d}{\mathrm d x}(\sqrt x) = \frac{1}{2\sqrt x}$&lt;/p&gt;
&lt;p&gt;幂函数 $f(x) = x^n$ 的导数的推导（略），当 $n &gt; 0, n\in\Bbb{Z}$ 时&lt;/p&gt;
$$
\frac{\mathrm d}{\mathrm d x}(x^n) = nx^{n-1}
$$&lt;p&gt;在上面的两个例子中，可见 $n = -1, n = 1/2$ 时，等式成立&lt;/p&gt;
&lt;p&gt;事实上，对所有实数 $n\in\Bbb{R}$，等式成立（详见&lt;em&gt;第9章&lt;/em&gt;）&lt;/p&gt;
&lt;p&gt;当 $n = 0$ 时，$x^n = 1$，$nx^{n-1} = 0$，$\frac{\mathrm d}{\mathrm d x}(1) = 0$&lt;/p&gt;</description></item><item><title>普林斯顿微积分读本 I</title><link>https://touchingfish.top/calculus101/2021-cal1/</link><pubDate>Fri, 02 Apr 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/calculus101/2021-cal1/</guid><description>&lt;h1 id="函数图像与直线"&gt;§函数、图像与直线&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;函数，定义域（domain）、上域（codomain）、值域（range）和垂直线检验&lt;/li&gt;
&lt;li&gt;反函数和水平线检验&lt;/li&gt;
&lt;li&gt;复合函数&lt;/li&gt;
&lt;li&gt;奇偶性&lt;/li&gt;
&lt;li&gt;函数图像&lt;/li&gt;
&lt;li&gt;绝对值处理&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="11-函数"&gt;1.1 函数&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;it&amp;rsquo;s technically not correct to say &amp;ldquo;$f(x)$ is a function&amp;rdquo;; it should be &amp;ldquo;$f$ is a function.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;$f$ 是一个函数 （√）&lt;/p&gt;
&lt;p&gt;$f(x)$ 是一个函数（×）&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;a function must assign a unique output for each valid input.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;函数：每一个有效输入指定唯一的输出（一一对应）&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The codomain is a set of possible outputs, while the range is the set of actual outputs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;设 $f$ 是从始集 $X$ 到终集 $Y$ 的关系，$f$ 的定义域 $D(G)$ 为 $X$，且对任何 $x \in X$ 都有惟一的 $y\in Y$ 满足 $f(x,y)$，则称 $f$ 为 $X \to Y$ 的映射&lt;/p&gt;</description></item><item><title>可变剪接分析详解 / Alternative Splicing</title><link>https://touchingfish.top/2021/alternative-splice-algorithm-cn/</link><pubDate>Sun, 21 Feb 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2021/alternative-splice-algorithm-cn/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;在真核生物中，一个基因可以通过可变剪接（Alternative Splicing, AS）产生多种
mRNA 亚型（isoform）——即在 pre-mRNA 剪接过程中，通过不同的外显子组合方式，生成不同的
成熟 mRNA。这一机制在不增加基因数目的前提下，极大扩展了蛋白质组（proteome）的多样性。&lt;/p&gt;
&lt;p&gt;一个含有 N 个外显子的基因，理论上最多可产生 2^(N-1) 种剪接变体。实际中，
大多数基因产生 2-10 种亚型，但个别基因（如果蝇 Dscam）可产生数万种剪接变体（splice variant）。&lt;/p&gt;
&lt;h3 id="为什么需要计算分析"&gt;为什么需要计算分析&lt;/h3&gt;
&lt;p&gt;高通量转录组测序（RNA-seq、全长 cDNA 测序）会产生数千条转录本比对到参考基因组
上的结果。人工逐个检查每个基因的剪接变异是不现实的。计算流程需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;将属于同一基因位点的转录本聚类&lt;/li&gt;
&lt;li&gt;区分真正的剪接变体与比对假象（alignment artifact）&lt;/li&gt;
&lt;li&gt;对每种剪接变异进行分类&lt;/li&gt;
&lt;li&gt;对全基因组的 AS 事件进行定量和汇总&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="as-code-的概念"&gt;AS Code 的概念&lt;/h3&gt;
&lt;p&gt;AS Code 体系（Sammeth et al., 2008）提供了一种紧凑、无歧义的记号来描述任意
可变剪接事件。其核心思想是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;对于任意一对重叠的转录本，它们之间不同的剪接位点定义了 AS 事件。将这些差异
位点按位置编号，并标记为供体（^）或受体（-），即可得到唯一描述该事件结构的
编码。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这一编码使得 AS 事件可以被系统地分类为具有生物学意义的类别。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="输入数据与预处理"&gt;输入数据与预处理&lt;/h2&gt;
&lt;h3 id="所需输入文件"&gt;所需输入文件&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;文件&lt;/th&gt;
 &lt;th&gt;格式&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;基因组&lt;/td&gt;
 &lt;td&gt;FASTA&lt;/td&gt;
 &lt;td&gt;参考基因组序列&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;基因注释&lt;/td&gt;
 &lt;td&gt;GTF&lt;/td&gt;
 &lt;td&gt;基因模型及外显子坐标&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cDNA 比对&lt;/td&gt;
 &lt;td&gt;GFF3 (cDNA_match)&lt;/td&gt;
 &lt;td&gt;全长 cDNA 比对结果&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;基因注释提供参考转录本结构；cDNA 比对提供实验观测到的转录本结构，可能揭示注释中
未收录的新剪接变体。&lt;/p&gt;</description></item><item><title>负二项分布和它的朋友（RNA表达量）</title><link>https://touchingfish.top/2021/gamma-poisson/</link><pubDate>Mon, 01 Feb 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2021/gamma-poisson/</guid><description>&lt;h2 id="一个看似奇怪的事实"&gt;一个看似奇怪的事实&lt;/h2&gt;
&lt;p&gt;做RNAseq分析的时候，我们通常会说：表达量计数（read counts）服从负二项分布（Negative Binomial distribution，NB）。这个结论出现在几乎所有主流差异表达分析工具的文档里——DESeq2、edgeR、limma-voom——好像这是一个不言自明的前提。&lt;/p&gt;
&lt;p&gt;但为什么？&lt;/p&gt;
&lt;p&gt;我查过很多资料，大多数解释要么太浅（&amp;ldquo;因为数据过度离散，过dispersed&amp;rdquo;），要么直接跳到公式层面（&amp;ldquo;NB的概率质量函数是……&amp;quot;），要么扯到什么&amp;quot;等待时间&amp;quot;上去（&amp;ldquo;NB描述的是等待r次成功所需的试验次数&amp;rdquo;）——最后一种解释尤其让人困惑，因为RNAseq计数和&amp;quot;等待时间&amp;quot;八竿子打不着。&lt;/p&gt;
&lt;p&gt;所以我想把这件事彻底说清楚。用一个最简单的例子，一步步推出为什么NB是自然的选择，而那个经典的等待时间定义，其实和我们的推导毫无关系。&lt;/p&gt;
&lt;h2 id="从一个直观的例子说起"&gt;从一个直观的例子说起&lt;/h2&gt;
&lt;p&gt;假设我们要研究某个基因在细胞A和细胞B中的表达量。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;细胞内部发生了什么？&lt;/strong&gt; 一个基因要被转录，首先要有RNA聚合酶结合到启动子上，然后开始合成。聚合酶会随机地到达和离开启动子区域，所以转录本身是一个随机过程——在任何给定的时间窗口内，合成出的mRNA分子数是随机的。&lt;/p&gt;
&lt;p&gt;如果我们把观察时间固定（比如观察一秒），转录产生的mRNA数量大致服从Poisson分布。理由是：mRNA的产生可以看作一系列独立的&amp;quot;成功&amp;quot;事件（一次转录起始），在一个固定时间窗口内，Poisson是描述这类计数过程的自然模型。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;但问题来了——Poisson有一个很强的假设：均值等于方差。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对于单细胞来说，均值和方差的关系确实大致如此。但当我们比较&lt;strong&gt;一群细胞&lt;/strong&gt;（比如组织样本中的上万个细胞）时，情况完全不同。即使是同一个基因，不同细胞的表达量也可能差异巨大——有些细胞可能完全不表达，有些高表达。&lt;strong&gt;这种细胞间的异质性（biological variability）会导致整个群体的方差远大于均值。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这就是所谓的&amp;quot;过度离散&amp;rdquo;（overdispersion）。Poisson处理不了这个问题。&lt;/p&gt;
&lt;h2 id="gamma-poisson层级模型"&gt;Gamma-Poisson层级模型&lt;/h2&gt;
&lt;p&gt;解决之道来自一个层级思想。&lt;/p&gt;
&lt;p&gt;我们先承认：不同细胞的真实表达率（$\lambda$）本身是不同的。这种差异可以用一个分布来描述。选什么分布？在统计中，Gamma分布是一个自然的选择——因为它数学上处理起来方便，而且足够灵活，可以描述各种形状的随机变量。&lt;/p&gt;
&lt;p&gt;于是我们构建一个两层模型：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一层（细胞间变异）：&lt;/strong&gt; $\lambda \sim \text{Gamma}(\alpha, \beta)$&lt;/p&gt;
&lt;p&gt;这里 $\lambda$ 代表每个细胞的真实表达率（单位时间内的mRNA平均产量）。$\alpha$ 和 $\beta$ 是Gamma分布的参数。均值 $\mu = \alpha/\beta$，方差 $= \alpha/\beta^2$。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二层（细胞内随机性）：&lt;/strong&gt; 给定 $\lambda$，计数 $X$ 服从Poisson分布：$X | \lambda \sim \text{Poisson}(\lambda)$&lt;/p&gt;
&lt;p&gt;这一层描述的是：即使两个细胞有完全相同的 $\lambda$，由于转录过程本身的随机性，实际观察到的计数也会有波动。&lt;/p&gt;
&lt;p&gt;现在，&lt;strong&gt;把 $\lambda$ 积掉&lt;/strong&gt;（marginalize out），求 $X$ 的边缘分布：&lt;/p&gt;
$$P(X = k) = \int_0^\infty P(X=k|\lambda) \cdot P(\lambda) \, d\lambda$$&lt;p&gt;这个积分的结果是：&lt;/p&gt;
$$P(X = k) = \frac{\Gamma(k+\alpha)}{k! \cdot \Gamma(\alpha)} \left(\frac{\beta}{1+\beta}\right)^\alpha \left(\frac{1}{1+\beta}\right)^k$$&lt;p&gt;而这——恰好就是&lt;strong&gt;负二项分布&lt;/strong&gt;的参数化形式。&lt;/p&gt;</description></item><item><title>2021年1月精神粮票</title><link>https://touchingfish.top/2021/january-books-movies-music/</link><pubDate>Sun, 31 Jan 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2021/january-books-movies-music/</guid><description>&lt;h2 id="书籍"&gt;书籍&lt;/h2&gt;
&lt;p&gt;（2021-01-01）这个月继续阅读《基因传》，一本关于生物学家轶事的书，很适合做科普素材。&lt;/p&gt;
&lt;p&gt;（2021-01-09）重读数学书籍，《普林斯顿微积分读本》一次一气呵成的复习体验，让我好像找到了合适的学习方式。&lt;/p&gt;
&lt;p&gt;（2021-01-10）读了《数学》这本书，看了很久，每次阅读几段文字便有强烈的感想，然后花点时间体会和吸收。&lt;/p&gt;
&lt;p&gt;（2021-01-13）读了一小时《菜根谭》，有点像经书里的《箴言》和《传道书》，一些措辞和比喻值得玩味儿和积累。《牛津：数学》的电子书翻完，只因为排版已经完全影响阅读，还是看纸书更好。&lt;/p&gt;
&lt;p&gt;（2021-01-19）今天把《双螺旋》加入微信读书的书架，什么时候体会到了笔尖，文案和视频都能够出来。&lt;/p&gt;
&lt;p&gt;（2021-01-31）微信读书数据显示，看了34万字的书，实际上在电脑上看《普林斯顿微积分读本》更多，不过一本完整的书都没读完。&lt;/p&gt;
&lt;h2 id="电影与剧集"&gt;电影与剧集&lt;/h2&gt;
&lt;p&gt;（2021-01-01）看完了《神奇女侠》，对漫威和DC的这些电影似乎已经没有从前的兴致了（除了最经典的《蜘蛛侠》吧）。&lt;/p&gt;
&lt;p&gt;（2021-01-02）早上终于还是开始二刷《绝代双骄》了，好想分享自己看剧的吐槽日记。小鱼儿和铁心兰的感情线是我很喜欢的一部分，初恋不过如此吧。&lt;/p&gt;
&lt;p&gt;（2021-01-04）睡前看了两集《甜蜜家园》，第二集开始便没有那种惊悚的压迫感了，甚至有点中二，果然只是一部漫改剧。&lt;/p&gt;
&lt;p&gt;（2021-01-07）一口气看完《甜蜜家园》，像看漫画一样，有点洗海带内味了。因为剧作原创的剧情，没办法通过漫画剧透，有点可惜，至于有没有第二季，我觉得还是个问题。&lt;/p&gt;
&lt;p&gt;（2021-01-18）看了大半天《Run on》，确实好看，不然估计之前看了十二分钟就弃了。&lt;/p&gt;
&lt;p&gt;（2021-01-19）下午看了《Soul》，创意和立意都很好，但是强行上价值，剧情逻辑混乱，让我有点不适。还好有网友同感并指出，原谅了自己一直get不到的情况。庆幸自己没看环游记。&lt;/p&gt;
&lt;p&gt;（2021-01-22）好几天没看《Run on》，还是很无脑赞。《浪姐2》开播了，既想看又不想看，倒是热搜截胡很残忍。没想到湖北卫视在播《非正6》，前两天刚刚关注了一些friends的IG，今天又在屏幕上看到他们。&lt;/p&gt;
&lt;h2 id="综艺节目"&gt;综艺节目&lt;/h2&gt;
&lt;p&gt;（2021-01-01）今晚没有《姐姐的爱乐之程》，因为没有提前关注消息，空等被鸽。&lt;/p&gt;
&lt;p&gt;（2021-01-02）晚上有大本营和爱乐之程，看电视维持我的好心情。姐姐们的节目真是生活赏给我的一颗糖，似乎从选择泉州作为第一站就已经决定了节目能够渐入佳境。&lt;/p&gt;
&lt;p&gt;（2021-01-09）周六看《快乐大本营》已经成为惯例了。虽然很多人说这个节目早已不复当年，但我个人还是很喜欢快乐家族的每一位，就像以前很乐意看《Running Man》一样。&lt;/p&gt;
&lt;p&gt;（2021-01-15）每年过年前都会看一下《把乐带回家》的微电影，原来今年的在十二月底就出来了，还没来得及看。&lt;/p&gt;
&lt;p&gt;（2021-01-16）没有《快本》的周六不是周六，电视罢工也要倒回去看完最后十分钟，太爱周六这些综艺了。&lt;/p&gt;
&lt;p&gt;（2021-01-22）姐姐的节目步入尾声，看一集少一集了。本以为今晚《爱乐之程》收官，没想到还有一期日常，赚了。艾克斯西斯塔昙花一现，却&amp;quot;惊艳&amp;quot;了本命年的我。&lt;/p&gt;
&lt;h2 id="音乐"&gt;音乐&lt;/h2&gt;
&lt;p&gt;（2021-01-02）立了一个无关紧要的flag：把今年网易云音乐每日推荐的第一首歌收集成一个歌单，今天是第二天。&lt;/p&gt;
&lt;p&gt;（2021-01-08）耳机丢了一个，没有心情了。奇怪的是明明该掉在家中，地板上却怎么也找不到，浪费了生命中宝贵的一小时，原本应该用来录歌的时间。&lt;/p&gt;
&lt;p&gt;（2021-01-13）差点忘记收藏日推的仪式，这样下去很有可能会有一天miss，于是设置了备忘提醒。&lt;/p&gt;
&lt;p&gt;（2021-01-17）终于还是买了新的蓝牙耳机，过几天就能用上了吧。&lt;/p&gt;
&lt;p&gt;（2021-01-20）新耳机到了。&lt;/p&gt;
&lt;p&gt;（2021-01-26）突然想起有个马思惠妹妹深得我心，于是找了两首新歌听。&lt;/p&gt;
&lt;p&gt;（2021-01-29）出门懒得跑步，唱歌录音效果极差，好想要一副新耳机。&lt;/p&gt;
&lt;p&gt;（2021-01-30）听到一首很棒的歌。&lt;/p&gt;
&lt;p&gt;（2021-01-31）一月结束，每天收藏第一首歌的成就达成。&lt;/p&gt;</description></item><item><title>年末综合征（New Year's Eve Reaction）</title><link>https://touchingfish.top/2020/symptoms-at-the-end-of-the-year/</link><pubDate>Fri, 25 Dec 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2020/symptoms-at-the-end-of-the-year/</guid><description>&lt;p&gt;从15年开始，一到年末，状态就很消沉。很Sad的一天，又是一年一度的研究生考试，可是又不知道我们为什么去考？太想做的事情往往会事与愿违。&lt;/p&gt;
&lt;p&gt;有些人以为自己擅长在年末总结得失，却难免关注于影响最大的几件事情，或者被近况所局限。&lt;/p&gt;
&lt;p&gt;一年下来，虽然不能坚持每天完成日记，但也算记录了完整的心路历程。&lt;/p&gt;
&lt;p&gt;今天是圣诞节，刚好回家一年了。没有完成任何社会化。据不完全统计，失眠的天数约为365天。&lt;/p&gt;
&lt;p&gt;我学会了如何阅读，或者说，如何学习。年初立下的二十本书的阅读计划，也因为最后七十天的备考，看教科书和辅导书实现了。如果不是疫情，我也不知道自己会多看还是少看几本。从寒假开始，刻意关注自己的意志，寻找快乐和目标。借着居家的时期，完成心理的修炼，以找到人格的能源，并在之后的经历中再三确认。&lt;/p&gt;
&lt;p&gt;春暖花开时节，出发探索自己的道路，渐渐被一些志同道合的“前辈”吸引。虽然他们偶尔分享的经验也像在夸夸其谈，是我早已摸索出的办法，但和组织有序的团队相比，确实感觉到资源的匮乏和能力的不足。羡慕那些单枪匹马的孤胆英雄，能成为这种人也依赖于过硬的实力。做完第一个视频后，认识到自己还需要更多的沉淀。当然，也可能有对原创和首创的过于执着，才要求我做更多的训练。也许这是我对「去完成一个PhD」那么向往的原因吧。&lt;/p&gt;
&lt;p&gt;转而继续有意识地投入于学习中。如今想来，今年完成的第一件事是最正确的选择。很庆幸把“学会如何学习”放在了第一位。曾经也自认为是个自学小能手，但是很少理清和理出一套合适自己的方法论。这贯穿了整年的学习经验。到年末逐渐感受到，可能是因为涉猎广泛又浅尝辄止，导致思维太过跳跃而缺乏逻辑，需要时刻提醒自己加强逻辑训练。&lt;/p&gt;
&lt;p&gt;今年印象最深的也包括选秀节目吧。不只是娱乐节目的表面，也让我看到了各种类型的职业所面临的遭遇。人们不被理解才是常态，总觉得别人不理解自己的辛酸，我们其实也很难共情别人的不幸。求学之路难走得多，因为它伴随着令人不适的意识形态，需要学会高举轻放。一年里，不知道是自己有意无意地多看了一眼高校的新闻，还是确实「世态炎凉」。层出不穷的热搜一直激化内心的矛盾。早上看了基德对这些事件的评论，最大的感受就像近日常在心里念叨的“道理都懂，却过不好这一生”。当一件痛苦的事情能够被共情，这种痛苦早已经比它本身深刻得多。&lt;/p&gt;
&lt;p&gt;幸运和不幸作为一对反义词，从程度上讲，不幸却沉重许多。有时候，恰恰是我们的运气好坏造成了最大的不幸。&lt;/p&gt;
&lt;p&gt;为了有更多时间思考关于自我的问题，早已经关闭朋友圈一个季度了。更没有通过什么途径了解大家的近况，聊天窗口经常是停在星期几，或几月几日（而不是确切的时间和几天前）。虽然一直有发些无关紧要的动态，但从来不关心回复，只是在给那些还记得我的友人们报平安。读圣经，最重要的启示发在了年中的朋友圈里，那也是苟延残喘的救命之索。&lt;/p&gt;</description></item><item><title>再来一次吗？重新出发前的夏日</title><link>https://touchingfish.top/2020/mid-summer-festival/</link><pubDate>Fri, 16 Oct 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2020/mid-summer-festival/</guid><description>&lt;p&gt;南方的夏日长得感人。我曾经在去年的中秋节开玩笑：“这哪里是 Mid-Autumn Festival，完全就是 Mid-Summer Festival 吧。”&lt;/p&gt;
&lt;h2 id="20200716"&gt;2020.07.16&lt;/h2&gt;
&lt;p&gt;这两天鼻炎好像又来搞我了，有一个明显的症状是起床的时候，感觉鼻甲非常脆弱，一受刺激就要开始发作了，所以常刷牙洗脸都要小心翼翼。也许是惩罚我前天把喷雾摔到了地上，现在用起来都觉得有点小小毛病。于是今天在鼻炎中度过。流鼻涕，流鼻涕。我也怀疑是感冒，但感冒康复起来没这么随便吧，总之这两年我也分不清自己什么时候感冒，什么时候鼻炎了。&lt;/p&gt;
&lt;p&gt;下午看了一会儿 C 语言八股文。做点事情，症状有所好转。晚上洗完澡之后就更好些了，特别是喝了奶茶以后——&lt;/p&gt;
&lt;p&gt;八点多自己在家的时候，挺想叫个外卖，喝杯奶茶，忍住了（可能是懒的到店取餐？）。没想到妈妈回家的时候也问要不要喝杯奶茶。我想她不知道喝奶茶其实很容易失眠，这莫名其妙成了一种流行病。不过感觉妈妈真的很包容我，很关照我。&lt;/p&gt;
&lt;p&gt;某蓝绿色求职app收到了一个消息，真正意义上被我“吸引”的一位老板，名字起得也是很有气质，跟我喜欢的男性声乐艺人LYJ同音。分享了一下前段时间做的科普视频，刚刚才看到回复，印象还不错吧。希望有机会见个面，投机的话可以一起做些有趣的事情。虽然是以学习的心态在找工作，但探索也是一种学习，和我这些年玩得还可以的“自学”一样，全靠自己摸索。&lt;/p&gt;
&lt;h2 id="20200717"&gt;2020.07.17&lt;/h2&gt;
&lt;p&gt;晚饭后，犹豫了一下决定去跑步。抠门的我想到骑行卡还有次数没用完，不想浪费。一路小跑，居然不带喘地跑到了海滨路，几个红灯也很给面子，不给暂停的机会。小步跑的话，体力已经能够跟上了。休息了一会儿，继续跑了一公里也是没有拉胯。看来底子还是不错的，才坚持锻炼了三四次，耐力恢复得很快。&lt;/p&gt;
&lt;p&gt;看《想见你》的时候，给她画了时间轴解释剧情，自己理解剧情可能不是问题，表达清楚到让别人也理解，是有点难度的（起码我还得下点功夫）。&lt;/p&gt;
&lt;h2 id="20200721"&gt;2020.07.21&lt;/h2&gt;
&lt;p&gt;因为熊浩和辩论，去到一个有意思的公司，认识了一个有意思的人。如果互相欣赏，能够一起合作一段时间也是蛮好。&lt;/p&gt;
&lt;p&gt;事与愿违，对他们来说可能只是跟一个没经历过社会毒打的普通毕业生聊了一下，对我来说却是——&lt;/p&gt;
&lt;p&gt;我只是一个想要认真生活的普通人，普通到觉得每个月有点固定收入也改变不了现状，普通到就算时间倒转十年一百次也可能没办法成功地实现自己的理想。&lt;/p&gt;
&lt;h2 id="20200923"&gt;2020.09.23&lt;/h2&gt;
&lt;p&gt;以前说要保持写日记的习惯，实际上每天写也并不简单，总是因为各种奇奇怪怪的原因（懒？）而停下。晚上读了二三月的日记，记录了不少思想的变化，对构建自我认知和确定目标规划的帮助还是挺大的，所以好习惯应该得到保持。&lt;/p&gt;
&lt;p&gt;一觉睡到了中午，把昨天缺少的睡眠补得有点过头。“行为决定态度”，希望能够把作息改过来。&lt;/p&gt;
&lt;p&gt;和老同桌去打球。前段时间怎么没想着这个点出来打球就没人呢？哦，太热了吧。有种包场的感觉，不过投篮养生一小时也有一点累。实际上是参加了一个场下吐槽的活动。二十几岁还能跳得动，真不简单。回家洗澡吃饭后开始头疼，一入夜（十一点半）人突然就好了。看了我真的是暗属性，夜间生产效率 max。&lt;/p&gt;
&lt;p&gt;原来妈妈做个家教都有 3000 多工资，我这种菜鸡本科生也太难了。接了一份兼职，马上我也要做点新工作了。&lt;/p&gt;
&lt;p&gt;其实，早意识到自己有个小毛病，有时候对陌生的工作，包括第一次做的实验，总会害怕出错，显得自己笨手笨脚。嗐，明明学习和实践一下我能做得比大多数好。不过前两天有个不同的想法：或许别人并不会因为这种小事把你划入“不行”的群体。欣赏一个人既要全面，更要看到他最闪光的地方，也许正是最不可替代的。所以，我之前是把别人想得心胸狭窄了？&lt;/p&gt;
&lt;h2 id="20200928"&gt;2020.09.28&lt;/h2&gt;
&lt;p&gt;《新工作》&lt;/p&gt;
&lt;p&gt;好感一：同事和领导都挺好。虽然现在还不是很了解，但能包容我这种生无可恋的上班状态已经让我很感恩了。&lt;/p&gt;
&lt;p&gt;好感二：禁烟场所，我可太喜欢了。保温杯泡枸杞，上班养生。&lt;/p&gt;
&lt;p&gt;好感三，工作内容简单，基本不会出错。虽然划水三天了，还是有些细节不太了解。额，也没人给我交代得很清楚啊，大概我也不需要知道太清楚吧。&lt;/p&gt;
&lt;p&gt;好感四：亲情，爱情，友情。有陪父母来看电影的年轻人，跟他们沟通最高效，也很理解和配合。带孩子来观影的家长们，大概和孩子相处多了，都比较可爱。交往约会的男男女女，一般会在服务工作人员面前表现得更加友善来博取异性的好感吧。结对或成群的好友，年龄段不限，“老朋友”一起来电影真是令人羡慕。&lt;/p&gt;
&lt;p&gt;好感五：昨天处理了一只粘鼠板上的老鼠，当年实验课对勇气的锻炼效果仿佛派上了用场。&lt;/p&gt;
&lt;h2 id="20200930"&gt;2020.09.30&lt;/h2&gt;
&lt;p&gt;习惯性丢伞。&lt;/p&gt;
&lt;p&gt;一辈子不知道要犯几次同样的错误。&lt;/p&gt;
&lt;p&gt;凌晨四点半，跑到马路上确认刚刚那辆共享单车还在不在。&lt;/p&gt;
&lt;p&gt;不会再有下一把了。&lt;/p&gt;
&lt;h2 id="20200930-1"&gt;2020.09.30&lt;/h2&gt;
&lt;p&gt;泉州是我的第二故乡。当我在泉州时，想念家乡的亲人和朋友，回忆孩童的天真。当我在家乡时，牵挂泉州的师长和同窗，怀念大学的青春。&lt;/p&gt;
&lt;p&gt;去年的中秋，还记得特别清楚。当时我已经没住在学校，那天中午，汕大课题组的友人还叫我一起去玩。天气很热，我写了“Mid-Summer Festival”的烂梗。昨天晚上，看着师兄师姐，还有两位姐妹似乎牢骚的文字，便猜想组会他又是一次正常发挥。我“逃”了，没有和大家一起面对。&lt;/p&gt;
&lt;p&gt;七十周年阅兵时，我对象牙塔外的世界并没有想太多。我选择了逆行真气，自断经脉。以为是 gap，没想到一年的人生 debug 就这样过去了。&lt;/p&gt;
&lt;p&gt;在海边散步时，收到了蒋老师的问候：“今年的考研会报名吗？”。嗯——&lt;/p&gt;
&lt;p&gt;做了重新开始的决定后，积累还远远不够，却渐渐感到了来自卷王们的“压迫感”。幸运的是，身上还保留了一丝理想主义者的心气。在这个年代也不知道是可贵还是可怜了。时常思考有什么一辈子非做不可的事情吗？双节又至，即使武功尽失，也想要再闯江湖。&lt;/p&gt;
&lt;h2 id="20201004"&gt;2020.10.04&lt;/h2&gt;
&lt;p&gt;继《新工作》——&lt;/p&gt;
&lt;p&gt;场务的同事有两个。&lt;/p&gt;
&lt;p&gt;早班的是一位女生。看起来知书达礼，应该还在上学。下班换掉工作服后，穿着打扮也很有自己的风格。工作可以说是认真负责，检票登记时，对每位客人都能假装测一下体温。不过偶尔犯点小迷糊，左右不分，说话也稍欠逻辑。最明显的优点和缺点都是特别勤劳。&lt;/p&gt;
&lt;p&gt;说实话，能有一个眼里都是活儿的同事一起合作会轻松很多，但相对而言，显得我有一丝懒惰。散场需要打扫卫生，好几次她都成功地在我之前到厅里收拾。倒不是在意别人的眼光，作为一个有绅士包袱的男生，让共事的女同志做清理的工作，内心难免有些惭愧，同时再次对她的勤劳表示欣赏。&lt;/p&gt;
&lt;p&gt;晚班的哥们儿，一言难尽。对男生来说，初次见面还是不容易尴尬的，不过注意到了他的牙结石，应该是个抽烟的人。大概率没判断错，有一次在他身边闻到一点残留的烟草味。观察他谈吐和做事的方式，断定他接受的教育水平不高。用老李的话讲，看起来是个不懂高等数学的人。&lt;/p&gt;
&lt;p&gt;具体来看，有好几个典型骚操作。口罩卖光了，不及时问同事和补货，就让客人自己去前台问。保洁的阿姨上班之前，必要的卫生工作从不完成，散场不打扫，垃圾桶满了也无视，问就是拖到保洁阿姨来做。不是眼里看不到活儿，提醒他也不起作用，工作态度甚至比我懒散。说来应该是毫无责任感和服务意识，完全不考虑这段时间产生的垃圾丢在哪里。检票时倒像个无情的销售机器，开口永远只有一句话术——“你们有带口罩吗”，捆绑销售，无情逼单，在一定程度上影响了顾客的观影心情。我个人感觉更为重要的疫情进出登记，他当然是能省则省。哦，看来不只不懂高数。&lt;/p&gt;</description></item><item><title>高高举起，轻轻放下</title><link>https://touchingfish.top/2020/raise-high-and-lower-gently/</link><pubDate>Fri, 16 Oct 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2020/raise-high-and-lower-gently/</guid><description>&lt;p&gt;最近的两则“绝笔”新闻挺震撼的。&lt;/p&gt;
&lt;p&gt;“来世作猫”的朋友，写得很让人共情。这样的文字，在我的日记里大概也能精炼出几千字——对现状表现出微笑的绝望，却不敢对未来有一点浮想。&lt;/p&gt;
&lt;p&gt;相似的人太多了。就像我去年考上研究生的时候，虽然并不认为是件值得一提的事情，至少解决了一个短期规划的问题——围绕着新的学生生活展开。&lt;/p&gt;
&lt;p&gt;我得恩师赏识，有志于科研，这使我和大多数人考研初衷不同。当时我对未来还有期待。&lt;/p&gt;
&lt;p&gt;做“第一个大学生”是很难的。家里有些亲戚会把你的升学当成“光宗耀祖”的事情一样。大概在他们影响下，我也有点膈应。这也许是促成最后退学的一个隐藏原因。&lt;/p&gt;
&lt;p&gt;今天不聊学校的事情，只说家人的“眼光”。做决定时，我也想了很多，但跟其他人交流得很少。我预想到，越多人的建议，越会影响我做自己的判断。我算逃避吗？也许退学这件事还不算，但在一些人眼中有点胡作非为是肯定的。真正让我承认逃避的，是那一年没有坚持去重考。&lt;/p&gt;
&lt;p&gt;原因一是我的期待变高了，我意识到短时间内很难做到力争上游；再是确实自我效能低下，除了伴随而来的难度增加，对重蹈覆辙的恐惧也使我畏缩不前；还有对亲眼所见的一些事实真相感到失望和无力——从此所有期待都化为乌有。&lt;/p&gt;
&lt;p&gt;后来，我选择了普普通通的生活，其实是开始一种新的探索。新事物对我而言有一种奇怪的吸引力。直到今年开春时，我还在普通中寻找答案。早在两年前，我就已经“万念俱灰”过了，如果有相同的体验，会感觉这四个字其实很贴切。&lt;/p&gt;
&lt;p&gt;我一直不知道自己是为什么活着。细想来，花花世界并没有我真正留恋的。当时是学习和阅读拯救了我，独处的宁静换来内心的平和。在看 Tal 的课程时，我做了 V.I.A 的测试——我的人格力量来源于学习（排第一）。从此给了我一些心理暗示。回想过去的一些经历，包括不久后在圣经里看到“那个世界没有知识”，我告诉自己：也许离开之前我想多了解一些知识，不管是学习别人的知识，还是自己发现的新知。就算明天是最后一天，能平平静静地在阅读和学习中度过，也安心了。&lt;/p&gt;
&lt;p&gt;我承认，自己有时也犯这毛病——把希望寄托在“万一”上面。即使我能如他人的期望，做一点事情——通俗地讲，赚一点钱，对现状的帮助实际上也只是“一点”的层面。我也不相信天道酬勤，勤劳不一定是有效的积累。勤劳能不能致富我也不知道，至少现实中看来勤劳脱贫几乎是不可能的。（讽刺的逻辑……）但我相信厚积薄发，说不定有生之年真的能知识改变命运呢。相信有效积累的我也决定让自己的战线拉长，遇到生命意外消亡也无所谓吧。&lt;/p&gt;
&lt;p&gt;M老师的文字，让我敬佩之情油然而生。真正的伟大事业奋斗者当是如此吧——至少和我读到的，而不是看到的一样。人生走到这个阶段，还能做个坚毅的理想主义者（不知道这样说是否欠妥）实属不易。若是一路与之抗争，走到今天的位置应该已经千疮百孔了。平心而论，我看不惯的太多，却成为不了一个能反抗的人。&lt;/p&gt;
&lt;p&gt;想起恩师在学校的时候，因为校长和院长的人事变动，从此院里连实验室都提供不了。在他合同到期，临近离校前，还在遗憾没能给我们提供更好的条件，带我们学习和做实验。&lt;/p&gt;
&lt;p&gt;有时候会想，有些人是不是小时候穷怕了。看到网友转载的几段来自人民日报的年代久远的论述，深刻意识到，藏在人性中贪婪的一面从来没有真正地淡化，相反，此刻义愤填膺者的记忆却是消失得最快的。我不知道怎么避免自己成为一个无情无记忆的普通网友，也不知道自己写出的文字会不会沦为“过激言论”。&lt;/p&gt;
&lt;p&gt;“高高举起，轻轻放下”。&lt;/p&gt;</description></item><item><title>大家当不了卷王，各自忙着转行</title><link>https://touchingfish.top/2020/cant-be-the-top-performer/</link><pubDate>Wed, 16 Sep 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2020/cant-be-the-top-performer/</guid><description>&lt;p&gt;和老同桌（简称&amp;quot;老李&amp;quot;）见了一面。从高二以后就没再联系了，如果大家还在上学，今年就是研二。&lt;/p&gt;
&lt;p&gt;老李是广横走大学软工毕业，在微博上自嘲过&amp;quot;什么也不会&amp;quot;，对「b站编程天才少年」表示自愧不如。实际上，他也算是理科的学霸了，今天听他讲两句&amp;quot;人话&amp;quot;（不是动态上修饰了又修饰的文字），和我了解的一样。&lt;/p&gt;
&lt;p&gt;说起刷面试算法题，他自认为是在行的。毕竟底层的逻辑终究是数学思维，我十分认可他的能力。但项目并不这样，每个人只负责一小部分，架构的工作还是要靠有能力和经验的工程师。编程的体验不同，获得成就感的进度条也慢很多，所以他认为自己不适合。&lt;/p&gt;
&lt;p&gt;老李一直是个脑回路很新奇的人，跟他的微博一样，还有初中时爱写的打油诗，简直可以说是当代 freestyle 的先驱。聊起彼此这些年彪悍的人生，确实值得用文字记录下来。说来也巧，我们都是喜欢写日记的非正常人。不过他给我的理由，更是刺激我保持写作的习惯——&lt;strong&gt;日记是一件别人不能帮你做的事情&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;一开始以为他想当个老师，只是因为感觉自己&amp;quot;学艺不精&amp;quot;，多聊了两句才知道他对脱口秀情有独钟。不得不说，脱口秀跟他的气质太搭了，有趣的逻辑，深刻的思考，诙谐的表达。他说有过一次表演的经验，虽然没有得到良好的反馈，但收获难忘难得的巅峰体验。&lt;/p&gt;
&lt;p&gt;像每个独立思考的大学生一样，在大三的时候迷茫和焦虑达到顶峰，早在当时他就萌生了这样的想法。在他身边，是一群就读于被时代选中的专业的高材生，面对的诱惑是可以想象的。没有另一个像他一样的人，其实意志也并不坚定到可以完完全全地做自己。所以，现在算是他重新出发追求梦想。&lt;/p&gt;
&lt;p&gt;其实挺佩服他这样子，想清楚之后有所规划一顿猛干。生活便是素材的积累，这些经历经验，都能够成为他以后创造的灵感来源吧。&lt;/p&gt;
&lt;p&gt;我在大三时，做了一个很理想主义的决定，为了成为科学家而努力。如此朴实的考研的初衷，让我在本科最后的阶段越来越孤独。只能安慰自己，在其他学校可能像我一样的学生就多点了吧。并不是后悔，说实话，我有一种迷之自信。大家对我评价和期待都还挺不低的。特别是恩师的称赞——&amp;ldquo;300名学生中最杰出者&amp;rdquo;——让我倍感&amp;quot;捧杀&amp;quot;之压力。&lt;/p&gt;
&lt;p&gt;对我而言，越是了解一个领域的知识，越是不觉得自己有任何厉害之处。一时的领先，也许只是接触得比周围的人相对早些。况且我并不是学到了什么一手知识，现在的学习资源比当时丰富太多。可以找到一门科目的教学课程，完整地看完。通常是想要了解科班的学生对一个知识点需要认识到什么程度，好知道自己是不是需要查缺补漏。结果自然是&amp;quot;我还差得很远&amp;quot;。&lt;/p&gt;
&lt;p&gt;可能自己明明就没那么值得夸赞，也没达到有能力去追求科学梦想的水平（这里是去&amp;quot;追求&amp;quot;的能力，&amp;ldquo;实现&amp;quot;更是天方夜谭吧）。若是再在这条路上坚持，也许会有进步，但盲目自信是不会回应理想主义的。&lt;/p&gt;
&lt;p&gt;强如中大软工的老李，都觉得自己不适合IT。现在，刷到python广告会像看笑话一样。在网上看软件开发的职业培训课程时，也从弹幕感到大家的基础并不差。这些朋友尚且需要培训的加成，才能找到不错的工作，在没有积累的情况下能速成转码是一种纸上谈兵吧。&lt;/p&gt;
&lt;p&gt;人人都在转码，但并不是选对了方向你就行了。越是理想化，越容易受&amp;quot;幸存者偏差&amp;quot;的欺骗。要说门槛，计算机确实不算高。如果有更多时间努力，一定会有收获。做哪件事情不得脚踏实地（沉默成本）呢？再是多考虑一层&amp;quot;变现&amp;quot;而已。甩锅给内卷并不理智。&lt;/p&gt;
&lt;p&gt;因为选择，必然会错过一些最好的时机。转行意愿强烈的朋友，值得拥有更好的展示自我的机会。但生活游戏就是这样。希望朋友们转行一切顺利，也希望吐槽完快点找到能迈出的那一步。&lt;/p&gt;</description></item><item><title>天使飞过：无监管课堂的"自发静默"现象</title><link>https://touchingfish.top/2020/angel-passing-by/</link><pubDate>Wed, 15 Jul 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2020/angel-passing-by/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;相信很多人学生时代都有过这样的经历：没有老师的自习课，教室里像集市一样吵闹；可一旦听到走廊里传来熟悉的脚步声，又能瞬间变得鸦雀无声。&lt;/p&gt;
&lt;p&gt;但更有趣的是，有时候根本不需要老师现身，同学们也能在极其短暂的时间内，不约而同地安静下来。明明没有人喊&amp;quot;老师来了&amp;quot;，明明没有任何明显的警告，可全班就像是商量好了一样，突然就没人说话了。这种&amp;quot;自发静默&amp;quot;的现象，确实耐人寻味。&lt;/p&gt;
&lt;h3 id="群体默契与心理暗示"&gt;群体默契与心理暗示&lt;/h3&gt;
&lt;p&gt;人是社会性的动物，很容易受周围环境的影响。当一个人率先安静下来，其他人也会不自觉地效仿，最终形成某种&amp;quot;无声的默契&amp;quot;。&lt;/p&gt;
&lt;p&gt;此外，心理暗示的作用同样不可忽视——一句&amp;quot;老师来了&amp;quot;，一个示意安静的手势，足以让所有人瞬间进入&amp;quot;课堂模式&amp;quot;，仿佛条件反射般自觉安静下来。&lt;/p&gt;
&lt;h3 id="复杂系统理论"&gt;复杂系统理论&lt;/h3&gt;
&lt;p&gt;我们不妨把课堂看作一个复杂适应系统，学生就是系统中的个体，彼此互动，共同营造课堂氛围。当老师出现，或者有学生率先闭上嘴巴，其他学生也会随之行动——这既是&amp;quot;从众心理&amp;quot;的体现，也是复杂适应系统中&amp;quot;涌现&amp;quot;现象的体现。课堂氛围的变化，也是系统对内外环境变化的自适应。&lt;/p&gt;
&lt;p&gt;那么，什么是复杂适应系统？简单来说，就是由众多相互作用、不断适应的个体所组成的系统。在这个系统中，个体之间并非孤立存在，而是通过种种联系紧密相连，共同构成一个有机整体。个体在与环境及其他个体互动的过程中，不断学习、进化，从而使整个系统呈现出动态平衡和自组织的特性。&lt;/p&gt;
&lt;p&gt;什么是&amp;quot;涌现&amp;quot;？就是系统整体所表现出的性质，并非个体性质的简单叠加，而是由个体之间相互作用所产生的新性质。比如蚁群的智慧，并非单个蚂蚁所具备，而是由无数蚂蚁协同合作所产生的。&lt;/p&gt;
&lt;h2 id="建模思路"&gt;建模思路&lt;/h2&gt;
&lt;p&gt;自习课上高谈阔论，这种行为多少有点&amp;quot;违规&amp;quot;。从小接受的规则意识教育，使我们在违反纪律时产生一种微妙的负罪感，于是在精神上处于一种高度警觉的状态。&lt;/p&gt;
&lt;p&gt;心理学上认为，老师在学生心中具有权威形象，代表着规则和秩序。老师一旦现身，学生潜意识里就会自觉遵守纪律，肃然安静。这就是条件反射——就像巴甫洛夫的狗听到铃声会流口水一样。&lt;/p&gt;
&lt;p&gt;学生的精神处于高度警觉状态，各种感官都被调动起来，随时关注教室外每一个&amp;quot;危险&amp;quot;信号。动物行为学家把这种高度紧张的状态，及表现出应对未知危险的行为趋势称为&amp;quot;冻结反应&amp;quot;（The Freeze Response）。&lt;/p&gt;
&lt;p&gt;如果有人误以为从窗户反光中看到了老师的身影，多会选择噤声自保。随着发声的人减少，环境音量因之降低，反而更能引起其他人的警觉，使其纷纷效仿。在这个正反馈效应中，教室内音量降低的速度越来越快。原本喧闹的教室，在看似没有任何警报的情况下，在极短时间内变得鸦雀无声。&lt;/p&gt;
&lt;h2 id="方法与结果"&gt;方法与结果&lt;/h2&gt;
&lt;h3 id="一维元胞自动机"&gt;一维元胞自动机&lt;/h3&gt;
&lt;p&gt;我们用一维元胞自动机来模拟这个过程。元胞自动机是由一列元胞构成的，每个元胞有自己的状态，按照规则在下一个时间步更新状态。&lt;/p&gt;
&lt;p&gt;在这个模型中，我们模拟的是一个五十人课堂的场景，每个元胞代表一名学生。每个学生可以处于&amp;quot;说&amp;quot;或&amp;quot;听&amp;quot;两种状态。我们用一列元胞来模拟课堂中学生们的状态，给每个元胞赋一个数值，正数表示&amp;quot;说&amp;quot;，负数表示&amp;quot;听&amp;quot;。&lt;/p&gt;
&lt;p&gt;假设时间步长为每0.1秒，学生说一句话最长需要10秒。我们给每个元胞随机赋值为-100到+100之间的整数。每个时间步，让状态数值的绝对值减1。如果元胞初始值为+100，经过100个时间步后减到0，表示一句话说完，需要10秒。当数值归零，下一个时间步就重新随机赋值于-100到+100之间。这样就能模拟出课堂中人声鼎沸的情形。&lt;/p&gt;
&lt;p&gt;&lt;img src="p1.png" alt="图1：一维元胞自动机及更新规则"&gt;&lt;/p&gt;
&lt;p&gt;我们用18000个时间步来模拟三十分钟内五十名学生在自习课上的聊天情形。&lt;/p&gt;
&lt;p&gt;&lt;img src="p2.png" alt="图2：元胞自动机模拟五十名学子在三十分钟内言语喧嚣之情状，红色示&amp;quot;言&amp;quot;，蓝色示&amp;quot;听&amp;quot;"&gt;&lt;/p&gt;
&lt;p&gt;通过统计当前时刻课堂中发言学生的人数，来衡量当时的噪音音量。&lt;/p&gt;
&lt;p&gt;&lt;img src="p3.png" alt="图3：自习课堂之噪音音量随时间变化的折线图"&gt;&lt;/p&gt;
&lt;h3 id="冻结反应"&gt;冻结反应&lt;/h3&gt;
&lt;p&gt;现在，我们把学生对老师的&amp;quot;心理阴影面积&amp;quot;和&amp;quot;冻结反应&amp;quot;考虑进来。为每个学生增设一个对低音量的警觉性x（注意，每个人对噪音的敏感程度不同，所以警觉性也有所差异）。&lt;/p&gt;
&lt;p&gt;例如，对于学生甲来说，如果课堂内说话的人数少于x人，他就会进入警戒状态，停止说话一秒。有些学生&amp;quot;心理阴影面积&amp;quot;比较大，更容易把音量下降误认为是老师出现带来的&amp;quot;压迫感&amp;quot;，所以x值相对较高；而胆大的学生，则需要等到课堂中只剩他一个人在跟同桌说话时才能意识到，x值就比较小。我们把这个x称为&amp;quot;心理阴影面积最小冻结音量&amp;quot;，简称&amp;quot;最小心冻音量&amp;quot;。&lt;/p&gt;
&lt;p&gt;在现有的一维元胞自动机基础上，我们需要添加新规则：在更新每个学生（元胞）状态数值时，先观察上一个时间步（即前0.1秒）的噪音音量是否低于该学生的最小心冻音量（即该元胞的x）。如果是，则在下一个时间步将状态数字重置为-10，表示接下来一秒内（十个时间步）该学生将采取&amp;quot;停、看、听&amp;quot;的策略；如果否，则按原规则继续填入数值。&lt;/p&gt;
&lt;p&gt;每次重置，都有可能使课堂噪音下降，逐渐逼近另一位学生的最小心冻音量x，促使更多人产生冻结反应。这就是&amp;quot;自发静默&amp;quot;现象的成因。&lt;/p&gt;
&lt;p&gt;&lt;img src="p4.png" alt="图4：引入最小心冻音量后出现自发静默现象"&gt;&lt;/p&gt;
&lt;p&gt;在这次模拟中，三十分钟内五十名学生在自习课上的聊天情形，引入最小心冻音量后，在约160秒左右，出现了自发静默的现象。&lt;/p&gt;
&lt;p&gt;&lt;img src="p5.png" alt="图5：噪音音量随时间变化折线图，约150秒后开始下降"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://touchingfish.top/../application/an_anagel_passed_by/"&gt;&lt;strong&gt;在web应用上试一试&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;群体默契发生与否，与系统规模存在复杂关联，非线性复杂系统对初始参数非常敏感，所以模型的参数化过程需要谨慎。通过元胞自动机模拟所得数据，我们可以探究学生&amp;quot;最小心冻音量&amp;quot;对&amp;quot;自发静默现象&amp;quot;的主效应。&lt;/p&gt;
&lt;p&gt;在这个模型中，每个元胞的初始状态是随机的，只需要对每个学生的最小心冻音量进行参数化设定。&lt;/p&gt;
&lt;p&gt;为了让模拟更契合实际情形，我们设置了对老师出现不太敏感的学生，其最小心冻音量的最小值设为3（x_min = 3），即当课堂中仅剩3名学生说话时，该学生方才进入&amp;quot;冻结&amp;quot;状态。至于最小心冻音量的最大值，因难以依据现实情境确定，需通过模拟试验来探求。需要注意的是，如果无法对模型进行适当的参数化，则难以在有限（可计算之）时间步内观察到自组织现象的发生。&lt;/p&gt;
&lt;p&gt;在x_min = 3，且x_max = 17的参数下，我们进行了一万次模拟，并记录每次模拟中所有学生最小心冻音量之和S_x = Σ_i^50 x_i，与自发静默现象发生时间T（模拟时间步最大为18000，即三十分钟）的关系。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;Estimate&lt;/th&gt;
 &lt;th&gt;Std.Error&lt;/th&gt;
 &lt;th&gt;t&lt;/th&gt;
 &lt;th&gt;P&lt;/th&gt;
 &lt;th&gt;Sig.&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;6.0676688&lt;/td&gt;
 &lt;td&gt;0.0829139&lt;/td&gt;
 &lt;td&gt;73.18&lt;/td&gt;
 &lt;td&gt;&amp;lt;2e-16&lt;/td&gt;
 &lt;td&gt;***&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;$S_x$&lt;/td&gt;
 &lt;td&gt;-0.0056127&lt;/td&gt;
 &lt;td&gt;0.0001652&lt;/td&gt;
 &lt;td&gt;-33.97&lt;/td&gt;
 &lt;td&gt;&amp;lt;2e-16&lt;/td&gt;
 &lt;td&gt;***&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="表1自发静默之现象发生时间与学子心理阴影面积之总和的线性回归"&gt;表1：自发静默之现象发生时间与学子&amp;quot;心理阴影面积&amp;quot;之总和的线性回归&lt;/h5&gt;
&lt;p&gt;我们将x_max的最大值设为15到19，分别进行了上千次模拟。随着x_max增加，自发静默现象的时间提前。统计这组实验中三十分钟内出现沉默现象的次数，计算频率。通过逻辑斯蒂回归获得拟合方程：&lt;/p&gt;
&lt;p&gt;&lt;img src="p6.png" alt="图6：逻辑斯蒂回归模型及阈值"&gt;&lt;/p&gt;</description></item><item><title>编程语言中的函数</title><link>https://touchingfish.top/2020/c-functions-of-programming/</link><pubDate>Fri, 29 May 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2020/c-functions-of-programming/</guid><description>&lt;p&gt;数学上的函数是指一种映射关系，通常用来将一个输入（或多个输入）映射到一个输出。对于每一个特定的输入，总是有一个确定的输出。例如，函数 f(x) = x² 将输入 x 映射为其平方。&lt;/p&gt;
&lt;p&gt;编程语言中的函数与之类似，具有输入和输出的概念，但其本质上更广泛和灵活。&lt;/p&gt;
&lt;p&gt;在编程中，函数不仅可以执行计算，还可以执行一系列操作，如修改数据、输出信息、读取文件等。函数在编程中是用来封装一段代码，使得该代码可以复用，并且能够通过调用函数来执行特定的任务。&lt;/p&gt;
&lt;p&gt;编程语言中的函数通常具有以下的特点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;定义与调用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;定义函数时，需要给出函数名、参数（如果有）和函数体。&lt;/li&gt;
&lt;li&gt;调用函数时，通过函数名和传递的参数来执行函数。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;参数与返回值：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;函数通常接受参数（inputs），并可能返回一个值（output）。&lt;/li&gt;
&lt;li&gt;某些函数可能不接受参数或不返回值（如在 C 语言中使用 &lt;code&gt;void&lt;/code&gt; 关键字）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;封装与抽象：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;函数将代码封装起来，使得复杂操作可以通过简单的函数调用来实现。&lt;/li&gt;
&lt;li&gt;通过函数的使用，可以更容易地理解和管理代码结构。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;作用域：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;函数的内部变量通常具有局部作用域，即它们只能在函数内部访问。&lt;/li&gt;
&lt;li&gt;这种作用域规则有助于避免变量命名冲突和意外的值修改。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="windows-c-的函数编程"&gt;Windows C 的函数编程&lt;/h1&gt;
&lt;h2 id="函数声明与定义"&gt;函数声明与定义&lt;/h2&gt;
&lt;p&gt;在使用函数前需要进行声明（或称为函数原型声明）。例如，&lt;code&gt;int add(int a, int b);&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;函数的定义包括函数的返回类型、函数名、参数列表和函数体。&lt;/p&gt;
&lt;h2 id="返回类型"&gt;返回类型&lt;/h2&gt;
&lt;p&gt;每个函数必须有一个返回类型，表明该函数返回的数据类型。&lt;/p&gt;
&lt;p&gt;如果函数不返回任何值，使用 &lt;code&gt;void&lt;/code&gt; 作为返回类型。&lt;/p&gt;
&lt;h2 id="参数传递"&gt;参数传递&lt;/h2&gt;
&lt;p&gt;C 语言中的函数参数通常是按值传递的，即传递的是参数的副本，函数内部的修改不会影响原参数。&lt;/p&gt;
&lt;p&gt;如果需要函数内部修改外部变量的值，可以使用指针进行参数传递。&lt;/p&gt;
&lt;h2 id="变量的作用域"&gt;变量的作用域&lt;/h2&gt;
&lt;p&gt;局部变量只在离自己最近的大括号内有效。&lt;strong&gt;形式参数&lt;/strong&gt;也是局部变量。&lt;/p&gt;
&lt;p&gt;全局变量在源文件中定义，占用的内存不会因为程序结束而释放，二是在整个进程的执行过程中一直有效。&lt;/p&gt;
&lt;p&gt;变量的存储方式分为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;静态存储方式：程序运行期间，由系统分配固定的存储空间，&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;动态存储方式：程序运行时根据需要进行动态的分配存储空间。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="外部变量"&gt;外部变量&lt;/h3&gt;
&lt;p&gt;全局变量在源程序文件（一个编译单位）中，从定义位置到文件末尾一直有效。可以使用 &lt;code&gt;extern&lt;/code&gt; 扩展变量的作用域。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-C" data-lang="C"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;extern&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;//扩展全局变量k的作用域
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;k = %d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="c1"&gt;//全局变量k的定义与生效，向下↓
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;头文件&lt;/strong&gt;是扩展名为 .h 的文件，包含了 C 函数声明和宏定义，被多个源文件中引用共享。&lt;strong&gt;全局变量不能定义在头文件中&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>结构体与对齐原则</title><link>https://touchingfish.top/2020/struct-and-alignment-rule/</link><pubDate>Tue, 12 May 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2020/struct-and-alignment-rule/</guid><description>&lt;h2 id="结构体"&gt;结构体&lt;/h2&gt;
&lt;p&gt;结构体（struct）是一种用户自定义的数据类型，它允许我们将不同类型的数据组合在一起形成一个整体，从而更好地表示复杂的数据。&lt;/p&gt;
&lt;p&gt;结构体是 C 语言中非常重要的一种数据类型，广泛应用于各种编程场景。&lt;/p&gt;
&lt;p&gt;声明和定义结构体时，需要在语句末尾添加分号（&amp;quot;;&amp;quot;）&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;student&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;gender&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;socre&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;addr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;};&lt;/span&gt;&lt;span class="c1"&gt;//语句末尾的分号（;）必不可少
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;student&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;9001&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Alice&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sc"&gt;&amp;#39;M&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;98.9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;LA&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;student&lt;/span&gt; &lt;span class="n"&gt;sarr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;scanf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%d%s %c%d%f%s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;sarr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;sarr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;sarr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;gender&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;sarr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;sarr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;socre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;sarr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;addr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%d %s %c %d %.2f %s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gender&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;socre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;addr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%d %s %c %d %.2f %s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;sarr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;sarr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;sarr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;gender&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;sarr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;sarr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;socre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;sarr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;addr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;结构体嵌套：&lt;/strong&gt; 结构体中可以嵌套其他结构体。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;Student&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;Date&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;day&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="n"&gt;birthday&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;gender&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;C 语言允许定义&lt;strong&gt;无类型名的结构类型&lt;/strong&gt; ，常用于内嵌的结构类型：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;struct&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;day&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="n"&gt;birthday&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;当 类型名 &amp;ldquo;&lt;code&gt;Date&lt;/code&gt;&amp;rdquo; 省略时，必须后随结构变量 &amp;ldquo;&lt;code&gt;birthday&lt;/code&gt;&amp;rdquo; 的定义。&lt;/p&gt;</description></item><item><title>字符串与字符数组</title><link>https://touchingfish.top/2020/character-array/</link><pubDate>Sat, 09 May 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2020/character-array/</guid><description>&lt;p&gt;字符串是由一系列字符组成的字符数组，并以空字符 &lt;code&gt;'\0'&lt;/code&gt; 结尾。&lt;/p&gt;
&lt;p&gt;字符数组与字符串的概念在 C 语言中密不可分，是计算机处理文本时的基础。&lt;/p&gt;
&lt;h2 id="字符数组与字符串数组"&gt;字符数组与字符串数组&lt;/h2&gt;
&lt;h3 id="字符数组"&gt;字符数组&lt;/h3&gt;
&lt;p&gt;字符数组：一个存储字符的数组 &lt;code&gt;char str[6] = &amp;quot;hello&amp;quot;;&lt;/code&gt;，通常用于表示字符串。&lt;/p&gt;
&lt;p&gt;字符数组 &lt;code&gt;str&lt;/code&gt; 包含5个字符 &lt;code&gt;'h'&lt;/code&gt;, &lt;code&gt;'e'&lt;/code&gt;, &lt;code&gt;'l'&lt;/code&gt;, &lt;code&gt;'l'&lt;/code&gt;, &lt;code&gt;'o'&lt;/code&gt; 和一个隐含的结尾字符 &lt;code&gt;'\0'&lt;/code&gt;，表示字符串的结束。&lt;/p&gt;
&lt;p&gt;因此，字符数组初始化时，大小应比存储的字符串长读至少多一个字节。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;1234567890&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;//输出结果为：123456789烫烫烫
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;//表示此时赋值没有结束符，使用%s输出会在&amp;#39;\0&amp;#39;处停止
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="字符串数组"&gt;字符串数组&lt;/h3&gt;
&lt;p&gt;包含多个字符串的数组。例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;names&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Alice&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Bob&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Charlie&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个 &lt;code&gt;names&lt;/code&gt; 数组包含三个字符串，每个字符串最多可以容纳 9 个字符（最后一个字符是 &lt;code&gt;'\0'&lt;/code&gt;）。&lt;/p&gt;
&lt;h2 id="字符串的打印"&gt;字符串的打印&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;printf&lt;/code&gt; 函数用于格式化输出字符串和字符。此时，&lt;strong&gt;使用 &lt;code&gt;%s&lt;/code&gt; 和 &lt;code&gt;%c&lt;/code&gt; 来打印字符串和字符有明显区别&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;%s&lt;/code&gt;：用于打印字符串，即一系列字符直到遇到 &lt;code&gt;'\0'&lt;/code&gt; 结束。例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;hello&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 输出: hello
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;%c&lt;/code&gt;：用于打印单个字符。例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;ch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sc"&gt;&amp;#39;A&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%c&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ch&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 输出: A
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果使用 &lt;code&gt;%s&lt;/code&gt; 打印一个字符数组，程序会输出从该地址开始的所有字符，直到遇到 &lt;code&gt;'\0'&lt;/code&gt;。而使用 &lt;code&gt;%c&lt;/code&gt; 只会打印单个字符。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%c&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//%c是单字符逐一打印
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;123456789&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//%s从起始地址开始打印字符串，在&amp;#39;\0&amp;#39;处结束
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;//此处&amp;#34;c&amp;#34;是字符数组名，表示字符数组的起始地址
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="字符串的初始化"&gt;字符串的初始化&lt;/h2&gt;
&lt;h3 id="scanf-函数"&gt;&lt;code&gt;scanf&lt;/code&gt; 函数&lt;/h3&gt;
&lt;p&gt;在使用 &lt;code&gt;scanf&lt;/code&gt; 函数读取字符串时，有一些重要的注意事项：&lt;/p&gt;</description></item><item><title>数组与指针</title><link>https://touchingfish.top/2020/array-and-pointer/</link><pubDate>Mon, 04 May 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2020/array-and-pointer/</guid><description>&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;数组和指针的关系：在 C 语言中，数组名其实是一个指针，指向数组的第一个元素。例如，如果你有一个数组 &lt;code&gt;int arr[10];&lt;/code&gt;，那么 &lt;code&gt;arr&lt;/code&gt; 实际上是指向 &lt;code&gt;arr[0]&lt;/code&gt; 的指针。这意味着你可以用指针来遍历数组，也可以通过指针操作数组元素。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;通过指针访问数组：当你理解了数组名是一个指针后，你就能明白为什么 &lt;code&gt;*(arr + 1)&lt;/code&gt; 等价于 &lt;code&gt;arr[1]&lt;/code&gt;。这个表达式的意思是“通过指针 &lt;code&gt;arr&lt;/code&gt;，向后移动一个位置，然后取该位置的值”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;指针的灵活性：数组在定义时大小是固定的，而指针则更为灵活，可以指向任何内存位置。这使得你在处理数据时，能够更灵活地进行操作，例如动态分配内存或处理不同类型的数据结构。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;内存理解：通过理解指针如何操作数组，你会对内存管理有更深入的认识。这在 C 语言中尤为重要，因为你需要手动管理内存，避免错误操作。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;把数组和指针放在一起学习，有助于更深入地理解两者的工作原理，可以更好地理解内存和数据访问的底层机制，让编程更加高效和可靠。&lt;/p&gt;
&lt;h2 id="数组"&gt;数组&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;具有相同的数据类型&lt;/li&gt;
&lt;li&gt;使用过程中需要保留原始数据&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="一维数组"&gt;一维数组&lt;/h3&gt;
&lt;p&gt;数组初始化中的常量表达式：&lt;strong&gt;数组名 [常量表达式]&lt;/strong&gt;（通常为常量，或宏定义的符号常量）表示数组的大小，这是因为&lt;strong&gt;一个函数的函数栈空间大小是固定的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;数组元素的引用方式是 &lt;strong&gt;数组名 [下标]&lt;/strong&gt;（从 0 开始）访问数组中的数据&lt;/p&gt;
&lt;h4 id="数组在内存中的存放"&gt;数组在内存中的存放&lt;/h4&gt;
&lt;p&gt;数组存放在一块连续的内存中，元素间的地址根据其数据类型所占字节数决定。&lt;/p&gt;
&lt;h4 id="访问越界-out-of-bounds-access"&gt;访问越界 (Out-of-Bounds Access)&lt;/h4&gt;
&lt;p&gt;C 语言的内存管理：先定义的变量在高地址，后定义的变量在低地址。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// 定义一个整数变量 i，并赋值为 10
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt; &lt;span class="c1"&gt;// 定义一个大小为 3 的整数数组
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Before out-of-bounds access:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;i = %d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;arr[0] = %d, arr[1] = %d, arr[2] = %d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// 访问数组的第 4 个元素（越界访问）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;After out-of-bounds access:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;i = %d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 查看 i 的值是否被改变
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;arr[0] = %d, arr[1] = %d, arr[2] = %d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;当访问越界发生时，新定义的数组元素可能覆盖了先定义的变量&lt;code&gt;i&lt;/code&gt;的地址（高地址），&lt;code&gt;i&lt;/code&gt;的值（该地址中的值）发生改变。&lt;/p&gt;</description></item><item><title>C语言程序设计基础</title><link>https://touchingfish.top/2020/c-programming-fundamental/</link><pubDate>Fri, 01 May 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2020/c-programming-fundamental/</guid><description>&lt;p&gt;在程序设计中，&lt;strong&gt;基本数据类型&lt;/strong&gt;决定了变量可以存储的值和可执行的操作。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;运算符与表达式&lt;/strong&gt;用于执行各种计算和逻辑操作，如加减乘除、比较和逻辑运算，是编写有效程序的核心。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;选择和循环结构&lt;/strong&gt;控制程序流程，通过条件判断和重复执行代码块，实现复杂的逻辑和功能。&lt;/p&gt;
&lt;h2 id="基本数据类型"&gt;基本数据类型&lt;/h2&gt;
&lt;p&gt;C 语言的数据类型包括：基本类型（整型、浮点型、字符型等）、构造类型（数组、结构体）、指针类型、空类型。&lt;/p&gt;
&lt;h3 id="整型"&gt;整型&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;int&lt;/code&gt; 4 字节&lt;/p&gt;
&lt;p&gt;&lt;code&gt;short&lt;/code&gt; 2 字节&lt;/p&gt;
&lt;p&gt;&lt;code&gt;long&lt;/code&gt; 4 字节（Windows 32位/64位）、8 字节（Linux 64位）&lt;/p&gt;
&lt;blockquote&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;-&lt;/th&gt;
 &lt;th&gt;ILP32&lt;/th&gt;
 &lt;th&gt;LP64&lt;/th&gt;
 &lt;th&gt;LLP64&lt;/th&gt;
 &lt;th&gt;ILP64&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;char&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;short&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;64&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;64&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;64&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;long long&lt;/td&gt;
 &lt;td&gt;64&lt;/td&gt;
 &lt;td&gt;64&lt;/td&gt;
 &lt;td&gt;64&lt;/td&gt;
 &lt;td&gt;64&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;void *&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;64&lt;/td&gt;
 &lt;td&gt;64&lt;/td&gt;
 &lt;td&gt;64&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;数据模型命名规则&lt;/strong&gt;：&lt;code&gt;I&lt;/code&gt;=int，&lt;code&gt;L&lt;/code&gt;=long，&lt;code&gt;P&lt;/code&gt;=pointer，数字表示位数。ILP32 表示 int/long/pointer 均为 32 位；LP64 表示 long/pointer 为 64 位；LLP64 表示 long long/pointer 为 64 位；ILP64 表示 int/long/pointer 均为 64 位。&lt;/p&gt;</description></item><item><title>从源代码到可执行程序</title><link>https://touchingfish.top/2020/journey-to-c-language/</link><pubDate>Fri, 01 May 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2020/journey-to-c-language/</guid><description>&lt;p&gt;编程是和计算机对话的过程。我们按照计算机能理解的方式，用抽象的编程语言来描述算法和逻辑，给计算机下达指令，让它完成工作。&lt;/p&gt;
&lt;p&gt;在 C 语言的程序开发过程中，预处理、编译和汇编是将源代码转化为可执行程序的几个关键阶段。理解它们之间的关系有助于更好地理解C语言的编译过程。下面将详细介绍这几个阶段的作用及其相互关系。&lt;/p&gt;
&lt;h2 id="预处理"&gt;预处理&lt;/h2&gt;
&lt;p&gt;预处理（Preprocessing）是 C 语言编译过程中的第一个阶段。在这个阶段，C 编译器的预处理器（Preprocessor）处理代码中的预处理指令，如 &lt;code&gt;#include&lt;/code&gt;、&lt;code&gt;#define&lt;/code&gt;、&lt;code&gt;#ifdef&lt;/code&gt; 等。这些指令通常用来管理宏定义、文件包含、条件编译等。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;宏替换：将所有定义的宏替换为相应的代码。例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#define PI 3.14
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在程序中所有出现 &lt;code&gt;PI&lt;/code&gt; 的地方，都会被替换为 &lt;code&gt;3.14&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;文件包含：将 &lt;code&gt;#include&lt;/code&gt; 指定的头文件内容插入到当前文件中。例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;会将 &lt;code&gt;stdio.h&lt;/code&gt; 文件的内容包含到当前源文件中。在一段代码中，通常会在首行引用头文件，指令告诉 &lt;code&gt;CPP&lt;/code&gt; 从系统库中获取 &lt;code&gt;stdio.h&lt;/code&gt;，并拷贝其中的文本到当前的源文件里。（&lt;strong&gt;乱用头文件会影响编译的效率&lt;/strong&gt;）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;条件编译：根据条件判断是否编译某些代码段。例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#ifdef DEBUG
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Debug mode&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;只有在定义了 &lt;code&gt;DEBUG&lt;/code&gt; 宏的情况下，&lt;code&gt;printf&lt;/code&gt; 语句才会被编译。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;预处理后的输出是一个扩展的源文件，其中所有的预处理指令都已经被处理和替换。这个文件将传递给编译器的下一阶段。&lt;/p&gt;
&lt;h2 id="编译"&gt;编译&lt;/h2&gt;
&lt;p&gt;编译（Compilation）是将预处理后的 C 代码转换为汇编代码的过程。编译器会检查代码的语法和结构，优化代码，并生成汇编代码。&lt;/p&gt;
&lt;p&gt;在这个阶段，编译器会执行以下操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;语法分析：检查代码的语法是否正确，确保符合C语言的语法规则。&lt;/li&gt;
&lt;li&gt;语义分析：检查代码的语义是否合理，例如变量类型的正确性、函数调用的合法性等。&lt;/li&gt;
&lt;li&gt;优化：编译器可能会对代码进行优化，以提高生成代码的运行效率。&lt;/li&gt;
&lt;li&gt;生成汇编代码：将C语言的代码转换为特定硬件架构的汇编语言。例如，&lt;code&gt;gcc&lt;/code&gt; 编译器将生成 &lt;code&gt;.s&lt;/code&gt; 文件（包含汇编代码）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;汇编代码是一种低级语言，更接近机器代码，但仍然是人类可读的（如 &lt;code&gt;MOV&lt;/code&gt;, &lt;code&gt;ADD&lt;/code&gt; 等指令）。&lt;/p&gt;
&lt;h2 id="汇编"&gt;汇编&lt;/h2&gt;
&lt;p&gt;汇编（Assembly）是将汇编代码转换为机器代码的过程。在这个阶段，汇编器（Assembler）会将汇编代码翻译成目标机器的二进制指令，这些指令可以直接在处理器上执行。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;生成目标文件：汇编器将生成一个目标文件（通常是 &lt;code&gt;.o&lt;/code&gt; 或 &lt;code&gt;.obj&lt;/code&gt; 文件），它包含了机器代码以及一些调试和链接信息。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;目标文件最终会被打包成可执行文件（例如 &lt;code&gt;.exe&lt;/code&gt; 文件），可以直接在计算机上运行。&lt;/p&gt;
&lt;h2 id="关系与流程"&gt;关系与流程&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;预处理是编译的第一步，处理宏、头文件等预处理指令，生成一个纯C语言的源代码文件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;编译阶段将预处理后的源代码翻译为汇编代码，这个过程中包括了语法检查、优化等重要步骤。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;汇编阶段将汇编代码转换为机器代码，生成目标文件。&lt;/p&gt;</description></item><item><title>自尊与自我实现</title><link>https://touchingfish.top/psychology1504/week21-reflection/</link><pubDate>Tue, 14 Apr 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/psychology1504/week21-reflection/</guid><description>&lt;p&gt;最后一讲。&lt;/p&gt;
&lt;p&gt;从什么是积极心理学，到如何培养幸福感，到爱情和自尊，这一路走下来，我感觉自己学到的不是一套&amp;quot;方法&amp;quot;，而是一种&amp;quot;看待自己的方式&amp;quot;。&lt;/p&gt;
&lt;h2 id="自尊的三个层次"&gt;自尊的三个层次&lt;/h2&gt;
&lt;p&gt;这周的课让我看到了自尊的三个层次：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;依赖型自尊&lt;/strong&gt;（dependent self-esteem）——自尊来自他人。我需要被赞美、被认可、被喜欢，才会觉得自己有价值。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;独立型自尊&lt;/strong&gt;（independent self-esteem）——自尊来自自己。我有自己的评价标准，不完全依赖他人的反馈，但不排除他人的反馈作为参考。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;无条件自尊&lt;/strong&gt;（self-esteem）——自尊不需要外部或内部的评价。我和自己的存在本身融为一体，没有比较，没有评判。&lt;/p&gt;
&lt;p&gt;大多数人在依赖型和独立型之间。完全的&amp;quot;无条件&amp;quot;可能是少数人能达到的状态，但独立型是可以追求的目标。&lt;/p&gt;
&lt;h2 id="自尊的两个基础"&gt;自尊的两个基础&lt;/h2&gt;
&lt;p&gt;Nathaniel Branden提出了自尊的两个基础：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;能力感&lt;/strong&gt;（the experience of competence）——我相信我能做到，我相信我有价值。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;价值感&lt;/strong&gt;（the experience of worthiness）——我值得被爱，我值得幸福。&lt;/p&gt;
&lt;p&gt;这两个组成部分缺一不可。只有能力感没有价值感，会变成工作狂——觉得自己必须不断证明自己才有价值。只有价值感没有能力感，会变成自恋者——觉得自己很特别但没有实际的成就支撑。&lt;/p&gt;
&lt;p&gt;健康的高自尊是两个部分的平衡。&lt;/p&gt;
&lt;h2 id="自恋和自尊"&gt;自恋和自尊&lt;/h2&gt;
&lt;p&gt;这周还讨论了一个重要的区别：&lt;strong&gt;自恋和真正的自尊&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;自恋和高度依赖型自尊相关。自恋者需要持续的外部验证来维持自尊，所以他们在表面上表现出过度的自信和优越感，但底下是脆弱的自尊。&lt;/p&gt;
&lt;p&gt;真正的高自尊和自恋是不同的。&lt;/p&gt;
&lt;p&gt;真正的高自尊是稳定的，不需要外部验证。它来自内在的自我接纳，而不是外部的赞美。&lt;/p&gt;
&lt;p&gt;依赖型自尊是波动的，需要不断被认可。它建立在和他人的比较之上，所以永远不稳定。&lt;/p&gt;
&lt;h2 id="自尊和亲密关系"&gt;自尊和亲密关系&lt;/h2&gt;
&lt;p&gt;自尊和亲密关系相互影响。&lt;/p&gt;
&lt;p&gt;一方面，自尊影响亲密关系。低自尊的人更容易担心被拒绝，更容易在关系中过度依赖或过度回避，更难建立健康的连接。&lt;/p&gt;
&lt;p&gt;另一方面，亲密关系影响自尊。一个稳定的、支持性的关系可以成为自尊的&amp;quot;基地&amp;quot;——不管外面的世界怎么对待你，有一个人爱你、接纳你，这种感觉本身就是一种力量。&lt;/p&gt;
&lt;p&gt;这就是为什么亲密关系对幸福感这么重要。它不只是带来快乐，它还在支撑我们的自我价值感。&lt;/p&gt;
&lt;h2 id="诚实面对自己"&gt;诚实面对自己&lt;/h2&gt;
&lt;p&gt;这周的最后一个话题是：诚实正直地面对自己。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;你真正的潜力埋藏在你灵魂深处……在你腹部最底处，在你的知识和紧张触及不到的地方，藏着你的宝藏。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;这话让我想了很久。&lt;/p&gt;
&lt;p&gt;我们常常不知道自己真正想要什么，真正相信什么，真正有能力做什么。这些东西藏在表面之下，需要挖掘才能发现。&lt;/p&gt;
&lt;p&gt;挖掘的方式是什么？&lt;/p&gt;
&lt;p&gt;是诚实。是对自己诚实——对自己的感受诚实，对自己的想法诚实，对自己的行为诚实。是愿意看到自己的不足，愿意承认自己的错误，愿意面对不想面对的东西。&lt;/p&gt;
&lt;p&gt;这种诚实不是自我批评。自我批评是评判和惩罚，诚实是面对和接受。&lt;/p&gt;
&lt;h2 id="这门课的终点"&gt;这门课的终点&lt;/h2&gt;
&lt;p&gt;从一个关于&amp;quot;什么是积极心理学&amp;quot;的问题，到自尊和自我实现的讨论，这门课覆盖了很多主题：乐观、感激、自律、改变、习惯、爱情、压力、运动、冥想、睡眠……&lt;/p&gt;
&lt;p&gt;但如果要我用一句话总结这门课教给我的，我会说：&lt;strong&gt;幸福是一件值得认真对待的事情。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我们常常把幸福当成&amp;quot;副产品&amp;quot;——等我成功了就会幸福，等我有钱了就会幸福，等我找到对象了就会幸福。但积极心理学告诉我，幸福也可以是&amp;quot;主动培养&amp;quot;的对象。&lt;/p&gt;
&lt;p&gt;像培养一株植物一样。给它阳光，给它水，给它养分，然后看着它慢慢生长。&lt;/p&gt;
&lt;h2 id="结语"&gt;结语&lt;/h2&gt;
&lt;p&gt;越来越短的笔记和思考，明显的倦怠。&lt;/p&gt;
&lt;p&gt;课上完了，也全忘了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Always on the journey.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>磷与甲藻（One Glance）</title><link>https://touchingfish.top/2020/phosphorus-and-dinoflagellate/</link><pubDate>Sun, 05 Apr 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2020/phosphorus-and-dinoflagellate/</guid><description>&lt;h2 id="初识"&gt;初识&lt;/h2&gt;
&lt;p&gt;强壮前沟藻。这个名字我念了无数遍，从最初的拗口到后来的脱口而出，像是在念一个老朋友的姓名。&lt;/p&gt;
&lt;p&gt;它是一种有害赤潮甲藻，隶属于甲藻门，甲藻纲，腰鞭毛目，裸甲藻科，前沟藻属。分布在世界各热带和温带海域。在国内，主要在南海和海南三亚能看到它的身影&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。我不知道有没有人去统计过，这种小小的藻类每年造成了多少经济损失，又让多少沿海居民夜不能寐。我只知道，当我在显微镜下第一次看到它的时候，它的鞭毛在载玻片上划出优雅的弧线，那一刻我完全忘了它&amp;quot;赤潮生物&amp;quot;的恶名。&lt;/p&gt;
&lt;p&gt;最初接触这个课题，是因为她。她的毕业论文就是这个方向——强壮前沟藻对膦酸酯的利用。她的导师给我们上过专业课，早就已经是熟面孔了；后来她选择做这个方向，其实也是顺延老师博士论文的研究。&lt;/p&gt;
&lt;p&gt;那段时间的我自己有些茫然。程老师已经离开学校，剩下的事情只能远程沟通，偶尔发发邮件。看着她每天往实验室跑，和老师讨论进度，我有点被那种状态感染——至少她知道自己在做什么。&lt;/p&gt;
&lt;p&gt;她做实验的时候，我有时也去实验楼蹭校园网。老师也是我舍友的导师，一点儿不把我当外人，偶尔会跟她开玩笑说：&amp;ldquo;让你男朋友多练习，以后可以帮忙。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;有一次陪她去办公室汇报进度。别看老师话不多，但问的问题很细：培养温度多少、光照强度多少、计数用的是哪种方法。她答得有些紧张，我在旁边坐着，插不上话，只能假装在看墙上贴的培养箱操作规程。&lt;/p&gt;
&lt;p&gt;汇报结束后，老师送我们出来，路过走廊尽头的一排锥形瓶培养架，他指给我看：&amp;ldquo;这是另外几个课题组做的，有做东海原甲藻的，有做雨生红球藻的——你们海洋藻类这块，其实做得挺多的。&amp;ldquo;那时候我还不懂这个圈子，只觉得老师为人客气。后来才明白，这种&amp;quot;带你看看&amp;quot;的习惯，是对科研新手难得的温柔。&lt;/p&gt;
&lt;h2 id="磷的宇宙"&gt;磷的宇宙&lt;/h2&gt;
&lt;p&gt;磷是DNA的骨架，是ATP的能量来源，是细胞膜磷脂双分子层的组成部分&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;。磷不仅影响着海洋浮游植物的细胞大小、营养状况、光合作用效率，更对群落的种类组成和数量有深远影响&lt;sup id="fnref1:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;。缺磷的浮游植物，像是被抽走了脊梁的人，生命变得脆弱而迟缓。&lt;/p&gt;
&lt;p&gt;传统的海洋生态学认为，氮是主要的限制性营养元素。但越来越多的研究表明，在全球海域中，磷限制正在成为比氮限制更普遍的问题&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;。在长远的地质时期，磷被认为是海洋生态系统中重要的终级限制性营养元素&lt;sup id="fnref1:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref1:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;p&gt;海洋中的溶解态磷主要包括溶解无机磷和溶解有机磷两种。无机磷可以直接被浮游植物利用，在光线充足且生产力高的真光层中会被快速消耗殆尽。而溶解有机磷则主要以两种形式存在：磷酸酯和膦酸酯。海水中约75%的高分子量溶解有机磷是磷酸酯，以C-O-P键为特征，主要存在于核酸以及膜磷脂等大分子中&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;。膦酸酯占海水中高分子量溶解有机磷的25%，以稳定而难以断裂的C-P键为特征，经常存在于含磷蛋白以及膜膦脂中&lt;sup id="fnref1:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;p&gt;浮游植物可以利用磷酸酯，主要通过碱性磷酸酶的水解作用将C-O-P键断裂，释放出可供细胞利用的无机磷&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt;。但膦酸酯的C-P键极为稳定，难以被一般的磷酸酶水解。细菌可以表达C-P裂解酶来利用膦酸酯，这在原核藻类如蓝藻中已有报道&lt;sup id="fnref:7"&gt;&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref"&gt;7&lt;/a&gt;&lt;/sup&gt;。但真核浮游植物能否直接利用膦酸酯？这个问题在文献中少有定论，零星的报道也存在争议。&lt;/p&gt;
&lt;h2 id="养藻"&gt;养藻&lt;/h2&gt;
&lt;p&gt;她用的实验材料是2-AEP，即2-氨基乙基膦酸，是一种典型的天然膦酸酯化合物。实验设置了三组条件：不加磷、不加磷但加2-AEP、加磷作为对照。&lt;/p&gt;
&lt;p&gt;我帮她分担了一部分计数和测量的工作——说是帮忙，其实更像是在学习。她教我怎么用浮游生物计数板，怎么判断藻细胞的状态，什么时候该稀释、什么时候该补充营养液。听起来简单，做起来才知道，实验的每一个环节都藏着陷阱。藻种要活化、培养基要灭菌、抗生素要适量——除菌处理对藻的生长影响不大，但细菌污染会让整个实验报废&lt;sup id="fnref:8"&gt;&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref"&gt;8&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;p&gt;每隔两天取样一次。取1000微升藻液，视生长情况稀释后，加入Logul&amp;rsquo;s试剂，在显微镜下用浮游生物计数板人工计数。同时测量培养体系中无机磷的浓度——磷钼蓝法，取藻液过滤后加入试剂，静置片刻，通过分光光度计读数。数据点一个个累积，曲线在坐标纸上渐渐成形。&lt;/p&gt;
&lt;p&gt;那段时间我们聊了很多。关于毕业以后要做什么，要不要继续考研，她说，&amp;ldquo;再做下去头发要掉光了&amp;rdquo;。我说我也不确定……两个人站在培养箱前面，一边看着那些锥形瓶，一边说着不着边际的话。那大概是那段日子里最轻松的时刻。&lt;/p&gt;
&lt;h2 id="一眼看到头"&gt;一眼看到头&lt;/h2&gt;
&lt;p&gt;实验结果出来那天，她沉默了很久。&lt;/p&gt;
&lt;p&gt;到第八天的时候，三个条件下的磷酸盐浓度都趋近于零。加磷组的细胞密度开始下降，而不加磷和加2-AEP组的细胞密度始终没有明显增长。反复确认了计数结果，确认了仪器校准，确认了没有在某个环节犯蠢。&lt;/p&gt;
&lt;p&gt;事实就是这样：强壮前沟藻不能利用2-AEP作为唯一的磷源。&lt;/p&gt;
&lt;p&gt;那天从实验室出来，我们去后街买了烤冷面。两个人站在路灯下吃着，一时不知道该说什么。她的表情与其说是失落，不如说是某种释然——&amp;ldquo;至少结果很清晰，&amp;ldquo;她说，&amp;ldquo;阴性结果也是结果。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;我点点头，没有告诉她我心里其实松了一口气：她的论文可以写完了。&lt;/p&gt;
&lt;p&gt;后来她跟我说，她其实早就猜到会是这样。&amp;ldquo;所以才不想继续考研、做实验，&amp;ldquo;她说，&amp;ldquo;一眼看到头。&amp;rdquo;&lt;/p&gt;
&lt;h2 id="基因的故事"&gt;基因的故事&lt;/h2&gt;
&lt;p&gt;研究还要继续。老师建议她做一下基因分析，看看转录组里有没有与膦酸酯代谢相关的基因。我帮她跑了BLAST分析，结果出来的时候有点意外：强壮前沟藻转录组中确实存在phnW和ppd的同源序列。phnW编码2-氨基乙基膦酸-丙酮酸转氨酶，与C-P键有机磷的降解有关；ppd与磷酮酸脱羧酶同源，可能参与膦酸酯的合成代谢。&lt;/p&gt;
&lt;p&gt;这意味着什么？意味着这种藻类的祖先或许曾经拥有过利用膦酸酯的能力，又在演化过程中失去了。而更可能的原因是——它缺少一种将胞外2-AEP转运到细胞内部的酶。外界的有机磷进不来，细胞内的酶只能干看着。&lt;/p&gt;
&lt;p&gt;这个发现与同期其他研究者的发现一致。有研究表明，甲藻剧毒卡尔藻同样无法直接利用外部膦酸酯，但培养体系中存在的细菌能有效降解C-P键有机磷以释放出磷酸盐供藻细胞利用&lt;sup id="fnref:9"&gt;&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref"&gt;9&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;p&gt;老师看完结果，跟她说：&amp;ldquo;这个结论可以写。&amp;ldquo;语气平淡，但看得出他还是比较满意的。&lt;/p&gt;
&lt;h2 id="尾声"&gt;尾声&lt;/h2&gt;
&lt;p&gt;后来，只有老师和我还保持着联系，互通鱼雁……&lt;/p&gt;
&lt;p&gt;偶尔会想起那段日子。想起那些锥形瓶，培养箱，显微镜下游动的鞭毛。想起她站在培养箱前面说&amp;quot;一眼看到头&amp;quot;时的表情。&lt;/p&gt;
&lt;p&gt;关于磷限制与海洋生态的关系，还有太多未知。膦酸酯在磷匮乏海域的生物地球化学循环是否与细菌群落结构有关？是否存在真核浮游植物能够直接利用自然合成的膦酸酯？膦酸酯转运蛋白在原核和真核之间的分布有什么规律？&lt;/p&gt;
&lt;p&gt;这些问题没有在这次研究中得到回答。&lt;/p&gt;
&lt;p&gt;膦酸酯要变成可吸收的磷，需要细菌来“翻译”。&lt;/p&gt;
&lt;p&gt;强壮前沟藻依然在后街某个实验室的锥形瓶里摇曳它的鞭毛。它不知道我对它的期待，也不知道我的困惑。它只是按照自己的方式活着，消耗磷，响应光，在无人知晓的微观世界里完成它的生命循环。&lt;/p&gt;
&lt;p&gt;而我们，大概也是这样。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;林永水, 周近明, 何建宗. 赤潮生物[M]. 北京: 科学出版社, 2001.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;Paytan A, McLaughlin K. The oceanic phosphorus cycle[J]. Chemical Reviews, 2007, 107(2): 563-576.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href="#fnref1:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;Toggweiler J R. An ultimate limiting nutrient[J]. Nature, 1999, 400(6744): 511-512.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href="#fnref1:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;Tyrrell T. The relative influences of nitrogen and phosphorus on oceanic primary production[J]. Nature, 1999, 400(6744): 525-531.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href="#fnref1:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>身体、关系</title><link>https://touchingfish.top/psychology1504/week17-reflection/</link><pubDate>Tue, 31 Mar 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/psychology1504/week17-reflection/</guid><description>&lt;p&gt;Tal说了一句话：&amp;ldquo;某种程度上，运动可以说是精神医生的理想药物。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;这话让我重新审视了运动这件事。&lt;/p&gt;
&lt;h2 id="运动的好处"&gt;运动的好处&lt;/h2&gt;
&lt;p&gt;运动的好处已经被大量研究证实：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;减少焦虑和抑郁&lt;/li&gt;
&lt;li&gt;提升情绪&lt;/li&gt;
&lt;li&gt;增强免疫系统&lt;/li&gt;
&lt;li&gt;改善认知功能&lt;/li&gt;
&lt;li&gt;提高能量水平&lt;/li&gt;
&lt;li&gt;促进睡眠&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tal提到，运动30分钟的效果和最强大的精神类药物相当。这不是说运动可以替代药物（如果有需要的话），而是说运动的效果是被严重低估的。&lt;/p&gt;
&lt;p&gt;运动为什么有效？&lt;/p&gt;
&lt;p&gt;一个重要的机制是神经递质。运动会释放内啡肽、多巴胺、血清素——这些化学物质直接影响大脑的情绪调节中心。这就是为什么运动后会感到&amp;quot;跑步者的愉悦感&amp;quot;（runner&amp;rsquo;s high）。&lt;/p&gt;
&lt;p&gt;但运动不只是即时的效果。长期运动还会改变大脑的结构，增强前额皮质的活跃度，而这个区域和积极情绪有关。&lt;/p&gt;
&lt;h2 id="冥想"&gt;冥想&lt;/h2&gt;
&lt;p&gt;冥想的核心是什么？Tal引用了一句话：&lt;/p&gt;
&lt;p&gt;&amp;ldquo;想消除抑郁是通常的解决方法，想解决不对劲的地方只会让我们陷得更深。苦苦思索是问题症结之一，不是解决办法。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;这话让我停下来想了很久。&lt;/p&gt;
&lt;p&gt;我们倾向于用&amp;quot;思考&amp;quot;来解决问题——分析问题，理解问题，找到解决方案。但有些问题不是靠思考能解决的。有些问题需要的是&amp;quot;不思考&amp;quot;。&lt;/p&gt;
&lt;p&gt;冥想是一种训练&amp;quot;不思考&amp;quot;的方式。不是完全停止思考，而是观察思考——注意到想法来了又走，不执着，不评判。&lt;/p&gt;
&lt;p&gt;从&amp;quot;做&amp;quot;到&amp;quot;在&amp;quot;（from doing to being）。&lt;/p&gt;
&lt;p&gt;我们生活在一个强调&amp;quot;做&amp;quot;的文化里。你的价值取决于你做了什么——成就、产出、效率。&lt;/p&gt;
&lt;p&gt;但有时候，&amp;ldquo;做&amp;quot;太多了反而有害。我们一直在做事，从不停下来感受&amp;quot;存在&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;冥想是一种&amp;quot;在&amp;quot;的练习。不是做事，而是存在；不是思考，而是觉知。&lt;/p&gt;
&lt;h2 id="睡眠"&gt;睡眠&lt;/h2&gt;
&lt;p&gt;现代人普遍睡眠不足。&lt;/p&gt;
&lt;p&gt;工业革命之前，人们每天睡10个小时。现在，平均睡眠时间是7个小时。25%的18-29岁年轻人只睡6个小时。&lt;/p&gt;
&lt;p&gt;我们牺牲睡眠来换取&amp;quot;效率&amp;quot;——工作更长的时间，完成更多的任务。但研究表明，睡眠不足的代价是巨大的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;免疫系统下降&lt;/li&gt;
&lt;li&gt;能量水平下降&lt;/li&gt;
&lt;li&gt;体重增加&lt;/li&gt;
&lt;li&gt;运动技能下降&lt;/li&gt;
&lt;li&gt;认知功能受损&lt;/li&gt;
&lt;li&gt;焦虑和压力增加&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，牺牲睡眠来&amp;quot;做更多&amp;quot;，实际上可能让你做得更差。&lt;/p&gt;
&lt;p&gt;把睡眠当作优先事项不是&amp;quot;偷懒&amp;quot;，而是战略性的投资。一个睡好的人比一个困倦的人效率高得多。&lt;/p&gt;
&lt;h2 id="触摸"&gt;触摸&lt;/h2&gt;
&lt;p&gt;触摸是人的基本需求。&lt;/p&gt;
&lt;p&gt;有句话说：&amp;ldquo;我们每天需要4个拥抱才能生存，需要8个拥抱才能维持，需要12个拥抱才能成长。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;研究支持了触摸的重要性。触摸可以减少压力，增加催产素（一种与连接和信任相关的激素），提升免疫功能。&lt;/p&gt;
&lt;p&gt;但很多人在日常生活中缺乏触摸。工作环境中缺乏身体接触，独居生活的人越来越多，我们生活在一个&amp;quot;触摸饥饿&amp;quot;的文化里。&lt;/p&gt;
&lt;p&gt;触摸不是&amp;quot;奢侈品&amp;quot;，是&amp;quot;必需品&amp;quot;。&lt;/p&gt;
&lt;h2 id="爱情"&gt;爱情&lt;/h2&gt;
&lt;p&gt;爱情是这周讨论的最后一个主题，但可能是最重要的一个。&lt;/p&gt;
&lt;p&gt;研究一致表明，&lt;strong&gt;亲密关系是幸福最强的预测因素之一&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;稳定的、高质量的亲密关系和更高的幸福感、更低的抑郁率、更长的寿命相关。&lt;/p&gt;
&lt;p&gt;成功的亲密关系不是&amp;quot;找到&amp;quot;的，是&amp;quot;培养&amp;quot;出来的。两个不完美的人，通过持续的努力和投入，建立起深厚的连接。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;电影总是在爱情开始的地方结束。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;电影、小说、童话故事——它们往往在&amp;quot;他们幸福地在一起了&amp;quot;就结束了。但故事真正开始的地方，是在一起之后的日常生活。&lt;/p&gt;
&lt;p&gt;日常生活中的亲密关系需要什么？&lt;/p&gt;
&lt;p&gt;需要工作。需要沟通。需要解决冲突。需要原谅。需要重新选择同一个人。&lt;/p&gt;
&lt;p&gt;这不是浪漫的叙事，但这是真实的爱情。&lt;/p&gt;
&lt;h2 id="亲密的要素"&gt;亲密的要素&lt;/h2&gt;
&lt;p&gt;Tal讨论了亲密关系的几个要素：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;被真正的了解&lt;/strong&gt;。亲密不只是&amp;quot;在一起&amp;quot;，是&amp;quot;被知道&amp;quot;。被知道你的优点，也被知道你的缺点；被知道你的梦想，也被知道你的恐惧。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;被接纳&lt;/strong&gt;。亲密不只是&amp;quot;被知道&amp;quot;，是&amp;quot;被接纳&amp;quot;。不是你的完美版本被接纳，而是你的真实版本被接纳。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;被欣赏&lt;/strong&gt;。关系中的两个人都需要感到被欣赏。不是理所当然的，是被对方看到和感激的。&lt;/p&gt;
&lt;h2 id="积极互动"&gt;积极互动&lt;/h2&gt;
&lt;p&gt;研究表明，成功的亲密关系有一个关键特征：&lt;strong&gt;积极互动和消极互动的比例&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Gottman的研究发现，成功的夫妻大约有5:1的积极/消极互动比例。每当有一个消极互动（批评、防卫、忽视），大约有5个积极互动（欣赏、幽默、兴趣）来平衡。&lt;/p&gt;
&lt;p&gt;这个发现让我看到：冲突不是问题本身。问题是没有足够的积极互动来平衡消极互动。健康的亲密关系不是没有冲突，而是有足够的正面连接来缓解冲突的负面影响。&lt;/p&gt;
&lt;h1 id="后记"&gt;后记&lt;/h1&gt;
&lt;p&gt;有时间就运动一下，没空就算了。&lt;/p&gt;
&lt;p&gt;现在我觉得它们是&amp;quot;核心必需项&amp;quot;——就像吃饭睡觉一样重要。&lt;/p&gt;
&lt;p&gt;运动30分钟的效果和药物相当，这个事实让我震惊。如果有一种药能有这个效果，肯定会被广泛宣传。但运动的好处常常被忽视，因为我们太忙了，没时间运动——但这恰恰说明我们最需要运动。&lt;/p&gt;
&lt;p&gt;身体健康是运动和饮食，心理健康是正念和心理练习。但身心是一个整体，不是分开的。&lt;/p&gt;</description></item><item><title>享受过程</title><link>https://touchingfish.top/psychology1504/week15-reflection/</link><pubDate>Mon, 30 Mar 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/psychology1504/week15-reflection/</guid><description>&lt;p&gt;我从小就是一个完美主义者。&lt;/p&gt;
&lt;p&gt;作业要写得工整，考试要考到满分，比赛要拿第一名。这些标准不是别人要求的，是我自己加给自己的。如果没达到，我就会感到焦虑、自责、羞耻。&lt;/p&gt;
&lt;p&gt;我一直以为完美主义是&amp;quot;优点&amp;quot;——它驱使我做到最好。但这门课让我看到了完美主义的另一面。&lt;/p&gt;
&lt;h2 id="完美主义的定义"&gt;完美主义的定义&lt;/h2&gt;
&lt;p&gt;Tal给完美主义下的定义是：&lt;/p&gt;
&lt;p&gt;&amp;ldquo;完美主义是一种充斥在我们生活中的对失败的失能性恐惧，尤其是我们最在意的方面。它是一种面对人生旅程的认知和情感模式——对失败的极度恐惧，使我们瘫痪，让我们无法行动。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;关键词是&amp;quot;失能性恐惧&amp;quot;——让你无法行动的恐惧。&lt;/p&gt;
&lt;p&gt;普通的追求卓越是：我想要做好，我会努力，我会接受不完美作为过程的一部分。&lt;/p&gt;
&lt;p&gt;完美主义是：我必须完美，否则我就是失败者。不完美是不可接受的，必须消除。&lt;/p&gt;
&lt;p&gt;这两种态度导向完全不同的体验。&lt;/p&gt;
&lt;h2 id="完美主义的问题"&gt;完美主义的问题&lt;/h2&gt;
&lt;p&gt;完美主义看似是在追求卓越，但它实际上在阻止我们行动。&lt;/p&gt;
&lt;p&gt;因为完美主义的标准是&amp;quot;要么完美，要么一无是处&amp;quot;。当完美不可企及（它总是不可企及的），完美主义者就会放弃——不做总比做然后失败好。&lt;/p&gt;
&lt;p&gt;这导致了一种奇怪的现象：&lt;strong&gt;完美主义者反而完成的事情更少&lt;/strong&gt;。不是因为他们标准高，而是因为标准太高导致瘫痪。&lt;/p&gt;
&lt;p&gt;另一个问题是完美主义和幸福感的关系。完美主义者和焦虑、抑郁、饮食障碍、自我伤害相关。追求完美不是在保护自己，是在伤害自己。&lt;/p&gt;
&lt;h2 id="完美主义的根源"&gt;完美主义的根源&lt;/h2&gt;
&lt;p&gt;完美主义不是天生的，是习得的。&lt;/p&gt;
&lt;p&gt;我们生活在一个强调结果的文化里。从小我们就被教育要&amp;quot;赢&amp;quot;。目标实现等于奖励，过程本身不被重视。&lt;/p&gt;
&lt;p&gt;这种信念慢慢内化：只有结果重要，只有到达目的地才算是成功。在过程中的努力、成长、学习——这些都不算数。&lt;/p&gt;
&lt;p&gt;这种信念导致完美主义。&lt;/p&gt;
&lt;h2 id="目的地等于奖励吗"&gt;目的地等于奖励吗？&lt;/h2&gt;
&lt;p&gt;完美主义的核心信念之一是：&lt;strong&gt;目的地等于奖励&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;考试考好了才值得庆祝。找到工作了才算成功。到达目的地了才值得快乐。&lt;/p&gt;
&lt;p&gt;这种信念把整个旅程变成了&amp;quot;手段&amp;quot;——过程本身没有价值，只有到达终点才有价值。&lt;/p&gt;
&lt;p&gt;问题在于：人生的绝大部分时间都在旅途中，而不是在终点。如果我们不享受过程，那我们人生的大部分时间都不会快乐。&lt;/p&gt;
&lt;p&gt;Marva Collins的教育方法有一个关键的不同：她关注旅程本身。她庆祝学生的努力，而不只是在学生取得成果时才给予肯定。这种对过程的关注帮助她的学生建立了成长心态，而不是固定心态。&lt;/p&gt;
&lt;h2 id="行为改变态度"&gt;行为改变态度&lt;/h2&gt;
&lt;p&gt;有一个反直觉的发现：&lt;strong&gt;行为可以改变态度&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;通常我们以为是先有态度再有行为——我先&amp;quot;想通了&amp;quot;，然后行为才会变。但研究表明，有时候是反过来的——先改变行为，态度会随之改变。&lt;/p&gt;
&lt;p&gt;这意味着什么？&lt;/p&gt;
&lt;p&gt;意味着即使你没有&amp;quot;感觉到&amp;quot;快乐，你仍然可以做一些&amp;quot;快乐的人&amp;quot;会做的事：微笑、走路带风、主动和陌生人打招呼。这些行为会触发大脑的奖励系统，让你的情绪慢慢变好。&lt;/p&gt;
&lt;p&gt;同样的，即使你没有&amp;quot;感觉到&amp;quot;勇敢，你仍然可以做勇敢的人会做的事：主动发言、尝试新事物、承担风险。行为会慢慢强化勇敢的感觉。&lt;/p&gt;
&lt;p&gt;这就是&amp;quot;Fake it till you make it&amp;quot;的科学依据。&lt;/p&gt;
&lt;h2 id="心流"&gt;心流&lt;/h2&gt;
&lt;p&gt;Csikszentmihalyi提出了&amp;quot;心流&amp;quot;（flow）的概念。&lt;/p&gt;
&lt;p&gt;心流是一种完全沉浸在活动中的状态——时间感消失，自我意识消失，活动本身成为目的。&lt;/p&gt;
&lt;p&gt;进入心流状态的条件是什么？&lt;/p&gt;
&lt;p&gt;第一，活动有明确的目标。第二，活动有即时的反馈。第三，技能水平和挑战水平匹配——挑战不能太低（无聊），也不能太高（焦虑）。&lt;/p&gt;
&lt;p&gt;当这三个条件满足的时候，我们就可能进入心流状态。&lt;/p&gt;
&lt;p&gt;心流是一种深度的享受，它发生在过程之中，而不是结果之中。&lt;/p&gt;
&lt;h1 id="后记"&gt;后记&lt;/h1&gt;
&lt;p&gt;&amp;ldquo;享受过程&amp;rdquo;，我觉得这是&amp;quot;站着说话不腰疼&amp;quot;。&lt;/p&gt;
&lt;p&gt;或许，这不只是&amp;quot;要乐观一点&amp;quot;的问题，这是一个关于如何定义&amp;quot;价值&amp;quot;的问题。&lt;/p&gt;
&lt;p&gt;如果我们只把价值放在结果上，那我们的整个生活都被外部环境控制——结果好就快乐，结果不好就不快乐。&lt;/p&gt;
&lt;p&gt;但如果我们把价值放在过程上，那我们多了一点自主权——我可以享受学习的过程，即使考试成绩不好；我可以享受工作的过程，即使还没有升职。&lt;/p&gt;
&lt;p&gt;这不代表结果不重要。结果当然重要，它是方向，是反馈。但结果不是价值的唯一来源。&lt;/p&gt;
&lt;p&gt;最近我开始练习&amp;quot;足够好&amp;quot;。不是降低标准，而是接受有些事情做到80%就够了，剩下的20%可能需要十倍的努力，但价值可能不成比例。我开始把失败当作信息，而不是身份的证明。&lt;/p&gt;
&lt;p&gt;追求卓越是好的。但追求卓越和完美主义是不同的——前者是&amp;quot;我想做到最好&amp;quot;，后者是&amp;quot;我必须完美，否则我就是失败&amp;quot;。&lt;/p&gt;
&lt;p&gt;一个是可以接受的，一个是毁灭性的。&lt;/p&gt;
&lt;p&gt;这条路还很长，但我开始有了一些变化。&lt;/p&gt;</description></item><item><title>人生 DEBUG</title><link>https://touchingfish.top/2020/living-and-debugging/</link><pubDate>Sat, 28 Mar 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2020/living-and-debugging/</guid><description>&lt;p&gt;&lt;strong&gt;Appreciate&lt;/strong&gt; 的两种解释：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;to say thanks for something，not to take it for granted. 感激，不要把优点和成功当作理所当然&lt;/li&gt;
&lt;li&gt;to grow 增值&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;When we appreciate the good，the good appreciates&lt;/strong&gt; —— the good grows.&lt;/p&gt;
&lt;p&gt;“我们会看到要寻找的东西，错失不去寻找的东西，虽然它在那里，我们的阅历被我们的关注点深深地影响了。”&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“We see what we look for and we miss much of what we are not looking for even though it is there… Our experience of the world is heavily influenced by where we piace our attention.” —— Stavros and Torres&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;感恩2019上半年，毕业论文和汕大打工人的日子让我能在翻译软件的帮助下熟练地阅读英文。&lt;/p&gt;
&lt;p&gt;感谢鸠摩搜书和微盘，让我如愿下载到了 Tal.Ben.Shahar 的《Happier》并开始准备阅读。&lt;/p&gt;</description></item><item><title>简化</title><link>https://touchingfish.top/psychology1504/week13-reflection/</link><pubDate>Sat, 28 Mar 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/psychology1504/week13-reflection/</guid><description>&lt;p&gt;有一句话让我印象很深：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;性爱与压力成反比。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这话的意思是：如果我们能帮助人们简化生活、降低压力水平，他们的关系将会大大改善。&lt;/p&gt;
&lt;p&gt;这话让我笑了。笑完之后我在想：简化生活，真的可能吗？&lt;/p&gt;
&lt;h2 id="压力的代价"&gt;压力的代价&lt;/h2&gt;
&lt;p&gt;压力是我熟悉的东西。&lt;/p&gt;
&lt;p&gt;考试前的焦虑，找工作时的紧张， deadline 之前的崩溃——这些我都经历过。压力来临时，我会感到心跳加速、呼吸急促、思绪混乱。&lt;/p&gt;
&lt;p&gt;压力对我们的影响比大多数以为的更深远。&lt;/p&gt;
&lt;p&gt;心理上，长期压力导致焦虑、抑郁、注意力下降。&lt;/p&gt;
&lt;p&gt;身体上，压力影响免疫系统、消化系统、心血管系统。长期压力甚至会改变大脑结构。&lt;/p&gt;
&lt;p&gt;工作和创造力上，压力会降低生产力扼杀创造力。&lt;/p&gt;
&lt;p&gt;所以压力不是一个可以忽略的小问题。它在每一个层面上影响我们。&lt;/p&gt;
&lt;h2 id="重新定义压力"&gt;重新定义压力&lt;/h2&gt;
&lt;p&gt;但这周让我印象最深的内容不是压力的危害，而是&lt;strong&gt;重新定义压力&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;传统的观点认为：压力是有害的，我们应该尽量避免或减少压力。&lt;/p&gt;
&lt;p&gt;但新的研究提出了不同的视角：压力本身不是问题，问题是我们对压力的解读。&lt;/p&gt;
&lt;p&gt;当我感到心跳加速、呼吸急促，我可以选择把它解读为&amp;quot;我要崩溃了&amp;quot;，或者我可以把它解读为&amp;quot;我的身体正在动员能量来应对挑战&amp;quot;。&lt;/p&gt;
&lt;p&gt;不同的解读导向不同的结果。&lt;/p&gt;
&lt;p&gt;这个发现让我重新审视了我对压力的态度。以前我把压力当成敌人，要消灭它。但现在我把压力当成信号——它在告诉我有些事情需要注意，有些事情需要处理。&lt;/p&gt;
&lt;h2 id="价值观"&gt;价值观&lt;/h2&gt;
&lt;p&gt;识别和应用自己的核心价值观可以帮助我们应对压力。&lt;/p&gt;
&lt;p&gt;VIA框架提出了24种人格力量，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;智慧（creativity, curiosity, judgment, love of learning, perspective）&lt;/li&gt;
&lt;li&gt;勇气（bravery, persistence, integrity, vitality）&lt;/li&gt;
&lt;li&gt;人性（love, kindness, social intelligence）&lt;/li&gt;
&lt;li&gt;正义（fairness, leadership, teamwork）&lt;/li&gt;
&lt;li&gt;节制（forgiveness, humility, prudence, self-regulation）&lt;/li&gt;
&lt;li&gt;超越（appreciation of beauty, gratitude, hope, humor, spirituality）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当我们知道什么是最重要的，我们就更容易在混乱中找到方向。&lt;/p&gt;
&lt;h2 id="多则劣少则精"&gt;多则劣，少则精&lt;/h2&gt;
&lt;p&gt;我们生活在一个崇尚&amp;quot;更多&amp;quot;的文化里。更多的工作、更多的成就、更多的占有物。好像拥有越多，就越幸福。&lt;/p&gt;
&lt;p&gt;但积极心理学的研究发现了一个悖论：&lt;strong&gt;多则劣，少则精&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;当东西太多的时候，我们的注意力和精力被分散，每一个东西的价值都被稀释。反而是当我们专注于少数东西的时候，更容易体验到深度和满足。&lt;/p&gt;
&lt;p&gt;这就是为什么简化会提升幸福感。不是因为我们&amp;quot;放弃&amp;quot;了什么，而是因为我们&amp;quot;选择&amp;quot;了什么。&lt;/p&gt;
&lt;h2 id="金钱和幸福"&gt;金钱和幸福&lt;/h2&gt;
&lt;p&gt;金钱是&amp;quot;更多&amp;quot;文化最典型的代表。&lt;/p&gt;
&lt;p&gt;研究一致表明：当基本需求满足之后，更多的金钱对幸福感的提升作用很小。&lt;/p&gt;
&lt;p&gt;但我们还是拼命追求金钱。为什么？&lt;/p&gt;
&lt;p&gt;一个原因是：&lt;strong&gt;适应&lt;/strong&gt;。我们很快就会适应更高的收入，所以增加的收入带来的快乐很快就会消失。&lt;/p&gt;
&lt;p&gt;另一个原因是：&lt;strong&gt;社会比较&lt;/strong&gt;。我们常常在和别人的比较中评估自己的财富。看到别人买更好的东西，我们就觉得自己的不够好。这种比较永远不会结束，因为总有人比你更有钱。&lt;/p&gt;
&lt;p&gt;还有一个原因是：&lt;strong&gt;物质主义价值观&lt;/strong&gt;。把金钱放在首位的价值观和较低幸福感相关，即使收入很高也是如此。&lt;/p&gt;
&lt;h2 id="专注"&gt;专注&lt;/h2&gt;
&lt;p&gt;简化生活的一个关键是把注意力放在少数事情上，而不是分散在太多事情上。&lt;/p&gt;
&lt;p&gt;这里的&amp;quot;专注&amp;quot;有两层含义：&lt;/p&gt;
&lt;p&gt;第一层是&lt;strong&gt;数量&lt;/strong&gt;。减少做的事情，只专注于最重要的几件。&lt;/p&gt;</description></item><item><title>习惯与日记</title><link>https://touchingfish.top/psychology1504/week11-reflection/</link><pubDate>Wed, 25 Mar 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/psychology1504/week11-reflection/</guid><description>&lt;p&gt;有一句话让我印象很深：&amp;ldquo;行为先于智慧。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;这话的意思是：我们常常以为先想清楚再行动，但实际上是行动先于理解。有些事情我们&amp;quot;做&amp;quot;了之后，才真正&amp;quot;懂&amp;quot;了。&lt;/p&gt;
&lt;h2 id="习惯的力量"&gt;习惯的力量&lt;/h2&gt;
&lt;p&gt;我们每天的行为大部分是自动化的——起床、刷牙、吃早餐、看手机。这些习惯不需要意志力，它们自动运行。&lt;/p&gt;
&lt;p&gt;这既是祝福也是诅咒。&lt;/p&gt;
&lt;p&gt;祝福是因为：如果习惯是好的，那我们不用每天挣扎着做正确的事。刷牙不需要&amp;quot;今天要不要刷牙&amp;quot;的决定，它自动发生。&lt;/p&gt;
&lt;p&gt;诅咒是因为：如果习惯是坏的，那它们也在自动运行，而我们往往没有意识到。&lt;/p&gt;
&lt;p&gt;培养好习惯的关键是：利用习惯的自动化特性，让好习惯自动发生。&lt;/p&gt;
&lt;p&gt;30天是一个常用的时间框架。研究表明，一个新行为坚持30天左右会开始变得自动化。不是完全不需要意志力，但至少不再是每个决定都要挣扎。&lt;/p&gt;
&lt;h2 id="自律是有限的"&gt;自律是有限的&lt;/h2&gt;
&lt;p&gt;我们常常以为意志力是无限的——只要&amp;quot;努力&amp;quot;就可以。但研究表明，自律是有限的资源。&lt;/p&gt;
&lt;p&gt;每次使用自律都会消耗它。用完了，就需要休息和恢复才能补充。&lt;/p&gt;
&lt;p&gt;这意味着策略很重要。与其依赖自律，不如设计环境让好习惯更容易发生，让坏习惯更难发生。&lt;/p&gt;
&lt;p&gt;比如，如果你想多读书，把书放在手边，而不是放在书架上。如果你不想刷手机，睡觉前把手机放在另一个房间。&lt;/p&gt;
&lt;h2 id="表达性写作"&gt;表达性写作&lt;/h2&gt;
&lt;p&gt;正常人谁写日记？&lt;/p&gt;
&lt;p&gt;但写日记这件事比我想的有用得多。&lt;/p&gt;
&lt;p&gt;Tal介绍了一种特定的日记方式：&lt;strong&gt;表达性写作&lt;/strong&gt;（expressive writing）。&lt;/p&gt;
&lt;p&gt;它的核心是：连续几天写下你最痛苦或最创伤的经历。不是记录事件，而是探索你对这些事件的感受和思考。&lt;/p&gt;
&lt;p&gt;这不是&amp;quot;写作比赛&amp;quot;，不需要在意语法、拼写、结构。需要的是诚实和深入——写出你最深层的思想和感受。&lt;/p&gt;
&lt;p&gt;研究表明，这种写作方式有显著的心理和生理好处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;减少焦虑和抑郁&lt;/li&gt;
&lt;li&gt;提高免疫功能&lt;/li&gt;
&lt;li&gt;改善心情&lt;/li&gt;
&lt;li&gt;增强幸福感&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;为什么写下来痛苦的事会有帮助？&lt;/p&gt;
&lt;p&gt;一个解释是：有些情绪被压在无意识里，它们在暗处影响我们，但我们没有意识到它们的存在。写下来是一种&amp;quot;外化&amp;quot;——把内在的东西拿出来，让它变得可见、可分析、可处理。&lt;/p&gt;
&lt;p&gt;另一个解释是：写日记帮助我们给事件一个叙事。事件发生了，但我们怎么理解它、讲述它，会影响它对我们的影响。通过写作，我们在构建一个关于自己的故事。&lt;/p&gt;
&lt;h2 id="寻找意义"&gt;寻找意义&lt;/h2&gt;
&lt;p&gt;日记的另一个功能是帮助我们寻找意义。&lt;/p&gt;
&lt;p&gt;创伤性事件会让人困惑：&amp;ldquo;为什么这种事会发生在我身上？&amp;ldquo;&amp;ldquo;这意味着什么？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;写日记是一种处理这种困惑的方式。通过写作，我们把碎片化的经历组织成一个连贯的故事。在这个过程中，意义慢慢浮现。&lt;/p&gt;
&lt;p&gt;当然，意义不是马上能找到的。有时候需要几周、几个月、甚至几年。但写日记是开始这个过程的一种方式。&lt;/p&gt;
&lt;h2 id="自我和谐的目标"&gt;自我和谐的目标&lt;/h2&gt;
&lt;p&gt;不是所有的目标都能带来幸福。&lt;/p&gt;
&lt;p&gt;研究发现，只有和自己的兴趣、价值观一致的目标，才能带来持续的满足感。这种目标叫&amp;quot;自我和谐的目标&amp;rdquo;（self-concordant goals）。&lt;/p&gt;
&lt;p&gt;设定自我和谐的目标需要自我了解：你真正想要什么？你真正在乎什么？这不是别人告诉你应该要的东西，是你自己真正觉得有意义的东西。&lt;/p&gt;
&lt;p&gt;一个方法是：先找出你能做的事，再从中找出你想做的事。在这个交叉地带，更容易找到自我和谐的目标。&lt;/p&gt;
&lt;h1 id="后记"&gt;后记&lt;/h1&gt;
&lt;p&gt;习惯是&amp;quot;小事情&amp;rdquo;——刷牙、叠被子、跑步。这些事情重要，但不是核心。&lt;/p&gt;
&lt;p&gt;习惯是我们每天行为的主体，它们在定义我们是谁。如果我们每天做的事情是自我提升的，我们就在成为更好的自己。如果我们每天做的事情是消耗性的，我们就在慢慢失去自己。&lt;/p&gt;
&lt;p&gt;习惯是我们每天都在做的&amp;quot;投资&amp;quot;。&lt;/p&gt;
&lt;p&gt;写日记不是一种任务或习惯，是一种和自己的持续连接。&lt;/p&gt;
&lt;p&gt;我开始理解，为什么&amp;quot;写下来&amp;quot;这么有力量。有时候脑子里有一团乱麻，但当你开始写，思路就慢慢清晰了。写作是一种思考的方式，不只是记录的方式。&lt;/p&gt;
&lt;p&gt;我不是每天都写日记，只是当有什么事情困扰我的时候，我会试着写下来。&lt;/p&gt;
&lt;p&gt;写完之后，常常会有一种&amp;quot;理清&amp;quot;的感觉——不是问题被解决了，而是问题被&amp;quot;看到&amp;quot;了，被接受了。&lt;/p&gt;
&lt;p&gt;30天的框架让我看到改变是可能的，但不是一夜之间的。自律是有限的，所以策略很重要。不要依赖意志力，要设计环境和系统。&lt;/p&gt;</description></item><item><title>如何改变</title><link>https://touchingfish.top/psychology1504/week10-reflection/</link><pubDate>Tue, 24 Mar 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/psychology1504/week10-reflection/</guid><description>&lt;p&gt;我们都知道应该改变，但我们不知道怎么改变。&lt;/p&gt;
&lt;p&gt;这是一个经典的困境。想减肥，想戒烟，想变得更乐观，想养成好习惯——目标清晰，愿望强烈，但行动跟不上。&lt;/p&gt;
&lt;h2 id="扩建理论"&gt;扩建理论&lt;/h2&gt;
&lt;p&gt;Barbara Fredrickson提出了一个理论：&lt;strong&gt;扩建理论&lt;/strong&gt;（broaden-and-build theory）。&lt;/p&gt;
&lt;p&gt;这个理论说，积极情绪不只是&amp;quot;感觉好&amp;quot;——它们有重要的功能。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;扩展&lt;/strong&gt;（broaden）：积极情绪能够扩展人的思维和行动的范围。&lt;/p&gt;
&lt;p&gt;当人处于消极情绪中——焦虑、恐惧、愤怒——思维会变窄，注意力集中在眼前的威胁上，行动选项减少。&amp;ldquo;战斗或逃跑&amp;quot;模式启动，所有的能量都用于应对威胁。&lt;/p&gt;
&lt;p&gt;但当人处于积极情绪中——喜悦、感激、兴趣——思维会扩展，看得到更多的可能性，行动选项增加。创意、探索、连接——这些都变得更可能。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;建设&lt;/strong&gt;（build）：长期的积极情绪能够帮助我们建立持久的资源。&lt;/p&gt;
&lt;p&gt;这些资源包括：身体资源（健康的身体）、智力资源（知识和技能）、心理资源（韧性、乐观）、社会资源（人际关系）。&lt;/p&gt;
&lt;p&gt;消极情绪消耗资源，积极情绪建设资源。&lt;/p&gt;
&lt;p&gt;这个理论有一个重要的含义：&lt;strong&gt;积极情绪既是终点，也是手段。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;作为终点，体验积极情绪本身就是好的，因为它扩展了当下这一刻的可能性。&lt;/p&gt;
&lt;p&gt;作为手段，积极情绪帮助我们建立长期的资源，这些资源会在未来带来更多的好处。&lt;/p&gt;
&lt;h2 id="神经可塑性"&gt;神经可塑性&lt;/h2&gt;
&lt;p&gt;大脑是可以被改变的。&lt;/p&gt;
&lt;p&gt;长期冥想者的大脑和普通人的大脑有显著的结构差异。冥想者的左前额皮质更活跃，这个区域和积极情绪有关。8周的冥想练习就能产生可测量的大脑变化。&lt;/p&gt;
&lt;p&gt;这意味着什么？意味着&amp;quot;变成一个更积极的人&amp;quot;不只是愿望，大脑真的在改变。不是一夜之间，但确实在改变。&lt;/p&gt;
&lt;p&gt;这就是神经可塑性（neuroplasticity）——大脑在一生中都在变化，根据我们的行为和思维模式。经常使用某些神经通路，那些通路就会加强。不常使用的通路，会逐渐弱化。&lt;/p&gt;
&lt;p&gt;所以问题是：你每天在想什么？你的思维习惯是什么？这些习惯在加强哪些神经通路？&lt;/p&gt;
&lt;h2 id="改变的两个维度"&gt;改变的两个维度&lt;/h2&gt;
&lt;p&gt;Tal提出改变有两个维度：&lt;strong&gt;深度&lt;/strong&gt;和&lt;strong&gt;速度&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;深度指的是改变的基础有多深——是在表面上改变行为，还是在深层次改变性格和价值观？&lt;/p&gt;
&lt;p&gt;速度指的是改变的快慢——是渐进的还是剧烈的？&lt;/p&gt;
&lt;p&gt;不同的改变方式适合不同的目标。没有一种方法是万能的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;渐进的改变&lt;/strong&gt;（gradual approach）适合深层次的改变。每天冥想几分钟，每天写日记，每天练习感恩——这些看似微小的行动，日积月累会改变大脑的结构和思维的习惯。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;剧烈的改变&lt;/strong&gt;（acute approach）适合需要突破现状的情况。当旧有的模式已经无法维持，必须有一个breakthrough。有时候人需要&amp;quot;触底反弹&amp;quot;的那种感觉，才能真正开始新的生活。&lt;/p&gt;
&lt;p&gt;持久的变化往往需要两者的结合——剧烈的改变提供动力，渐进的改变提供持续性。&lt;/p&gt;
&lt;h2 id="认知重建"&gt;认知重建&lt;/h2&gt;
&lt;p&gt;改变思维模式是改变的核心。&lt;/p&gt;
&lt;p&gt;我们的思维不是固定不变的。它们是长期形成的习惯，受到过去的经验、文化环境、教育背景的影响。有些思维模式帮助我们，有些思维模式限制我们。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;认知重建&lt;/strong&gt;（cognitive restructuring）是一种改变思维模式的技术。它的核心步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;识别自动化的负面想法&lt;/li&gt;
&lt;li&gt;质疑这些想法——它们是全部真相吗？有没有其他的解释？&lt;/li&gt;
&lt;li&gt;用更平衡的想法替代&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这种方法最初是在认知行为疗法中发展出来的，用于治疗抑郁和焦虑。但它不只是一种&amp;quot;治疗&amp;quot;技术，它是一种所有人都可以使用的思维训练方法。&lt;/p&gt;
&lt;p&gt;关键是练习。每天练习。旧的思维模式是根深蒂固的，新的思维模式需要时间来形成。&lt;/p&gt;
&lt;h2 id="冥想的作用"&gt;冥想的作用&lt;/h2&gt;
&lt;p&gt;冥想是这周反复出现的主题。&lt;/p&gt;
&lt;p&gt;冥想的好处有科学证据支持：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;减少焦虑和抑郁&lt;/li&gt;
&lt;li&gt;改善情绪&lt;/li&gt;
&lt;li&gt;增强免疫系统&lt;/li&gt;
&lt;li&gt;改变大脑结构&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;冥想的核心是什么？Tal引用了一句话：&amp;ldquo;想消除抑郁是通常的解决方法，想解决不对劲的地方只会让我们陷得更深。苦苦思索是问题症结之一，不是解决办法。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;冥想是一种不同的方式——不是执着地分析问题，而是让注意力停留在当下，观察思维和感受的来来去去，不带评判。&lt;/p&gt;
&lt;p&gt;这种&amp;quot;不分析&amp;quot;的态度可能听起来像是在逃避，但它实际上是一种训练注意力的方法。当注意力能够稳定地停留在当下，我们就不那么容易被负面情绪带着走。&lt;/p&gt;
&lt;h1 id="后记"&gt;后记&lt;/h1&gt;
&lt;p&gt;这周的内容让我意识到：改变是可能的，但需要方法。&lt;/p&gt;
&lt;p&gt;我以前对&amp;quot;改变&amp;quot;有一种矛盾的态度。一方面我相信改变是可能的（不然我为什么要尝试？），另一方面我又觉得改变太难了（不然为什么尝试了那么多次还是失败？）。&lt;/p&gt;
&lt;p&gt;这周的课让我找到了第三种视角：改变是困难的，但不是不可能的。它需要正确的方法，需要时间，需要坚持。&lt;/p&gt;
&lt;p&gt;几个点让我印象深刻：&lt;/p&gt;
&lt;p&gt;第一，&lt;strong&gt;认知重建&lt;/strong&gt;是改变思维模式的核心。不是简单地&amp;quot;想开一点&amp;rdquo;，而是系统地识别、质疑、替代旧的思维模式。这需要练习，像训练肌肉一样训练大脑。&lt;/p&gt;
&lt;p&gt;第二，&lt;strong&gt;冥想&lt;/strong&gt;是一种有效的工具。不是&amp;quot;坐以待毙&amp;quot;，而是一种主动的心理训练。&lt;/p&gt;
&lt;p&gt;第三，&lt;strong&gt;允许自己慢慢来&lt;/strong&gt;。渐进的改变看起来慢，但它更持久。急于求成反而容易失败。&lt;/p&gt;
&lt;p&gt;改变是一辈子的事情。不需要一夜之间脱胎换骨，只需要每天都在路上。&lt;/p&gt;</description></item><item><title>感激</title><link>https://touchingfish.top/psychology1504/week7-reflection/</link><pubDate>Mon, 23 Mar 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/psychology1504/week7-reflection/</guid><description>&lt;p&gt;Emerson有一句话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;如果星星每千年闪烁一次，我们都会仰视赞美这个世界的美丽，但是因为它们每天都在闪烁，我们将之视为理所当然。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这话让我停下来想了很久。&lt;/p&gt;
&lt;h2 id="什么是感激"&gt;什么是感激&lt;/h2&gt;
&lt;p&gt;感激（gratitude）有两层含义。&lt;/p&gt;
&lt;p&gt;第一层是&lt;strong&gt;欣赏&lt;/strong&gt;（appreciation）——认识到好的东西的价值，不把它当作理所当然。感谢某个东西，感谢某个人，感谢某种体验。&lt;/p&gt;
&lt;p&gt;第二层是&lt;strong&gt;增值&lt;/strong&gt;——当你去欣赏好的东西时，那个东西的价值会增加。一个花园被欣赏时会变得更加美丽。一段关系被感激时会变得更加深厚。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;当我们感激好的东西时，好的东西会增值&amp;rdquo;——the good appreciates when we appreciate the good.&lt;/p&gt;
&lt;p&gt;这个双关语不是文字游戏，它指向一个真实的机制：你关注什么，什么就会在你的经验中放大。你关注问题，问题就变得更大。你关注美好，美好就变得更大。&lt;/p&gt;
&lt;h2 id="感激和幸福"&gt;感激和幸福&lt;/h2&gt;
&lt;p&gt;研究表明，感激和幸福之间有很强的关联。&lt;/p&gt;
&lt;p&gt;感激的人更幸福。感激的人身体更健康。感激的人人际关系更好。感激的人更乐观，更能应对逆境。&lt;/p&gt;
&lt;p&gt;但这是因果关系吗？还是说幸福的人恰好也更容易感激？&lt;/p&gt;
&lt;p&gt;研究表明，感激是可以被培养的，而且培养感激会提升幸福感。这不只是相关关系，是因果关系。&lt;/p&gt;
&lt;p&gt;一个简单的实验：让一组人每周写感恩日记，记录三件让他们感激的事情。几周后，这组人的幸福感显著提升，比控制组高得多。&lt;/p&gt;
&lt;p&gt;感激不是被动的发现，是主动的练习。&lt;/p&gt;
&lt;h2 id="感激的障碍"&gt;感激的障碍&lt;/h2&gt;
&lt;p&gt;既然感激这么好，为什么不是所有人都practice it？&lt;/p&gt;
&lt;p&gt;一个原因是&lt;strong&gt;适应&lt;/strong&gt;（adaptation）。好的东西用久了就不觉得好了。新房子住久了就不觉得新了。新鲜感消退后，关注点就会转向新的问题。&lt;/p&gt;
&lt;p&gt;另一个原因是&lt;strong&gt;比较&lt;/strong&gt;。我们常常在和别人的比较中评估自己的处境。看到别人比我们好，我们就会觉得自己不够好。这种比较心态会让我们看不到自己已经拥有的好东西。&lt;/p&gt;
&lt;p&gt;还有一个原因是&lt;strong&gt;关注点&lt;/strong&gt;。我们的大脑倾向于关注威胁和问题，这是在进化中形成的生存本能。但在现代生活中，这种倾向让我们对日常的美好视而不见。&lt;/p&gt;
&lt;h2 id="逆境中的免疫系统"&gt;逆境中的免疫系统&lt;/h2&gt;
&lt;p&gt;Dan Gilbert的《Stumbling on Happiness》里有一个发现让我印象很深：中了彩票的人和突然瘫痪的人，在一年之后的快乐程度其实差不多。&lt;/p&gt;
&lt;p&gt;这个发现看似违反直觉，但它指向一个重要的机制——&lt;strong&gt;心理免疫系统&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;人类有一种天生的能力，能够适应重大的生活事件。&lt;/p&gt;
&lt;p&gt;当我们遭遇坏事的时候，大脑会启动一套机制，帮助我们重新找到心理平衡。我们会给发生的事情一个意义，我们会重新评估什么是重要的，我们会找到新的方式来感受满足感。&lt;/p&gt;
&lt;p&gt;这个过程不是有意识的，不是我们&amp;quot;决定&amp;quot;要开心起来就会开心。它是自动发生的，像身体的免疫系统一样。&lt;/p&gt;
&lt;p&gt;和身体免疫系统一样，心理免疫系统也可以被加强或削弱。长期的消极思维、社交孤立、缺乏意义感——这些会削弱心理免疫系统。感恩、乐观、社会支持——这些会增强它。&lt;/p&gt;
&lt;p&gt;Julian Baur提出了两种人：&lt;strong&gt;fault-finder&lt;/strong&gt;（错误发现者）和&lt;strong&gt;benefit-finder&lt;/strong&gt;（益处发现者）。&lt;/p&gt;
&lt;p&gt;Fault-finder总是看到问题和缺陷。即使在顺利的情况下，他们也会找到不满意的地方。这种思维方式会导向放弃——反正做什么都不够好，那为什么还要努力？&lt;/p&gt;
&lt;p&gt;Benefit-finder总是看到机会和益处。即使在不顺的情况下，他们也能找到学习和成长的地方。这种思维方式会导向韧性——问题只是暂时的，解决方案总是存在的。&lt;/p&gt;
&lt;p&gt;这两种方式不是天生的，是可以选择的。&lt;/p&gt;
&lt;p&gt;当然，benefit-finder不是说对问题视而不见，或者假装一切都好。真正的benefit-finder是清醒的——他们看到问题，但他们也看到可能性。&lt;/p&gt;
&lt;h2 id="逆境的意义"&gt;逆境的意义&lt;/h2&gt;
&lt;p&gt;有一句话让我印象很深：&amp;ldquo;灾难中总藏着成长的种子。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;这话听起来像心灵鸡汤，但我后来在不同的语境里反复遇到它——在心理学的文献里，在经历过创伤的人的叙述里，在一些历史人物的传记里。&lt;/p&gt;
&lt;p&gt;它不是简单的&amp;quot;一切都会好起来&amp;quot;。它说的是：逆境本身可能包含着某种东西，能够推动人成长。&lt;/p&gt;
&lt;p&gt;创伤后成长的研究支持了这个观点。很多人在经历重大创伤之后，不仅恢复了，还报告说自己的生活变得更好了——关系更亲密了，更懂得感恩了，更能活在当下了，更知道自己想要什么了。&lt;/p&gt;
&lt;p&gt;这当然不是说创伤是&amp;quot;好事&amp;quot;。创伤是毁灭性的，能不经历就不经历。但它确实指出了一件事：痛苦不一定只是痛苦，它也可以成为改变的催化剂。&lt;/p&gt;
&lt;h1 id="后记"&gt;后记&lt;/h1&gt;
&lt;p&gt;我觉得感激是一种&amp;quot;应该有的态度&amp;quot;，是道德上正确的东西。你应该感激你现在的生活，你应该感激帮助你的人，你应该感激阳光和空气。&lt;/p&gt;
&lt;p&gt;但这种&amp;quot;应该&amp;quot;让我感到压力。感激变成了一种义务，而不是一种自然的情感。&lt;/p&gt;
&lt;p&gt;这周的课让我意识到，感激不是义务，是选择。是我选择把注意力放在我拥有的好东西上，而不是放在我缺少的东西上。&lt;/p&gt;
&lt;p&gt;这种选择不总是容易的。有些日子我就是会觉得不满意，有些日子我就会抱怨。但感激是一种可以被训练的思维方式。练得越多，它就越自然。&lt;/p&gt;
&lt;p&gt;Emerson说星星每天闪烁，我们会视为理所当然。这话是真的。但反过来说，如果我们能让每一天都像第一次看到星星那样，那种感觉会是怎样的？&lt;/p&gt;
&lt;p&gt;我想尽量避免逆境。但逆境是人生的一部分，不管我喜不喜欢，它都会来。&lt;/p&gt;
&lt;p&gt;与其把它当成&amp;quot;应该被避免的东西&amp;quot;，不如把它当成&amp;quot;可以被利用的东西&amp;quot;。&lt;/p&gt;
&lt;p&gt;我还是会为逆境感到沮丧，还是会在逆境中感到无助。&lt;/p&gt;
&lt;p&gt;但逆境可能是在释放信号，说明有什么东西需要改变；也可能是一个机会，让我发现自己之前不知道的力量。&lt;/p&gt;
&lt;p&gt;就像那句祷告词说的：给我宁静去接受我不能改变的，给我勇气去改变我能改变的，给我智慧去认识这两者的差别。&lt;/p&gt;</description></item><item><title>快乐是最高的追求吗？</title><link>https://touchingfish.top/psychology1504/week5-reflection/</link><pubDate>Thu, 12 Mar 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/psychology1504/week5-reflection/</guid><description>&lt;p&gt;有一段时间我觉得追求快乐是一件很俗的事。&lt;/p&gt;
&lt;p&gt;人会为了更崇高的目标而活——为理想，为他人，为意义。单纯追求快乐听起来像是一种逃避，像是不想面对生活的重量，只想躲进一个舒适的角落。&lt;/p&gt;
&lt;h2 id="快乐是最高追求"&gt;快乐是最高追求&lt;/h2&gt;
&lt;p&gt;Aristotle说：快乐是人生的意义和目的，人类存在的最终目标。&lt;/p&gt;
&lt;p&gt;这话听起来很直白，但我们常常不愿意接受它。我们给它加上各种条件——&amp;ldquo;快乐必须是配得上更高的目标的&amp;rdquo;，&amp;ldquo;追求快乐不能伤害他人&amp;rdquo;，&amp;ldquo;要把快乐建立在成就之上&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;但Aristotle说的就是字面意思。快乐本身就是目的，不是手段。&lt;/p&gt;
&lt;p&gt;William James也表达了类似的观点：人在所有时候的秘密动机，都是追求幸福。&lt;/p&gt;
&lt;p&gt;达赖喇嘛更直接：不管你信什么宗教，不管你信不信宗教，生命的目的是快乐，生命的走向是快乐。&lt;/p&gt;
&lt;p&gt;这些话让我重新审视了&amp;quot;追求快乐&amp;quot;这件事。&lt;/p&gt;
&lt;p&gt;我一直觉得追求快乐是&amp;quot;自私的&amp;quot;——只顾自己，不管他人。但达赖喇嘛说追求快乐和宗教无关，和信仰体系无关，这是人类共同的倾向。如果这是普遍的，那它可能不只是&amp;quot;自私&amp;quot;，而是人性的一部分。&lt;/p&gt;
&lt;h2 id="积极情绪的好处"&gt;积极情绪的好处&lt;/h2&gt;
&lt;p&gt;Barbara Fredrickson提出了&amp;quot;扩建理论&amp;quot;（broaden and build theory）。&lt;/p&gt;
&lt;p&gt;这个理论说，积极情绪不只是&amp;quot;感觉好&amp;quot;——它们有进化上的理由，有实际的功能。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;扩展思考范围&lt;/strong&gt;。当你感到快乐的时候，你的思维会变得更开放、更有创造性。你能看到更多的可能性，做事更有灵活性。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;建立资源&lt;/strong&gt;。长期的积极情绪能够帮助我们建立持久的能力、人际关系、技能。这些资源会在未来持续发挥作用。&lt;/p&gt;
&lt;p&gt;对比一下：消极情绪会收窄我们的思考范围，让我们只看到眼前的问题，采取&amp;quot;战斗或逃跑&amp;quot;的反应。这是进化给的本能，帮助我们在危险中生存。但这种本能不适合现代生活——现代生活中的问题往往不是四分钟能解决的，需要长期的规划和建设。&lt;/p&gt;
&lt;p&gt;所以积极情绪不只是&amp;quot;奖励&amp;quot;，它们是有效运作的必需品。&lt;/p&gt;
&lt;h2 id="乐观的解释风格"&gt;乐观的解释风格&lt;/h2&gt;
&lt;p&gt;有些人天生就乐观，有些人天生就悲观。性格是很难改变的，所以乐观这件事也和我无缘。&lt;/p&gt;
&lt;p&gt;但Tal说，乐观不是固定的性格，而是一种可以培养的思维方式。&lt;/p&gt;
&lt;p&gt;心理学研究发现，乐观和悲观的核心区别在于&lt;strong&gt;解释风格&lt;/strong&gt;（interpretation style）——我们如何解读发生在自己身上的事情。&lt;/p&gt;
&lt;p&gt;面对同样的事件，悲观的人会倾向于把它解释为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;永久的&lt;/strong&gt;（always）——这件事会一直影响我&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;普遍的&lt;/strong&gt;（universal）——这件事说明我整个人都有问题&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;乐观的人会倾向于把它解释为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;暂时的&lt;/strong&gt;（temporary）——这件事只是暂时的&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特定的&lt;/strong&gt;（specific）——这只是这件事的问题，不代表其他方面&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;举个例子。被公司裁员了。&lt;/p&gt;
&lt;p&gt;悲观的想法：&amp;ldquo;我被解雇了。我这辈子完了。我就是不够好。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;乐观的想法：&amp;ldquo;我被解雇了。这只是这份工作的问题。我可以找到新的机会。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;两种解读，导向完全不同的情绪和行动。悲观让人感到无助和放弃，乐观让人感到有希望和动力去寻找新的出路。&lt;/p&gt;
&lt;h2 id="乐观的神经基础"&gt;乐观的神经基础&lt;/h2&gt;
&lt;p&gt;有一个有趣的研究发现：&lt;strong&gt;左前额皮质&lt;/strong&gt;活跃度高的人，比右前额皮质活跃度高的人更快乐，更容易体验积极情绪，对负面情绪的适应能力也更强。&lt;/p&gt;
&lt;p&gt;这不是说乐观是&amp;quot;脑子的问题&amp;quot;，没有这么简单。但大脑确实有一个&amp;quot;乐观偏向&amp;quot;的区域。冥想、积极的思维方式、感恩练习——这些活动会增强左前额皮质的活跃度。&lt;/p&gt;
&lt;p&gt;换句话说，乐观不仅是一种选择，它有神经基础，可以通过练习来增强。&lt;/p&gt;
&lt;p&gt;乐观不只是&amp;quot;感觉好&amp;quot;，它和身体健康有关。乐观主义者心脏病发作后的恢复速度更快。乐观的艾滋病患者的存活率更高。乐观的人更不容易感冒。&lt;/p&gt;
&lt;h2 id="幸福不是零和游戏"&gt;幸福不是零和游戏&lt;/h2&gt;
&lt;p&gt;一个常见的担忧是：追求自己的幸福会不会伤害他人？快乐是有限资源吗？我的幸福会不会抢走别人的幸福？&lt;/p&gt;
&lt;p&gt;佛教徒有句话：点燃千支蜡烛，烛光不会缩短。幸福不会因为分享而减少。&lt;/p&gt;
&lt;p&gt;经济学有一个概念叫&amp;quot;正和游戏&amp;quot;（positive sum game）——双赢的游戏，蛋糕变大了，不是一方抢了另一方的。&lt;/p&gt;
&lt;p&gt;幸福也是正和游戏。&lt;/p&gt;
&lt;p&gt;我的幸福不会抢走你的幸福。事实上，恰恰相反——当我更幸福的时候，我更有可能帮助他人，更有可能成为一个好的朋友、伴侣、同事。&lt;/p&gt;
&lt;p&gt;这不只是道德上的&amp;quot;应该&amp;quot;，而是有研究支持的。Lyubomirsky的研究表明，帮助他人会提升帮助者自己的幸福感，形成一个正向循环。&lt;/p&gt;
&lt;p&gt;这里有一个有意思的悖论。&lt;/p&gt;
&lt;p&gt;我们通常认为先要自己幸福，才能帮助他人。这是一个常见的逻辑——&amp;ldquo;我自己都没有，怎么给别人？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;但研究表明，帮助他人本身就是获得幸福的一条途径。&lt;/p&gt;
&lt;p&gt;这和我们的直觉相反。我们以为幸福是有限的，要先存够才能给出去。但幸福可能更像是一块肌肉——越用越强。你帮助别人，你在帮助的过程中感到连接感和意义感，你自己的幸福感就提升了。&lt;/p&gt;
&lt;p&gt;当然，这有一个前提：这种帮助是真诚的，不是出于义务或内疚。被迫的帮助反而会消耗幸福感。&lt;/p&gt;
&lt;p&gt;所以问题不是&amp;quot;我幸福了才能帮助别人&amp;quot;，而是&amp;quot;我在帮助别人的时候也在帮助自己&amp;quot;。&lt;/p&gt;
&lt;p&gt;两者不是先后关系，是同步的关系。&lt;/p&gt;
&lt;h1 id="后记"&gt;后记&lt;/h1&gt;
&lt;p&gt;重新思考了&amp;quot;幸福&amp;quot;在我生活中的位置。&lt;/p&gt;
&lt;p&gt;第一，我不再觉得追求幸福是&amp;quot;俗&amp;quot;的了。如果幸福是人生的目的，那追求幸福就是在追求人生的目的。这不是逃避，这是正视。&lt;/p&gt;
&lt;p&gt;第二，我开始理解积极情绪的功能性价值。以前我会觉得&amp;quot;开心就好&amp;quot;，把开心当成一种状态，一种可以被&amp;quot;感悟&amp;quot;但不需要被&amp;quot;分析&amp;quot;的东西。但积极情绪是有功能的——它们扩展我的思维，建立我的资源，增强我的心理免疫力。它们是有效生活的组成部分。&lt;/p&gt;
&lt;p&gt;第三，帮助他人和帮助自己是统一的，不是矛盾的。这不是说帮助他人不需要边界。设立边界很重要，否则帮助会变成消耗。但在这个边界之内，帮助他人确实在帮助自己。&lt;/p&gt;
&lt;p&gt;我开始觉得，幸福不是一个地方，而是一种走法。不是到达某个点就&amp;quot;幸福了&amp;quot;，而是在路上就&amp;quot;幸福着&amp;quot;。&lt;/p&gt;
&lt;p&gt;当然，这话说起来容易做起来难。我还是会为未来焦虑，还是会执着于结果，还是会在某些时刻觉得&amp;quot;等实现了X就幸福了&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;过程就是意义。走路就是目的。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>环境与信念</title><link>https://touchingfish.top/psychology1504/week4-reflection/</link><pubDate>Wed, 26 Feb 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/psychology1504/week4-reflection/</guid><description>&lt;p&gt;Margaret Mead说：永远不要怀疑一小群有思想、坚定的市民可以改变世界。事实上，正是这群人改变着世界。&lt;/p&gt;
&lt;p&gt;这话听起来像鸡汤。但我后来在不同的场景里反复遇到它——在书里，在演讲里，在朋友的口中。每次遇到，我都会停下来想一想：这是真的吗？一小群人真的能改变世界吗？&lt;/p&gt;
&lt;h2 id="一个人的力量"&gt;一个人的力量&lt;/h2&gt;
&lt;p&gt;Human networks是指数级的。&lt;/p&gt;
&lt;p&gt;Tal举了一个例子：如果一个人能影响10个人，这10个人每个人再影响10个人，这样下去，只需要很少的层级，就能触达大量的人。&lt;/p&gt;
&lt;p&gt;这就是社交网络的力量。也是为什么&amp;quot;一小群人&amp;quot;能够改变世界——他们的影响力不是线性叠加的，是指数级扩散的。&lt;/p&gt;
&lt;p&gt;蝴蝶效应说的也是这件事。一个微小的变化，经过复杂的系统传导，能够产生巨大的连锁反应。我们常常低估了自己行动的影响，因为我们低估了指数函数的增长速度。&lt;/p&gt;
&lt;p&gt;六度分隔理论说，你和任何一个陌生人之间最多只隔着五个人。这个理论在互联网时代可能已经不太准确了——现在可能是三度或者四度。但它的核心意思是：我们不是孤立的节点，我们是一个巨大网络的一部分。每一个行动都会传导。&lt;/p&gt;
&lt;p&gt;这让我重新审视了自己的一些想法。&lt;/p&gt;
&lt;p&gt;我以前觉得&amp;quot;我&amp;quot;能做的事情很有限。我一个人的声音，在14亿人里算什么？我一个人的行动，能改变什么？&lt;/p&gt;
&lt;p&gt;但现在我不这么想了。&amp;ldquo;我&amp;quot;不是孤立的。&amp;ldquo;我&amp;quot;是一个网络里的节点。当&amp;quot;我&amp;quot;做出一个选择、传播一个观点、影响一个身边的人，这个影响会顺着网络传导，可能到达比我想象的更远的地方。&lt;/p&gt;
&lt;h2 id="信念是自我实现的预言"&gt;信念是自我实现的预言&lt;/h2&gt;
&lt;p&gt;1954年以前，医生、科学家、运动员都证明了人类不可能在四分钟内跑完一英里。这是&amp;quot;事实&amp;rdquo;，被权威认证过的&amp;quot;事实&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;然后Roger Bannister出现了。牛津大学的医学博士，用3分59秒跑完了一英里。&lt;/p&gt;
&lt;p&gt;六周后，John Landy打破了Bannister的记录。&lt;/p&gt;
&lt;p&gt;一年后，300多名运动员都在四分钟内跑完了一英里。&lt;/p&gt;
&lt;p&gt;人类的速度没有变。肌肉没有进化。跑道还是那条跑道。&lt;/p&gt;
&lt;p&gt;但信念变了。&lt;/p&gt;
&lt;p&gt;这个故事是关于信念如何创造现实的最好例子。当人们相信某件事是不可能的，他们会按&amp;quot;不可能&amp;quot;的方式行动，结果那件事就真的不可能。当有人证明了&amp;quot;可能&amp;quot;，其他人的信念就变了，行动也跟着变了，结果更多的&amp;quot;不可能&amp;quot;变成了&amp;quot;可能&amp;quot;。&lt;/p&gt;
&lt;p&gt;皮格马利翁效应说的是同样的事。教师的期望会影响学生的表现。如果你期望一个学生好，你会用不同的方式对待他，给他更多的鼓励和机会，而这种不同的对待方式会真的让他表现得更好。&lt;/p&gt;
&lt;p&gt;这不是魔法，是自我实现的预言。&lt;/p&gt;
&lt;h2 id="环境和情境"&gt;环境和情境&lt;/h2&gt;
&lt;p&gt;但信念不是凭空产生的。信念受到环境和情境的强烈影响。&lt;/p&gt;
&lt;p&gt;Tal举了一个例子。Ellen Langer在1979年做了一个实验：把一群75岁以上的老人带到一个&amp;quot;回到1959年&amp;quot;的度假村。他们在那里住了一周，像生活在1959年一样——听1959年的音乐，读1959年的报纸，讨论1959年的事件。&lt;/p&gt;
&lt;p&gt;一周后，这些老人的心理健康和生理年龄都下降了。他们在认知测试中表现更好，身体更灵活，甚至视力都有改善。&lt;/p&gt;
&lt;p&gt;情境可以改变人。不仅是改变行为，是改变身心状态。&lt;/p&gt;
&lt;p&gt;斯坦福监狱实验更极端地说明了这件事。正常的大学生被随机分配扮演&amp;quot;狱警&amp;quot;和&amp;quot;囚犯&amp;quot;的角色。实验本该进行两周，但在六天后就不得不终止——因为扮演狱警的学生开始表现出真正的虐待行为，而扮演囚犯的学生开始出现心理崩溃。&lt;/p&gt;
&lt;p&gt;环境的力量比我们以为的大得多。&lt;/p&gt;
&lt;h2 id="内在和外在因素的平衡"&gt;内在和外在因素的平衡&lt;/h2&gt;
&lt;p&gt;但这不意味着一切都是环境决定的。&lt;/p&gt;
&lt;p&gt;Tal讨论了内在因素和外在因素的关系。外部环境确实对幸福有很大的影响——但同样的环境，不同的人会有不同的反应。&lt;/p&gt;
&lt;p&gt;有些人被困境压垮，有些人从困境中成长。&lt;/p&gt;
&lt;p&gt;关键在于解释风格。&lt;/p&gt;
&lt;p&gt;乐观主义者把坏事解释为暂时的、局部的、有原因的。悲观主义者把坏事解释为永久的、普遍的、无能为力的。&lt;/p&gt;
&lt;p&gt;这个解释方式不是固定的。它可以被改变。&lt;/p&gt;
&lt;p&gt;这就是&amp;quot;心理免疫系统&amp;quot;的另一面——我们不只是被动地接受环境的影响，我们也在主动地构建自己对环境的解读。&lt;/p&gt;
&lt;h2 id="约束和自由"&gt;约束和自由&lt;/h2&gt;
&lt;p&gt;这周还讨论了一个更根本的问题：人类本性是被约束的还是自由的？&lt;/p&gt;
&lt;p&gt;约束派认为人性有局限，有缺陷，要接受它、引导它。培根说：&amp;ldquo;号令自然必须遵守自然。&amp;quot;——如果你想控制自然，你必须先服从自然的规律。&lt;/p&gt;
&lt;p&gt;另一派认为人性是可以完善的，是可以被改变的。Constant说：&amp;ldquo;命运召唤我们进行自我完善。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Tal没有给出一个简单的答案。他指出，两种观点都有道理。接受约束不是放弃，而是理解边界之后的选择。追求完善也不是盲目的乐观，而是基于对可能性的认知。&lt;/p&gt;
&lt;p&gt;这让我想到一个问题：我对自己的人性是持什么样的看法？&lt;/p&gt;
&lt;p&gt;我倾向于觉得自己&amp;quot;就是这样&amp;quot;了——性格定型，习惯定型，很难改变。这种信念本身就在限制我的可能性。&lt;/p&gt;
&lt;p&gt;但如果我相信改变是可能的，我的行为就会不同。我会更愿意尝试新的东西，更愿意承担风险，更愿意相信自己能变得更好。&lt;/p&gt;
&lt;p&gt;信念创造了现实。不仅是外部的现实，也是内部的现实。&lt;/p&gt;
&lt;h1 id="后记"&gt;后记&lt;/h1&gt;
&lt;p&gt;&amp;ldquo;我能改变什么？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;第一，行动网络。我不是孤立的，我的每一个行动都会通过网络传导，影响比我想象的更远的人。所以选择行动很重要——不是因为立刻能看到结果，而是因为结果会来。&lt;/p&gt;
&lt;p&gt;第二，信念。信念不是固定的。它可以被审视、被挑战、被改变。如果我相信&amp;quot;我就是这样&amp;rdquo;，这种信念本身就会让我保持不变。如果我相信&amp;quot;我可以改变&amp;quot;，改变才真的可能发生。&lt;/p&gt;
&lt;p&gt;第三，环境。环境在塑造我，我在选择环境。选择和什么样的人在一起，选择在什么样的地方生活，选择接触什么样的信息——这些选择都在塑造我。&lt;/p&gt;
&lt;p&gt;环境不是命运，但环境不是无关紧要的。选择环境也是选择自己。&lt;/p&gt;</description></item><item><title>象牙塔里的光</title><link>https://touchingfish.top/psychology1504/week1-reflection/</link><pubDate>Wed, 26 Feb 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/psychology1504/week1-reflection/</guid><description>&lt;p&gt;从小相信，知识能改变命运。&lt;/p&gt;
&lt;p&gt;这话听起来像教科书，考试好了就能上好学校，上好学校就能有好工作，好工作就能让生活变好——这条链条在我脑子里根深蒂固。&lt;/p&gt;
&lt;p&gt;所以当我看到Tal在课堂上说&amp;quot;The objective of positive psychology is to unite the rigor of academic research with the accessibility of the self-help movement&amp;quot;的时候，我感到一种奇怪的共鸣。&lt;/p&gt;
&lt;p&gt;象牙塔和主街，桥。&lt;/p&gt;
&lt;h2 id="什么是积极心理学"&gt;什么是积极心理学&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;构建象牙塔和大众的桥梁&lt;/strong&gt;——这是积极心理学的宗旨。&lt;/p&gt;
&lt;p&gt;它想要做的是：把严谨的学术研究和通俗易懂的自助运动结合起来。不是学术论文束之高阁，不是鸡汤文空洞无物，而是既有科学的扎实，又有落地的可能。&lt;/p&gt;
&lt;p&gt;这听起来简单，但做起来是两种极端的拉扯。&lt;/p&gt;
&lt;p&gt;学术研究者倾向于把东西写得晦涩，仿佛不晦涩就不够&amp;quot;学术&amp;quot;。而自助运动呢？容易滑向另一个极端——听起来很美，但没有证据支撑，听完不知道怎么做。&lt;/p&gt;
&lt;p&gt;积极心理学想要同时占据两端。Tal举的&lt;strong&gt;Marva Collins&lt;/strong&gt;的例子让我印象深刻——一个在芝加哥南部教书的老师，用一套看起来很简单的方法：关注学生的优点，培养能力，而不是纠正缺点。结果呢？她的学生从街头混混变成了好学生，有些还考进了名校。&lt;/p&gt;
&lt;p&gt;这故事听起来像鸡汤。但它是真实的。Tal说她的方法成功在于对&amp;quot;seeds of greatness&amp;quot;的关注——关注潜能，而非缺陷。&lt;/p&gt;
&lt;h2 id="211的启示"&gt;21:1的启示&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1967到2000年，心理学研究中负面与正面的比例是21:1。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个数字让我震惊。不是5:1，不是10:1，是21比1。&lt;/p&gt;
&lt;p&gt;心理学研究抑郁、焦虑、愤怒、疾病，研究为什么人会失败、会崩溃、会堕落。对积极品质——快乐、满足、幸福——的研究，少得可怜。&lt;/p&gt;
&lt;p&gt;Maslow说得好：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;心理学自愿固步自封，让自己仅限于研究黑暗低劣的一半。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这话扎心。但更扎心的是后面那句——他不是说心理学错了，而是说心理学把自己限制住了，只研究了一半的领地。&lt;/p&gt;
&lt;p&gt;我们这代人的处境只会比1960年代更糟。Tal说现在抑郁症的发病率是1960年的10倍，发病年龄从29.5岁降到了14.5岁。&lt;/p&gt;
&lt;p&gt;14岁。初中毕业的年纪。&lt;/p&gt;
&lt;p&gt;在Harvard，80%的学生去年至少抑郁过一次。 nationwide，45%的大学新生抑郁，94%感到被事情淹没。&lt;/p&gt;
&lt;p&gt;没人教我怎么追求幸福。只教我怎么不抑郁。&lt;/p&gt;
&lt;h2 id="幸福是随机的吗"&gt;幸福是随机的吗？&lt;/h2&gt;
&lt;p&gt;努力会有回报。这个信念很朴素：只要努力了，事情就会往好的方向发展。&lt;/p&gt;
&lt;p&gt;但Lykken和Tellegen的明尼苏达双胞胎研究发现，基因对幸福的影响很大，生活经历的影响很小。他们的结论是：幸福是一个stochastic phenomenon——随机现象。&lt;/p&gt;
&lt;p&gt;这个结论让很多人不舒服。包括我。&lt;/p&gt;
&lt;p&gt;如果幸福是随机的，那努力有什么用？&lt;/p&gt;
&lt;p&gt;但Tal提出了反驳。他说：改变是可能的。这个研究有它的局限性——它研究的是平均值，而平均值会掩盖可能性。&lt;/p&gt;
&lt;p&gt;什么是&amp;quot;平均值&amp;quot;的问题？&lt;/p&gt;
&lt;p&gt;Tal举了一个例子。假设你有一组跑步者，你想研究人类能跑多快。如果你只看普通人的平均值，你得到的数据可能是一个普通人能跑多快。但如果你研究的是最好的运动员——那些在成长尖端的人——你得到的结论会完全不同。&lt;/p&gt;
&lt;p&gt;这就是Maslow说的&amp;quot;成长尖端统计学&amp;quot;。&lt;/p&gt;
&lt;p&gt;研究平均值，你得到的是&amp;quot;人通常怎么样&amp;quot;。研究最好的人，你得到的是&amp;quot;人可能怎么样&amp;quot;。这两个问题的答案完全不同。&lt;/p&gt;
&lt;h2 id="心理的免疫系统"&gt;心理的免疫系统&lt;/h2&gt;
&lt;p&gt;让我真正改变看法的是&amp;quot;心理免疫系统&amp;quot;这个概念。&lt;/p&gt;
&lt;p&gt;Tal引用了Dan Gilbert的&amp;quot;Stumbling on Happiness&amp;quot;。这本书的核心发现是：人类有一种天生的能力，能够&amp;quot;人工合成&amp;quot;幸福感。&lt;/p&gt;
&lt;p&gt;想象一下你中了彩票。一大笔钱突然砸到你头上。理论上你应该非常快乐。&lt;/p&gt;
&lt;p&gt;但研究表明，中彩票的人在事情过去一年之后，快乐程度和普通人没什么区别。&lt;/p&gt;
&lt;p&gt;反过来想。如果你遭遇了一场意外，导致下半身瘫痪。你的人生被彻底改变。但研究表明，瘫痪的人在事情过去一年之后，快乐程度也和普通人没什么区别。&lt;/p&gt;
&lt;p&gt;这不是说中彩票和瘫痪是一样的。但它们都指向一个事实：人类有一种心理免疫系统，能够适应重大的生活事件。不管是好的还是坏的，这个系统都会工作，帮助我们重新找到心理平衡。&lt;/p&gt;
&lt;p&gt;我们的大脑不只是被动地接受现实，而是主动地构建对现实的解读。我们在头脑中&amp;quot;制造&amp;quot;幸福感，就像身体会制造抗体一样。&lt;/p&gt;
&lt;p&gt;既然有心理免疫系统，那就有办法增强它。冥想、感恩、乐观的思维方式——这些可能不只是在&amp;quot;感觉好一点&amp;quot;，它们真的在改变大脑的工作方式。&lt;/p&gt;
&lt;h2 id="信息和转变"&gt;信息和转变&lt;/h2&gt;
&lt;p&gt;Tal提到一个观点让我想了很久。&lt;/p&gt;</description></item><item><title>科研品味是什么（Research Taste）</title><link>https://touchingfish.top/2020/cultivate-an-appreciation-for-research/</link><pubDate>Tue, 25 Feb 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2020/cultivate-an-appreciation-for-research/</guid><description>&lt;p&gt;&lt;em&gt;——写于2020年初家里蹲期间，翻译水平不行，后已多次自我批评并作出更正。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;20 考研的初试成绩出来了，想跟未来的研究生们聊点什么。&lt;/p&gt;
&lt;p&gt;早知道学术里有灌水的现象，真正的体会还是自己读研的时候。每天都是“正在制造学术垃圾”的心态，于是本科的恩师开导我：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“你是研究生了，要养成对学术水准的品味能力”。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我们母校比较普通，对大部分同学来讲，就是应付考试顺利拿到学位证书。没想到自己竟然遇到了一个哈佛博士毕业的退休教授，他教会了我“科学家在做什么”。所幸懂一点研究的皮毛，会看论文，却从来没想过品味的问题。&lt;/p&gt;
&lt;p&gt;给大家推荐一篇今年 1 月 14 日发表于《ACS（American Chemical Society）Nano》的论文——《Will Any Crap We Put into Graphene Increase Its Electrocatalytic Effect?》。&lt;/p&gt;
&lt;p&gt;不知道朋友们的英文阅读水平怎样，想吃这个瓜还是先把题目看懂。&amp;ldquo;Crap&amp;quot;翻译为&amp;quot;废物；屎（粪便）&amp;quot;，我也挺喜欢 DeepTech 报道里的表达方式——&amp;ldquo;啥玩意儿&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;我们可以把题目直译为&amp;quot;是否我们在石墨烯中掺杂任何废物都能够增加它的电催化作用呢&amp;rdquo;，或者&amp;quot;是不是往石墨烯里随便加点啥玩意儿都能提高其电催化活性&amp;quot;。&lt;/p&gt;
&lt;p&gt;本人只是个接触了一点海洋生物学的本科生，可能读材料的同学会比较了解吧。&lt;/p&gt;
&lt;p&gt;肤浅地了解到《ACS Nano》影响因子 12+，中科院一区，有人会把它当作《Nature Communication》的备胎，拿被 NC 拒稿的文章来转投。再看一下第一单位——多伦多大学（University of Toronto），加拿大排名第一的学校。&lt;/p&gt;
&lt;p&gt;看来不是胡闹。&lt;/p&gt;
&lt;p&gt;拜读第一自然段，这绝对是我看过最骚气的 Introduction。&lt;/p&gt;
&lt;p&gt;科技论文的标准写法，上来先交代这个领域的研究背景，从别人的研究写到自己的研究，从相似写到创新，最后上升到研究意义社会影响完美结尾。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The doping of graphene with a plethora of elements has been reported as enhancing its electrocatalytic performance.&lt;/p&gt;
&lt;p&gt;It has become almost a paradigm that the once fantastic graphene for electrocatalysis is not so fantastic anymore and that we need to add something to it (i.e., a dopant) to make it great again.&lt;/p&gt;</description></item><item><title>新春还是新冠之春</title><link>https://touchingfish.top/2020/lockdown-diary/</link><pubDate>Thu, 20 Feb 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2020/lockdown-diary/</guid><description>&lt;p&gt;新冠疫情发生后的家里蹲日记。关于与自己、与家人相处。&lt;/p&gt;
&lt;p&gt;总是有种对爸妈拌嘴的恐惧。也许这些年的生活对我的阴影还是蛮大的。不过感谢上帝，最近家里还算和平。偶尔要听妈妈唠叨几句。&lt;/p&gt;
&lt;p&gt;晚上在看血糖仪的说明书。发现妈妈在阅读上有些障碍。或许是现在太多新词汇的出现，影响了她的理解——难怪我们要做那么多「名词解释」的考试。给妈妈的手机装了一些 app。观察几日，想她能对信息传播方式有现代化的认识。既能从报纸收音机到电视电影，也应该能从电视新闻到手机热搜。&lt;/p&gt;
&lt;p&gt;发现没有，自己时常忘了不好的事情。不记仇？妈妈给我上了重要的一课：我的话语权在自己手里，即使这是当了20年&amp;quot;小弟&amp;quot;的「因果」。还有，不要求别人当&amp;quot;完人&amp;quot;。&lt;/p&gt;
&lt;p&gt;最近，妈妈正式从小学教师下岗。她一直以代课教师的身份工作，早到了退休年龄。原先给她提供职位的校长也去别的学校上任了。回家休息养老，是早晚的事。&lt;/p&gt;
&lt;p&gt;我爱观察，尤其是观察人。观察到妈妈对「退休」的反应，还有亲朋们一个接一个的慰问电话，让我明白这对她来说并不是件小事。&lt;/p&gt;
&lt;p&gt;失去了正式工作，可能有失去生活经济来源的焦虑，有对生命衰老和功能下降的恐惧。肯定也有对这个整天只是坐在家里，连生命的意义都找不到的儿子的担忧。&lt;/p&gt;
&lt;p&gt;直到那天出门散步，她那一句&amp;quot;我们要相互支持&amp;quot;的话——才真正地冲击到我的心灵。&lt;/p&gt;
&lt;p&gt;家人身体状况很差。倍感啃老骂名和经济压力之大。&lt;/p&gt;
&lt;p&gt;投了两份简历。没有回音。&lt;/p&gt;
&lt;p&gt;我想做点事情，证明自己能够做到饿不死。&lt;/p&gt;
&lt;p&gt;时常读书学习，确实能帮我克服焦虑。包括这几天对求职意向和职位要求的思考越来越明确。&lt;/p&gt;
&lt;p&gt;我不过是想，不需要把工作&amp;quot;带在身上&amp;quot;。如果工作地点距离有点远，则希望交通便利。不知道算不算过分，但我是廉价劳动力啊。一些我更倾心的岗位，以我的履历并不会被考虑。&lt;/p&gt;
&lt;p&gt;常常对自己的定位不是很明确——乐观一点来看。对现在的我来说，做一份中专大专也能胜任的技术员工作也许蛮好的。周末的话，如果稍微搁置学习计划，可以做做兼职。同时拥有几个身份是一件有意思的事情。多做点不同的工作也是。&lt;/p&gt;
&lt;p&gt;某个失眠的夜晚，回想了当时美丽中国的面试。可能是自己无意识的吹牛露怯。因为认识的肤浅、能力的缺陷，让说出来的话显得夸夸其谈。&lt;/p&gt;
&lt;p&gt;当时，我以为对从事行业的幻想是一种职业规划。直到后来，在惠安的宿舍里，重新地打量自己的未来，才明白——假装自己有&amp;quot;明确的职业规划&amp;quot;，是一个笨拙且粗糙的谎言。&lt;/p&gt;
&lt;p&gt;职业是工作、事业还是使命（天职）？这才是我该面对的真正问题。也许我的情况该选择工作或者事业，带给我经济基础。即使天职才是我梦寐以求的，却又需要经济基础来支持。&lt;/p&gt;
&lt;p&gt;收到了一个像样的面试机会。公司业务和岗位职能暂且符合我的预期。按照以前的态度，定是会认真准备，提前预习好了上岗所需的基础知识，并把简历润色打造为意向明确、满足需求的特色版。&lt;/p&gt;
&lt;p&gt;前一天拿出久违的旧简历，却并没有热情重新去打印新版。改动不大，无伤大雅。色谱的基础我也都学习过。实际上这项职能的门槛并不高，培训之后上岗是能够胜任的。&lt;/p&gt;
&lt;p&gt;而且做足准备却事与愿违的感觉，会让失望放大。我并不是非这份工作不可。带给我快乐的是做真实的自己。&lt;/p&gt;
&lt;p&gt;所以，我选择去了解值得关心的：加班和双休，行规和文化。没有明确说明双休的工作，其实并不在我第一考虑的范围内。看了一些值得怀疑的评价，于是思考出一些敏感的问题：&lt;/p&gt;
&lt;p&gt;加班的工资？离职的原因？有没有潜规则？&lt;/p&gt;
&lt;p&gt;适当地打退堂鼓。&lt;/p&gt;
&lt;p&gt;这个机会给了我对真实需求的思考，以及一个睡眠规律暂且合理的夜晚。第二天，因为招聘软件定位的诡异，差点走错了方向。到达面试地点的楼下后，对这座小城的失望又多了一点，索性用短信回绝了邀请。&lt;/p&gt;
&lt;p&gt;我只是一个想要认真生活的普通人。普通到觉得每个月有点固定收入也改变不了现状，普通到就算时间倒转十年一百次也可能没办法成功地实现自己的理想。&lt;/p&gt;</description></item><item><title>全国都在放寒假</title><link>https://touchingfish.top/2020/binge-lockdown/</link><pubDate>Fri, 07 Feb 2020 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2020/binge-lockdown/</guid><description>&lt;p&gt;晚上看了《死亡诗社》。&lt;/p&gt;
&lt;p&gt;尼尔的死打动了我。心情悲伤又复杂，甚至忘了去思考背后的原因。&lt;/p&gt;
&lt;p&gt;基廷老师的教育真的有问题吗？&lt;/p&gt;
&lt;p&gt;看着老师在尼尔被佩里先生带走时的无奈，让我想起恩师。最后一个学期，总能觉察到他的失望和失落——那种未能给我们更多学习和实验的机会的无奈和愧疚，让我觉得他是真心为学生好的老师。&lt;/p&gt;
&lt;p&gt;现在突然明白，在我向他倾诉和最终选择退学的时候，为什么他会选择用对我&amp;quot;放心&amp;quot;来回复。&lt;/p&gt;
&lt;p&gt;从他身上学到了治学的谦逊和热情。&lt;/p&gt;
&lt;p&gt;现实主义和悲观主义（犬儒主义）画上等号？可能是东亚社会某种根深蒂固的价值观荼毒的结果。&lt;/p&gt;
&lt;p&gt;难以想象自己几小时前还在挣扎&amp;quot;何必跟钱过不去&amp;quot;的问题。希望这和保持自我、把握当下不要有什么违背。&lt;/p&gt;
&lt;p&gt;我愿走出去结交更多&amp;quot;社团&amp;quot;成员。&lt;/p&gt;
&lt;p&gt;前两天沉迷于《绝代双骄》。&lt;/p&gt;
&lt;p&gt;一是因为在电视上看过一点，二是觉得尼尔的演员跟胡一天有几分相似。我所了解的古龙，总是那不堪的一面。即使自认为算是武侠爱好者，也无意去翻看他的作品。&lt;/p&gt;
&lt;p&gt;这一版号称还原度极高的电视剧，竟然让我想要把原著好好看看。&lt;/p&gt;
&lt;p&gt;没想到自己会对铁心兰的三角恋蛮有兴趣。&lt;/p&gt;
&lt;p&gt;于是从《非正式会谈》聊过的「原著党」问题开始一通胡思乱想。&lt;/p&gt;
&lt;p&gt;坚持读书已有月余，但还是谈不上爱阅读。文学作品影视化越来越多，一直佩服能把原著反复阅读的人。想要当回原著党，可时间从何而来？&lt;/p&gt;
&lt;p&gt;原来人们度过青春的方式如此不同。&lt;/p&gt;
&lt;p&gt;我若决定追求知识，又怎能让「一时兴起」来占用我的时间。而这些爱好不也是我快乐的本源吗？今日的思考倒有一个暂时的答案：爱好应该是终生的，虽然学习也是，但机会却是当下的。&lt;/p&gt;
&lt;p&gt;看完了《绝代双骄》。&lt;/p&gt;
&lt;p&gt;收获了一首好歌——&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;做不成顶天立地大英雄，只要打不过就，躺下不动。你不懂玩世不恭的苦衷，侠义藏心中。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;想过得像小鱼儿一样精彩洒脱。&lt;/p&gt;
&lt;p&gt;心里的包袱却像花无缺一样沉重。&lt;/p&gt;</description></item><item><title>毕业了吗（FAREWELL）</title><link>https://touchingfish.top/2019/farewell/</link><pubDate>Sat, 28 Dec 2019 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2019/farewell/</guid><description>&lt;p&gt;记刚刚过去的2019年。&lt;/p&gt;
&lt;p&gt;一直记得程老师帮我改完论文后的邮件落款：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;祝&lt;/p&gt;
&lt;p&gt;考上&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="坚持就能考上"&gt;坚持就能考上&lt;/h3&gt;
&lt;p&gt;寒假异常的煎熬。对未来的迷茫和焦虑，像一层透明的膜裹住呼吸——撕不掉。大概是扛过一次抑郁症的缘故，心理的免疫系统强化了不少，不至于彻底丧失学习和生活的热情。&lt;/p&gt;
&lt;p&gt;日子过得随意自在。每天除了思考人生，就是抽空写写毕业论文。给自己定的目标，是在寒假把初稿发给导师。有时候才思泉涌，忙到一两点也不觉得累。也在失眠。对考研成绩还抱有一点期望——就那么一点。成绩出来前几天最难熬，于是通宵打游戏，假装这样就能骗过大脑。偶尔也搞&amp;quot;忏悔学习法&amp;quot;，刷学习区的视频来助眠。&lt;/p&gt;
&lt;p&gt;今年开发的最强技能大概就是写论文了。记得在朋友圈打卡毕业论文进度的时候，有一种微妙的&amp;quot;优越感&amp;quot;，一心想表现自己进度快，效率高。同学们在准备过年的时候，我的论文已经开始动笔，每天两三千字。现在回想起来，初稿简直——行文繁冗词不达意，逻辑含混不经推敲。却自以为是厚积薄发，学习能力和积累的知识在这一刻得到了施展。内容还算充实，完成度也比去年学长学姐稍高一些。老师话，应付答辩绰绰有余。&lt;/p&gt;
&lt;p&gt;我还是有自知之明的。发给程老师前，对初稿反复修改。每天看一遍自己写的文字，都能找出新的尴尬。重新以读者角度看论文，大到语言逻辑，小到错字病句，全部暴露出来。阅读，修改，阅读，修改……比查文献写初稿更费心。不禁感慨：能写出不需要太多回顾和修改的文学作品，作者功底得有多深。先让自己满意，再争取别人满意。如期把修改后的稿子发给了程老师。&lt;/p&gt;
&lt;p&gt;写论文期间，考研成绩公布了。睡到中午才起，查查成绩，给自己一个交代。怀着那点期望，所以没认真考虑毕业后的工作和生活。有时也做好失利的准备——上网看招聘信息，了解本地行业，徒增焦虑。这是我失眠的原因。分数比估分高了一点。学长说&amp;quot;坚持就能考上&amp;quot;，原来是真的。生化意料之中地挂了考完就知道。&lt;/p&gt;
&lt;p&gt;松了口气，今晚或许能睡着。迷茫，却抱有幻想。想以科研为业，又希望多些校园时间来寻找答案。下午轻松回复朋友的关心。家人不知道今天出成绩。他们本来就不关心这些，连我考试都不知道，更别说查成绩了。只看到我今天好像挺开心。这是我的郁结。理解两位老人文化水平不高，接收的消息闭塞落后。上周末还在&amp;quot;重新做人&amp;quot;，想通过完成一件事证明自己。于是盯上下学期的英语考试——本科最后一场四六级。 六级没过，总归有点遗憾。夜深人静时胡思乱想，打开背单词软件，但刷了半小时朋友圈。&lt;/p&gt;
&lt;p&gt;回想起考研的两个初衷，一是追逐越来越优秀的老朋友们，二是希望换个环境，远离不靠谱的人群。&lt;/p&gt;
&lt;h3 id="家门口的大学"&gt;家门口的大学&lt;/h3&gt;
&lt;p&gt;毕业后直接到家门口的大学报到上班。和复试时认识的两位同学再次相见，大概真的有缘分成为朋友。同门都是极好的人，我们常常在食堂一起吃饭，聊各自的课题，聊未来的打算。可惜我是个内向又慢热的人。他们在一起有说有笑的时候，我常常只是听着。等我想好说什么的时候，话题已经换了三轮。不是不想融入，是不知道怎么自然地加入一段对话。&lt;/p&gt;
&lt;p&gt;导师则是另一个故事。组会上的否定，不是针对学术观点的讨论，是一种居高临下的审视。我渐渐发现，自己不是在做研究，是在揣摩。台风天还是要来实验室打卡，开会到凌晨，加班到深夜。有一次我经过师姐的工位，看她趴在桌面上肩膀微微耸动，走近才听见压抑的啜泣声。我不知道能说什么，在大家回去午休的时候买了一包糖放在她的抽屉里。后来听说，有位刚刚出站的博士后回了马来西亚，不能回来继续工作。师兄师姐私下议论，语气平淡得像在说天气——他是故意的。大概这地方，确实让人看不到什么希望。一位原本计划明年来读博的师姐，提前过来当科研助理，想先熟悉环境。结果一个星期没到就跑路了。&lt;/p&gt;
&lt;p&gt;离开前的那段时间，我一直在跟同门聊。大家知道我想走，没有太多追问，只是鼓励我出国留学，说趁年轻出去看看。我的离开也让他们总算可以理直气壮一回——有人真的退学了。快开学的时候，我交了一篇论文草稿——今年开发的最强技能，到底还是派上了用场。收拾了工位上的东西，和大家吃了顿饭。没有太多解释。他们大概也理解，有些事情不需要说得太清楚。&lt;/p&gt;
&lt;p&gt;回家十公里的车程，刚好下了一场大雨。后来才知道，退学的那段时间，妈妈去医院检查出了小三阳和糖尿病。家门口的大学，本来可以离家近一点。这件事让我内疚了很久。&lt;/p&gt;
&lt;h3 id="毕业了吗"&gt;毕业了吗&lt;/h3&gt;
&lt;p&gt;离开后，回到了本科母校。处理被退回学籍室的档案，原以为已经画上句号的本科四年突然又被翻出来，重新走了一遍毕业生流程。暂时住在XCG老师分配的宿舍里——一间朝北的小房间，窗外正好对着操场，晚上偶尔有学生跑步的脚步声。白天我在宿舍里投简历，查雅思备考攻略，偶尔和以前的老师一起吃饭。正好是一年一度的校运会，一时不知道自己是毕业了吗。这问题听起来矫情，但真的答不上来。XCG老师介绍了他的研究生同学给我认识，一位转行做房地产销售的师叔。偶尔也会来宿舍小住几晚，我们相处得不错。有一次我去厦门面试，他带我在厦大逛了逛。&lt;/p&gt;
&lt;p&gt;终于找到一份过渡性的工作。那天晚上，我正在公司宿舍里吃外卖，家里微信群里弹出一张爸爸在急诊室口吐白沫的照片。心梗倒在路边，被路过的交警送到了医院。&lt;/p&gt;
&lt;p&gt;算是非常幸运了。&lt;/p&gt;
&lt;p&gt;到医院的时候人已经昏迷，很快就推进了重症监护室。住了数日，各项检查结果陆续出来，医生说要手术。肾脏指标不太理想，医生提了一句，做造影和搭桥，以后要透析。&lt;/p&gt;
&lt;p&gt;办离职的日子是平安夜，买了回家的车票。最后一次去XCG老师宿舍带走之前留在那里的一些行李，并给他发信息留言。XCG老师知道后，竟然从办公室赶来车站，把学生送给他的苹果递给我，让我带给爸爸。我坦白和父亲关系不好。其实很尴尬。父子之间有些话很难说出口，平时各忙各的，逢年过节坐在一起吃饭也是各看各的手机。那天在车站接过苹果，不知道该说什么好。做好了最坏的打算——如果他走了，以后跟妈妈相依为命。XCG老师表示理解。沉默了一会儿，他又说，你都这么大了，有些事急不来。我点点头，不知道他是在安慰我，还是在安慰他自己。&lt;/p&gt;
&lt;p&gt;上车后我哭了。不是为爸爸，也不是为自己。是一种不知道这半年在做什么的心情。退学、找工作、家人的身体健康——所有事情挤在一起，像一锅煮沸的粥，咕嘟咕嘟冒着泡，却看不出到底是什么。列车开出去很远，车窗外的风景一路往后退，我靠在座位上，眼睛肿着，心里空荡荡的，却奇妙地平静了下来。&lt;/p&gt;
&lt;p&gt;我毕业了吗？好像毕了。又好像没有。考上研究生，又退学。论文写了，又只交了草稿。一年下来，演了很多角色，没一个演到最后。日子平静了些。只是偶尔在深夜，想起那扇实验室的天花板，想起那些本可以成为好朋友的同门。&lt;/p&gt;
&lt;p&gt;毕业了吗？大概吧。&lt;/p&gt;</description></item><item><title>海水与淡水环境下日本鳗鲡多组织差异表达基因分析</title><link>https://touchingfish.top/2019/anguilla-japonica-deg-analysis/</link><pubDate>Thu, 15 Aug 2019 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2019/anguilla-japonica-deg-analysis/</guid><description>&lt;h2 id="摘要"&gt;摘要&lt;/h2&gt;
&lt;p&gt;本研究对海水（SEA）与淡水（TAP）环境下鳗鲡的三个关键组织（脑部、性腺、胸鳍）进行了差异表达基因（DEG）分析，旨在揭示鳗鲡在盐度适应过程中的转录组响应机制。&lt;/p&gt;
&lt;p&gt;主要发现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;全局分析（控制组织效应）鉴定出 422 个 DEG（303 上调，119 下调）&lt;/li&gt;
&lt;li&gt;脑部对盐度变化最为敏感，共鉴定出 500 个 DEG&lt;/li&gt;
&lt;li&gt;三组织共同显著（交集）的核心响应基因共 8 个，全部在海水环境中上调表达&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;主要结论：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;日本鳗鲡对盐度变化具有组织特异性的转录组响应，其中脑部响应最强，胸鳍最保守。&lt;/li&gt;
&lt;li&gt;海水环境激活了更多基因（全局分析：72% 上调），表明海水盐度环境促进了特定的基因表达程序。&lt;/li&gt;
&lt;li&gt;不同组织的响应模式差异反映了组织特异性功能对环境盐度的差异化适应策略。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="一材料与方法"&gt;一、材料与方法&lt;/h2&gt;
&lt;h3 id="11-样本信息"&gt;1.1 样本信息&lt;/h3&gt;
&lt;p&gt;实验选用的是2017年5月31日在泉州地区购买的非野生养殖鳗。购买时，挑选体重300g - 1000g，体型较鼓，胸鳍圆钝、颜色深，背黑腹银的鳗鲡。此为下海前雌性银鳗的典型特征，形态学上雌雄鉴别的准确率约为90%&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;p&gt;从5条非野生鳗中随机挑选3条进行盐度驯化，与淡水养殖的鳗鲡形成对照。每日定时添加6.6‰海水盐，到第五天，实验组鳗鲡所处环境达到30‰左右的盐浓度（海水盐度约为35‰），模拟日本鳗鲡洄游入海的盐度变化过程。&lt;/p&gt;
&lt;p&gt;取样时，将全部5条日本鳗鲡经冰水处理达到麻痹的效果，之后可进行形态指标的测量及解剖。每条日本鳗鲡各取脑部、性腺及胸鳍作为RNA测序样本，为避免RNA水解，取下后立即投入液态氮中冷冻保护。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;样本&lt;/th&gt;
 &lt;th&gt;体长（mm）&lt;/th&gt;
 &lt;th&gt;体重（g）&lt;/th&gt;
 &lt;th&gt;水平眼径（mm）&lt;/th&gt;
 &lt;th&gt;垂直眼径（mm）&lt;/th&gt;
 &lt;th&gt;眼间距（mm）&lt;/th&gt;
 &lt;th&gt;吻长（mm）&lt;/th&gt;
 &lt;th&gt;胸鳍长（mm）&lt;/th&gt;
 &lt;th&gt;胸鳍宽（mm）&lt;/th&gt;
 &lt;th&gt;肛门到腹鳍起始端（mm）&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;SEA_1&lt;/td&gt;
 &lt;td&gt;695&lt;/td&gt;
 &lt;td&gt;553&lt;/td&gt;
 &lt;td&gt;12&lt;/td&gt;
 &lt;td&gt;11&lt;/td&gt;
 &lt;td&gt;15&lt;/td&gt;
 &lt;td&gt;12&lt;/td&gt;
 &lt;td&gt;35&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;5&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;SEA_2&lt;/td&gt;
 &lt;td&gt;650&lt;/td&gt;
 &lt;td&gt;570&lt;/td&gt;
 &lt;td&gt;10&lt;/td&gt;
 &lt;td&gt;9&lt;/td&gt;
 &lt;td&gt;13&lt;/td&gt;
 &lt;td&gt;13&lt;/td&gt;
 &lt;td&gt;30&lt;/td&gt;
 &lt;td&gt;20&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;SEA_3&lt;/td&gt;
 &lt;td&gt;680&lt;/td&gt;
 &lt;td&gt;600&lt;/td&gt;
 &lt;td&gt;11&lt;/td&gt;
 &lt;td&gt;11&lt;/td&gt;
 &lt;td&gt;13&lt;/td&gt;
 &lt;td&gt;13&lt;/td&gt;
 &lt;td&gt;30&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;TAP_1&lt;/td&gt;
 &lt;td&gt;675&lt;/td&gt;
 &lt;td&gt;610&lt;/td&gt;
 &lt;td&gt;/&lt;/td&gt;
 &lt;td&gt;/&lt;/td&gt;
 &lt;td&gt;/&lt;/td&gt;
 &lt;td&gt;/&lt;/td&gt;
 &lt;td&gt;30&lt;/td&gt;
 &lt;td&gt;20&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;TAP_2&lt;/td&gt;
 &lt;td&gt;715&lt;/td&gt;
 &lt;td&gt;650&lt;/td&gt;
 &lt;td&gt;9&lt;/td&gt;
 &lt;td&gt;10&lt;/td&gt;
 &lt;td&gt;15&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;27&lt;/td&gt;
 &lt;td&gt;18&lt;/td&gt;
 &lt;td&gt;5&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;注：&lt;/p&gt;</description></item><item><title>创业游戏二三事 / Meanwhile</title><link>https://touchingfish.top/2019/entrepreneurship-game/</link><pubDate>Fri, 28 Jun 2019 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2019/entrepreneurship-game/</guid><description>&lt;p&gt;不幸有一段没有任何成果拿得出手的经历。&lt;/p&gt;
&lt;p&gt;我们是一支跨学院的创业团队。成功人士毕业后直接去给创业公司当CTO了。同为唯二负责技术的成员，我纯抱大腿——希望你能理解是自谦，不是谦虚。帮忙申请专利，&amp;ldquo;研读&amp;quot;过《专利法》，也接触到那些年比较有意思的技术。&lt;/p&gt;
&lt;p&gt;我张罗过一场面向学生的3D打印科普路演和工作坊。&lt;/p&gt;
&lt;p&gt;提前一小时到场调试投影仪，把几台FDM打印机（学生团队预算有限）通电预热，桌上摆好已经打印好的齿轮机构、小摆件、手机支架，学生一进门就围过来看。气氛很快起来了。&lt;/p&gt;
&lt;p&gt;现场拆开一台打印机给大家看结构，解释XYZ三轴运动、步进电机、热端、喷嘴、挤出机、热床分别负责什么。讲得头头是道，其实自己心里慌得很——那台机器前两天刚罢工过，我也不知道能不能顺利跑完这趟。讲到切片软件时，把模型导入软件，让大家直观看层高、填充率、打印速度、支撑生成这些参数如何影响结果。层高越低，表面越细，时间越长；填充率越高，强度提升，材料和时间的成本也跟上去。学生对这些特别感兴趣——他们很快意识到，这和做工程方案时的取舍逻辑一模一样。&lt;/p&gt;
&lt;p&gt;工作坊环节最热闹。大家一起设计简单作品。有人做手机壳，有人做钥匙扣，有人做社团logo。打印机出问题的时候——必然会出问题——我就顺势讲原理，假装一切尽在掌握：首层粘不住是平台没调平，喷嘴与平台间距像&amp;quot;一张纸的厚度&amp;quot;最合适；出现翘边是边角受力和冷却收缩的关系，热床温度可以调高一些；打印出来全是细丝是回抽参数和喷嘴温度过高造成的拉丝现象。卡扣太紧装不上，就说明公差、配合间隙和材料收缩率。很多抽象概念，靠一台机器出错一次，比讲十分钟更容易理解。&lt;/p&gt;
&lt;p&gt;大家一边吹牛，一边看着喷头一层层走线。有团队说实验室正缺摄像头夹具，我就让他们现场建模试试。&lt;/p&gt;
&lt;p&gt;这行当，说到底就是拿着项目招摇撞骗。不过撞骗之余，也顺手做了点实打实的事：打造校企合作的&amp;quot;创业孵化基地&amp;rdquo;，策划并实操项目路演和技术沙龙。倒是有几家千万注册资金的公司入驻，还被中新网报道过。&lt;/p&gt;
&lt;p&gt;师兄师姐毕业后，团队活动逐渐收缩。我转为兼职运作，在学校图书馆申请设立了一个小空间，运营名为&amp;quot;静心茶室&amp;quot;的项目。名义上还是为创业基地宣传，实际上是我&amp;quot;得闲饮茶&amp;quot;交朋友的地方。负责环境布置、校内调研、接待来访，也帮助管理公众号后台和问卷数据分析。&lt;/p&gt;
&lt;p&gt;最有趣的是偶尔遇上一两个脑洞清奇的人。他们不喝茶就是在思考宇宙。我们的对话，每一句都要让对方怀疑人生，有时顺着这些神奇的念头，推演、构想，像是真的要把它做出来。&lt;/p&gt;
&lt;p&gt;如果没有这个创业游戏，我毕业时也许只是一个懂一点「生命科学」杂交「海洋科学」的无聊的人。英语六级、计算机国二、考研，三重经典无趣大学生buff叠满。&lt;/p&gt;</description></item><item><title>结庐从道（In Pursuit of the Way）</title><link>https://touchingfish.top/2019/my-mentor-sd-tsen/</link><pubDate>Sun, 10 Mar 2019 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2019/my-mentor-sd-tsen/</guid><description>&lt;h3 id="前言"&gt;前言&lt;/h3&gt;
&lt;p&gt;谨以本文记即将过去的大学时光。&lt;/p&gt;
&lt;p&gt;自认为是个记性一般的人，不管是在学习上，还是生活上。我尽量回忆那些值得被记住、被记录的事情。&lt;/p&gt;
&lt;p&gt;以前总是不相信“好记性不如烂笔头”，不爱为了功课做笔记，也不爱在社交网络里记录自己的生活和情绪。幸好，偶然还是留下了一些“线索”，回忆起那位助我敲开学术之门的引路人。&lt;/p&gt;
&lt;p&gt;——2019年春&lt;/p&gt;
&lt;p&gt;在沈阳时，一位爱好金庸的友人说：“你跟你老师的故事，让我想到武侠小说里的师徒。”&lt;/p&gt;
&lt;p&gt;——2023年秋&lt;/p&gt;
&lt;h2 id="正文"&gt;正文&lt;/h2&gt;
&lt;p&gt;四年级上学期的寒假来得很早。因为学分已经修完了，仅剩的一门「食品毒理学」的课程，也在圣诞节后以开卷考的形式结束。&lt;/p&gt;
&lt;p&gt;我还是没有闲暇。刚刚结束考研笔试和期末，便回到了复习期间“恨之入骨”的图书馆。一是为了方便查阅和下载文献，另一方面，这里确实是个承载着我大多记忆的地方。&lt;/p&gt;
&lt;p&gt;我在争取尽快完成毕业论文的草稿。虽然学院对提交初稿的期限，其实是在次年的四五月，但我没那么多时间——这是程老师在学校的最后一个学期。&lt;/p&gt;
&lt;p&gt;第一次见到程老师，是在「生物化学」的课堂上。&lt;/p&gt;
&lt;p&gt;上课前就听亲近的学姐说，学院今年来了一位哈佛毕业的老师。很难想象，这个初印象如此普通的校园里，还能见到来自世界顶级学府的人物。&lt;/p&gt;
&lt;p&gt;这学期他只教两个班，我们班也中奖了。程老师看起来就是个慈祥的人，博学却依旧谦逊。他还总是强调自己是个“左派”，这点让人印象很深。&lt;/p&gt;
&lt;p&gt;当时，我并不能理解「生物化学」这门课里的大多内容，但我领悟到了一种学习方式——选择一部适合自己的教材。为了把“核酸”学个明白，我在图书馆翻遍了至少四本不同的教材。这个办法，在我后来自学「线性代数」时也大有裨益。一下理解了为何国外的课程总是推荐那么多本参考书籍。&lt;/p&gt;
&lt;p&gt;那是我刚刚开始认真思考，自己到底在学些什么。和程老师聊起时，我逐渐明白，我想知道的可能是“科学家是在做什么”。后来，我便跟随程老师学习——我觉得，他是这个问题的答案。&lt;/p&gt;
&lt;p&gt;有一次，参加老师主持的演讲。我赶在正式开始前与他闲聊，了解到他和校长的交情，是让他决定来我们学校工作的原因。三年为期，谁想得到第二年，我们亲爱的校长竟然“升迁”去了厦门。&lt;/p&gt;
&lt;p&gt;从此，程老师在学院里的工作也没那么得意了。先是从特聘教授的专家办公室搬到了公共办公室，更糟糕的是没有自己的实验室。这些年的小实验、组会都是在老师的专家办公室进行。那个房间后来摆放了一套会议用的桌椅，成为一个小会议室，我们还会使用。不养鳗鱼以后，楼下的几个池子就让给了其他老师和他们的学生。原本一起在专家办公室的蒋老师，搬到了楼上的实验室旁，至少他还是有自己的个人办公室。学院知道留不住程老师，自然也不愿花费太多的成本。这大概就是合同工和事业编制的差别。&lt;/p&gt;
&lt;p&gt;程老师任职的第二学年，有几位学长学姐也相继成为程老师的学生，“程爷爷”这个昵称，正是他们叫出来的。&lt;/p&gt;
&lt;p&gt;本科生组成的课题组松快一些，不像研究生天天在实验室打卡。因为组里还没建立起标准的操作和分析规范，我们每周都会做一点实验，大家一起尝试新方法：解剖、组织包埋、冷冻切片和染色观察，药品配制与注射等，并且开会分享近期阅读文献的收获。&lt;/p&gt;
&lt;p&gt;当然，这都是程老师在带头。不过我们也很享受这种状态。大家并不会因为志不在此而感到厌烦，这是十分难得的。组内氛围融洽，现在回想起来仍感到比一般老师和同学亲近。记得每次程老师从台湾回来，都会给我们带礼物，台湾的零食，泡面，书等等。泡面真的和包装上一样，调味包里有“大块的肉”。我喜欢书，书是从左翻到右，排版也是竖着读的，像“武功秘籍”。&lt;/p&gt;
&lt;p&gt;那一年的元旦，我们一起在程老师的宿舍吃火锅，聊川普上任，他送给我们每个人一本由他审订出版的科普书籍——《演化之舞》。这本书刚刚在台湾再版，于是出版社送了他几本，他便带给我们了。然后，他又从书房拿出一本英文的原著，告诉我们他自己也收藏了。当时我选了有点瑕疵，书脊上磕破了的那本。书现在也没有翻看完，也许它对我来说，最重要还是首页上老师亲手写下的新年祝语。也是看了这本书对审订者的介绍，才知道老师的履历这么精彩。&lt;/p&gt;
&lt;p&gt;在跟程老师的相处中，我一直保持着虚心求学的态度。因为这是我在他身上学到的，最宝贵的品质。只有在刚刚开始跟随他学习的时候，他为我们讲解「鳗鱼传说」一书，后来便很少直接面授我们知识，而是让我觉得他在带领我们一起学习。&lt;/p&gt;
&lt;p&gt;我大三那年，学长学姐也到了需要完成毕业论文的时候。作为他们论文内容的这些工作，是组里这项研究的一部分，但也是“开天辟地”的重要一步，帮助建立一些值得探索的假说。&lt;/p&gt;
&lt;p&gt;对他们来说，完成论文可能时间紧迫，一方面需要尽快处理刚刚到手的数据，在高通量测序结果的解读面前，大家都是门外汉；另一方面，除了一位已经确定升学的学长，其他人还未落实毕业去向，所以偶尔要四处参加考试和面试，奔波于家乡和校园之间。&lt;/p&gt;
&lt;p&gt;我决定参与进来，组会结束后，我跟程老师说想学习「生物信息学」，系统地学习和了解自己正在做的研究。程老师很高兴，并表示了极大的支持和鼓励。学期刚刚开始，巧合的是，桑老师正好决定开设这门选修课。这在我们学院还是第一次，于是老师便让我可以找到课表，待上课时去旁听。每周五下午，我和他一起去上课学习。&lt;/p&gt;
&lt;p&gt;其实这门课从设计上还有些欠缺，对学生的编程能力有一定要求（至少现在我觉得入门生信有更好的方式），显然也不太适合程老师。他从未停止学习，只是这位亲身经历过分子生物学革命的教授，似乎并不擅长面对屏幕上的代码。每次假期回来不只带来礼物，还学习了新的技术和技能，如何完整地从头盖骨中取出鳗鱼的脑部，从法国科学家友人学到的给鳗鱼做手术及缝合，甚至还有船舶驾驶……有几位同学很幸运，老师亲自驾船载他们出海。后来，程老师生了一次病，就没再来旁听了。剩下我自己，也不缺席和迟到，在同样的座位。&lt;/p&gt;
&lt;p&gt;学期接近尾声时，因为兄长的毕业典礼，我请假同母亲去了一趟广州。回想起来，最可惜的莫过于错过学长学姐的答辩，没有看到过程老师出席的答辩现场。今年，当我站在同样的位置时，老师却已经回到台湾。不过，拍毕业照的时候，大家都整整齐齐地到场了。那也是我和老师至今最后的合影。学长把学士服借给我穿，让我能有一张穿着学士服和老师一起拍的“毕业照”。&lt;/p&gt;
&lt;p&gt;之后，我拿着他们的毕业论文，每天泡在图书馆里。留意着馆藏有没有相关的新书，因为仅有的旧书都已经翻阅过了。同时也在网络上完成了两门相关课程的学习，认识到比我志向更远的同学，互相鼓励。到了写学年论文的时候，一步一个脚印，总算有所收获。&lt;/p&gt;
&lt;p&gt;有一次，我的电脑坏了，平时没有备份的习惯。我早就意识到，在做研究这条路上，自己其实一直还不够坚定。意外使我第一次明显地动摇。我在程老师面前，和他聊着最新的进展。终于还是忍不住，提起一路走来的焦虑不安，缺少继续在这条前途未卜的道路上走下去的勇气。程老师大概听出我的“言外之意”。&lt;/p&gt;
&lt;p&gt;我们继续说着课题研究的事情，他只是偶尔提了下我“丢失”的那部分“知识”。说到后续要探索的方向时，他跟我谈到很多从未在组会上提及的想法，接着对我说道：“你是我在大陆这边最好的学生，聪明又努力。你的学长学姐可能想要当个小学、中学的老师就好，也很好，我不太能够鼓励他们做大事。”&lt;/p&gt;
&lt;p&gt;我第一次知道程老师对我的期望，更甚于我对自己的信心。但行好事，莫问前程。把能做的事情完成，做好擅长的工作。既解决了眼前的困顿，也得到终身受益的知识。等到最近，我重新开始整理那些随着硬盘丢失的笔记，才发现早已做过“备份”——能够轻松地获得学习材料的资源，亦不再因背景知识缺乏而难以入门。&lt;/p&gt;
&lt;p&gt;我知道自己多虑的原因是缺乏自信，这可能是我最大的弱点。似乎与我成长过程中，时常因为家庭感到自卑有关，后来在很多决定面前都瞻前顾后，只能畏手畏脚。我想不到什么原因，来解释为何程老师对我如此厚爱。　　&lt;/p&gt;
&lt;p&gt;程老师跟我们每个学生的感情都很好。中秋，老师在微信群里讲了一段颇为煽情的祝词，失意的情绪快要溢出手机屏幕，言语间总是对这份师生情谊的珍惜。我想象他站在阳台的样子，感慨着在这三年的点滴，学姐最近回校的探望，让他回忆起教导我们的时光，便想把这种心情告诉我们。每次过节，我们都在群里相互问候，而这个夜晚的话语却牵动我的心，格外真挚。未几，收到亲人离世的噩耗，我请假回家。我不知道自己是否混淆了那些日子在情感上遭遇的冲击。&lt;/p&gt;
&lt;p&gt;老师取消了一次组会，谁知道后来，大家再也没有聚在一起的机会。&lt;/p&gt;
&lt;p&gt;回校之后，发现图书馆以60周年校庆为由，出台了“全新但不走心”的自习室管理条例，让每个考研学子怨声载道。对陷入抑郁情绪的我而言，亦是雪上加霜。我仍然坚持每天学习。因为课题组早已不再做实验，我向程老师借来小会议室的钥匙。他叮嘱我，过去学习的时候要低调，他并没有将房间借给学生使用的权利。这早已不是他的个人办公室，不想因此又惹来学院领导的关心。因为这个小房间，我才有安静的学习环境，孤独地与情绪障碍进行斗争。偶尔回想起跟大家一起在这开会、谈笑的日子，仿佛得到了陪伴。&lt;/p&gt;
&lt;p&gt;我完成了考研初试，开始着手毕业论文。此时，我已经跟随老师学习最久，加上之前与学长学姐们一起完成论文工作的经验，一步步积累下来，对这项研究也算有了较为全面的了解。也许是知道以后没什么见面机会，每周和程老师讨论的频率也变高了。老师一句一句的带我读文献摘要，提示我用什么关键词能够找到帮我解释现象和理解数据的论文。虽然参考文献越攒越多，最终也学会自己慢慢消化了。&lt;/p&gt;
&lt;p&gt;这一周，我写的草稿受到了老师的肯定。老师托付了一些事情，让我在接下来的日子好好帮助组里的其他同学完成工作。因为他回台湾以后，对学生的指导就没那么直接和方便了。&lt;/p&gt;
&lt;p&gt;程老师如期地离校回台。&lt;/p&gt;
&lt;p&gt;这是他第一次到大陆任职教学，一开始还在担心自己的政治倾向遭到怀疑，害怕不易被接受的他，后来身陷在大陆高校复杂而繁琐的体制规则中难以施展。在他返台的前一天，小师姐特地回校来看程老师——&lt;/p&gt;
&lt;p&gt;我们一起去吃饭，路上给其他的学长学姐打视频电话。这几天，我一直在思考该给老师准备什么纪念品，却实在没有好主意。最终，因为没有拿得出手的心意，我的大学生活又多了一个小遗憾。也是那一天，老师让学姐带他去停掉了在大陆的手机号。当时我想，以后只能用微信和邮箱联系到老师，不知道他在台湾还会常用微信吗。&lt;/p&gt;
&lt;p&gt;程老师清早的启程几乎没有人察觉。当他回复我发送的问候时，已经到了金门。我拿着他留给我的钥匙，来到这个充满课题组回忆的房间，清扫灰尘，也整理心情。&lt;/p&gt;
&lt;p&gt;从程老师和蒋老师共用的专家办公室，到做实验、开组会的小会议室，到后来考研自习的静修室，空荡荡的房间，老师已经带走了他的书籍和资料，只有一部分以前实验剩下的药品，还藏着柜子里，避光保存着。想到自己很难有机会去台湾拜访恩师，更不再能够轻易便知晓他是否平安、健康，最近又在学习和研究哪些有意思的课题……&lt;/p&gt;
&lt;p&gt;此时，虽然时间只过了几周，来到这却是完全不同的心境。我写下在这里的故事，回忆涌起时，是对岁月难回头，时光不再有的伤感，泪水还是忍不住要冲出眼眶。　　&lt;/p&gt;</description></item><item><title>生物序列数据的机器学习预处理</title><link>https://touchingfish.top/2019/bioseq-preprocess/</link><pubDate>Thu, 24 Jan 2019 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2019/bioseq-preprocess/</guid><description>&lt;p&gt;随着生物信息学的快速发展，DNA 序列数据呈爆炸式增长。这些序列蕴含着丰富的生物学信息——然而对处理数值数据的机器学习模型来说，原始的 DNA 序列不过是一串字符，&lt;code&gt;ACGTACG...&lt;/code&gt;，无法直接作为输入。&lt;/p&gt;
&lt;p&gt;将 DNA 序列转化为机器学习模型能够理解的数值矩阵形式，成为一个关键步骤。&lt;/p&gt;
&lt;p&gt;（本文明写 &lt;em&gt;E.Coli&lt;/em&gt; 启动子序列识别，实则记录一种通用的序列转换思路）&lt;/p&gt;
&lt;h2 id="数据预览"&gt;数据预览&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;np&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;pd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;https://archive.ics.uci.edu/ml/machine-learning-databases/molecular-biology/promoter-gene-sequences/promoters.data&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;names&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Class&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;id&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Sequence&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;names&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;names&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;输出：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Class +
id S10
Sequence \t\ttactagcaatacgcttgcgttcggtggttaagtatgtataat...
Name: 0, dtype: object

 &amp;lt;bound method NDFrame.head of Class id Sequence
0 + S10 \t\ttactagcaatacgcttgcgttcggtggttaagtatgtataat...
1 + AMPC \t\ttgctatcctgacagttgtcacgctgattggtgtcgttacaat...
2 + AROH \t\tgtactagagaactagtgcattagcttatttttttgttatcat...
3 + DEOP2 \taattgtgatgtgtatcgaagtgtgttgcggagtagatgttagaa...
4 + LEU1_TRNA \ttcgataattaactattgacgaaaagctgaaaaccactagaatgc...
.. ... ... ...
101 - 799 \t\tcctcaatggcctctaaacgggtcttgaggggttttttgctga...
102 - 987 \t\tgtattctcaacaagattaaccgacagattcaatctcgtggat...
103 - 1226 \t\tcgcgactacgatgagatgcctgagtgcttccgttactggatt...
104 - 794 \t\tctcgtcctcaatggcctctaaacgggtcttgaggggtttttt...
105 - 1442 \t\ttaacattaataaataaggaggctctaatggcactcattagcc...

[106 rows x 3 columns]&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="序列的提取与分割"&gt;序列的提取与分割&lt;/h2&gt;
&lt;p&gt;DataFrame 是由多个 Series 组成的，每个 Series 代表 DataFrame 的一列。&lt;/p&gt;</description></item><item><title>699个名字（机器学习领域的"Hello World"）</title><link>https://touchingfish.top/2019/brca-detection-with-sklearn/</link><pubDate>Mon, 21 Jan 2019 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2019/brca-detection-with-sklearn/</guid><description>&lt;p&gt;打开这个数据集的时候，脑子里突然闪过一个问题：class 那一列里的 2 和 4，分别对应的是&amp;quot;良性&amp;quot;和&amp;quot;恶性&amp;quot;——但这两个数字背后，坐着的是谁？&lt;/p&gt;
&lt;h2 id="699个女人"&gt;699个女人&lt;/h2&gt;
&lt;p&gt;威斯康星乳腺癌数据集（Wisconsin Breast Cancer Dataset），算是机器学习领域的&amp;quot;Hello World&amp;quot;。699个样本，每个样本有10个细胞特征：clump_thickness（结块厚度）、uniform_cell_size（细胞大小均匀性）、uniform_cell_shape（细胞形状均匀性）、marginal_adhesion（边缘黏附力）、single_epithelial_size（单上皮细胞大小）、bare_nuclei（裸核）、bland_chromatin（淡染色质）、normal_nucleoli（正常核仁）、mitoses（核分裂）。&lt;/p&gt;
&lt;p&gt;这些特征听起来抽象，却是病理医生在显微镜下实实在在看过的东西。&lt;/p&gt;
&lt;p&gt;他们在数细胞层数，量细胞直径，看细胞边缘是光滑还是锯齿状，观察细胞核被染成什么颜色。每一个1到10的数字，都是人眼与人脑的判断——是经验的积累，是训练的痕迹。&lt;/p&gt;
&lt;p&gt;数据里的每一行，曾经是一个女人坐在诊室里，等待活检结果。&lt;/p&gt;
&lt;h2 id="细胞的语言"&gt;细胞的语言&lt;/h2&gt;
&lt;p&gt;病理医生看细胞，和我们看人很像。&lt;/p&gt;
&lt;p&gt;看形状——圆润的倾向于良性，畸形的倾向于恶性。看边界——边界清晰的通常良性，黏连在一起的往往恶性。看颜色——染色均匀的相对正常，染色质浓集发黑的令人担忧。&lt;/p&gt;
&lt;p&gt;这不是玄学。是几千例病例训练出来的直觉。&lt;/p&gt;
&lt;p&gt;而机器学习做的事情，简单来说就是：绕过医生的经验，用算法把这些&amp;quot;直觉&amp;quot;数字化、规则化。SVM（Support Vector Machine，支持向量机）在高维空间里找到一条最优分割线，把良性样本和恶性样本分开。KNN（K-Nearest Neighbors，K近邻）则是&amp;quot;物以类聚&amp;quot;——看一个未知样本的5个最近邻居是什么类别，由多数投票决定它属于哪一类。&lt;/p&gt;
&lt;p&gt;KNN 选 K=5，是因为经验发现这个数值通常效果较好。太少容易受噪声影响，太多又会模糊边界。&lt;/p&gt;
&lt;p&gt;SVM 的核函数（kernel）把细胞特征映射到高维空间，在那个空间里，线性不可分的数据变得可以分开。&lt;/p&gt;
&lt;h2 id="10折交叉验证"&gt;10折交叉验证&lt;/h2&gt;
&lt;p&gt;直接用全部数据训练，然后测试，会发生什么？&lt;/p&gt;
&lt;p&gt;模型可能&amp;quot;背住&amp;quot;了训练数据，而不是真的学会了规律。就像考试前背答案，遇到新题就傻眼。&lt;/p&gt;
&lt;p&gt;10折交叉验证（10-fold cross validation）解决的是这个问题。把数据随机分成10份，轮流让9份当训练集、1份当测试集，做10次实验，最后取平均准确率。&lt;/p&gt;
&lt;p&gt;结果是：KNN 96.6%，SVM 96.0%。看起来差不多，但实际上——&lt;/p&gt;
&lt;p&gt;KNN 的标准差是 2.9%，SVM 是 3.3%。KNN 更稳定。&lt;/p&gt;
&lt;p&gt;这意味着什么？KNN 在10次实验里波动较小，SVM 则有时表现更好、有时更差。对于实际部署来说，稳定比偶尔的高分更重要。&lt;/p&gt;
&lt;h2 id="precisionrecall与生命的重量"&gt;Precision、Recall、与生命的重量&lt;/h2&gt;
&lt;p&gt;但准确率（accuracy）不是唯一的指标。在医疗场景下，误诊和漏诊的代价是不同的。&lt;/p&gt;
&lt;p&gt;Precision（精确率）：预测为恶性的样本里，真正是恶性的比例。&lt;/p&gt;
&lt;p&gt;Recall（召回率）：所有恶性样本里，被正确识别出来的比例。&lt;/p&gt;
&lt;p&gt;F1-Score是这两者的调和平均。&lt;/p&gt;
&lt;p&gt;SVM 报告里的 Class 2（良性）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Precision = 1.00：预测良性的，几乎全对&lt;/li&gt;
&lt;li&gt;Recall = 0.95：100个良性里，有5个被误判为恶性&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;SVM 报告里的 Class 4（恶性）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Precision = 0.90：预测恶性的，10个里有1个其实是良性&lt;/li&gt;
&lt;li&gt;Recall = 1.00：所有恶性都被找到了&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于癌症筛查，Recall 更关键。漏诊一个癌症患者，比误诊一个良性肿瘤更危险——后者只需要进一步检查，前者可能延误治疗时机。&lt;/p&gt;</description></item><item><title>日本鳗鲡人工繁殖与基因组学研究综述</title><link>https://touchingfish.top/2018/japanese-eel-review/</link><pubDate>Thu, 28 Jun 2018 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2018/japanese-eel-review/</guid><description>&lt;p&gt;前阵子翻出这篇旧文，看了几行就有点坐不住了。&lt;/p&gt;
&lt;p&gt;怎么说呢——那会儿的我，写文章像在完成任务。&amp;ldquo;具有重大的意义&amp;quot;几个字打出来，自己都不带眨眼的。「综述」写成这样，倒也不是没有先例。程老师当年就说过，本科生写论文，先学会&amp;quot;搭架子&amp;rdquo;，内容好不好先放一边，架子要像那么回事。于是我学会了用&amp;quot;随着……的发展&amp;quot;、&amp;ldquo;具有……的意义&amp;rdquo;、&amp;ldquo;为……提供理论依据&amp;quot;这种句式来填充段落。写的时候觉得自己还挺像回事，现在回头看，妥妥的学术八股。&lt;/p&gt;
&lt;p&gt;不过话说回来，这篇文章倒也不是毫无可取（笑）之处。&lt;/p&gt;
&lt;p&gt;第一，引用格式混乱。那会儿还不知道文献管理工具为何物，全靠手打。参考文献列表里期刊名、年份、卷期页码随时可能缺斤少两，现在看着都想给自己一拳。&lt;/p&gt;
&lt;p&gt;第二，专业术语不统一。鳗鲡的性腺发育分期，一会儿用罗马数字，一会儿用阿拉伯数字，同一篇文章里出现了至少三种写法。HPG轴写成&amp;quot;下丘脑-脑垂体-性腺轴&amp;rdquo;，第一次见的人估计得愣半天。&lt;/p&gt;
&lt;p&gt;第三，逻辑断层。最明显的是第三章讲基因组学，前面还在说鱼类的全基因组测序进展，突然跳到日本鳗鲡的转录组学研究意义，转折生硬得像两块没打磨的木头硬拼在一起。&lt;/p&gt;
&lt;p&gt;第四，没有批判性思维。写综述嘛，总要评价一下前人工作的不足。但整篇文章读下来，几乎全是&amp;quot;XX研究表明&amp;quot;、&amp;ldquo;XX认为&amp;rdquo;，很少看到&amp;quot;然而该研究存在以下局限&amp;quot;、&amp;ldquo;相比之下，本研究……&amp;ldquo;这种主动出击的句子。倒不是想不到，纯粹是文献看多了，被带着走，没有自己的立场。&lt;/p&gt;
&lt;p&gt;第五，结尾草草收场。每一章越写越短，最后一段写完，自己都觉得心虚——&amp;ldquo;日本鳗鲡相关功能基因的变化&amp;quot;这句话搁这儿摆了三行，像是在说&amp;rdquo; future work&amp;rdquo;（其实确实是）。&lt;/p&gt;
&lt;p&gt;但我后来想想，也不用太苛责当时的自己。&lt;/p&gt;
&lt;p&gt;那时候我刚学会查文献、读文献，能写成现在这样，已经超出了我的预期——至少格式上像个论文的样子，引用虽然乱但数量管够，内容虽然浅但覆盖面广。&lt;/p&gt;
&lt;p&gt;更重要的是，这篇文章让我第一次真正接触到了学术写作。&lt;/p&gt;
&lt;p&gt;写综述是训练逻辑思维的好方法——你得把别人的东西消化完，再用自己的话重新讲出来，还要讲得清楚、讲得有条理。这话我记到现在。&lt;/p&gt;
&lt;p&gt;后来我走了生物信息的路，鳗鱼的事便没有继续。再后来听说老师回了台湾，实验室也散了。那些养在池子里的鳗鱼，大概也不知道曾有一群本科生为它们写过一篇&amp;quot;综述&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;有时候翻到这篇文章，会想起那段在专家办公室开组会、在小会议室看切片的日子。程老师总说，做研究要有耐心，要肯花时间。&lt;/p&gt;
&lt;p&gt;我当时似懂非懂，现在回头看，那篇综述大概是我第一次体验到什么叫时间流逝飞快——写进去就出不来的感觉，忘了吃饭，忘了看手机，一抬头天都黑了。后来我自己回想，这也许是我觉得自己适合做科研的线索之一吧。&lt;/p&gt;
&lt;p&gt;丑是丑了点，但也是我写的。&lt;/p&gt;
&lt;p&gt;2021年冬&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="摘要"&gt;摘要&lt;/h2&gt;
&lt;p&gt;日本鳗鲡（&lt;em&gt;Anguilla japonica&lt;/em&gt;）是东亚地区最重要的一种长距离降海洄游鱼类，是我国鳗鲡人工养殖的主要品种及开展人工繁殖技术研究的重要实验对象。日本鳗鲡具有特殊的生活史，养殖所用的鱼苗依赖于天然捕捞。然而近年来，鳗苗的资源状况持续波动，捕捞量总体上呈下降的趋势，因此研究日本鳗鲡人工繁殖技术非常重要。本文从雌雄鉴别、组织形态学、生理学、催熟催产、生态因子影响等方面，对我国关于鳗鲡繁殖研究进展进行了简单的回顾。综述表明，尽管日本鳗鲡人工繁殖研究已取得一定进展，但亲鱼性腺发育调控机制尚未完全阐明，催产成功率与苗种培育技术仍有待突破。此外，功能基因组学的发展为解决上述问题提供了新的思路，或将成为未来研究的重要方向。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键词&lt;/strong&gt;：日本鳗鲡；人工繁殖；功能基因组学&lt;/p&gt;
&lt;h1 id="1---日本鳗鲡"&gt;1. 日本鳗鲡&lt;/h1&gt;
&lt;h2 id="11-日本鳗鲡的遗传分类"&gt;1.1 日本鳗鲡的遗传分类&lt;/h2&gt;
&lt;p&gt;日本鳗鲡（&lt;em&gt;Anguilla japonica&lt;/em&gt;）是鳗鲡属（&lt;em&gt;Anguilla&lt;/em&gt;）下的品种之一。与其他各物种一样，鳗鲡分类标准有形态学、细胞学、生化遗传学、分子遗传学等。在很长的时间内，国内外学者对鳗鲡的分类问题持有不同的意见，至今仍没有定论。到2007年为止，我国已定名并记载了8种鳗鲡，分别是日本鳗鲡（&lt;em&gt;A. japonica&lt;/em&gt;）、花鳗鲡（&lt;em&gt;A. marmorata&lt;/em&gt;）、中华鳗鲡（&lt;em&gt;A. sinensis&lt;/em&gt;）、短头鳗鲡（&lt;em&gt;A. breviceps&lt;/em&gt;）、疏斑鳗鲡（&lt;em&gt;A. elphinstonei&lt;/em&gt;）、云纹鳗鲡（&lt;em&gt;A. nebulosa&lt;/em&gt;）、乌耳鳗鲡（&lt;em&gt;A. nigricans&lt;/em&gt;）和福州鳗鲡（&lt;em&gt;A. foochowensis&lt;/em&gt;）&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;，后来分布于台湾的双色鳗鲡（&lt;em&gt;A. bicolor&lt;/em&gt;）也被补充记录入册，大多数学者对世界上总共有19种鳗鲡的观点较为认可。&lt;/p&gt;
&lt;p&gt;欧洲鳗鲡和美洲鳗鲡分别生活在各自分布地区的淡水水域中，性成熟后都会降海洄游到大西洋中部的热带海域进行繁殖。据1986年Avise及其同事的研究发现，这两种亲缘关系相近、形态特征相似且产卵场所相同的鳗鲡之间存在着严格的生殖隔离&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;。这在鳗鲡分类问题的争议时期产生了巨大的轰动，地理隔离改变鳗鲡群体遗传结构影响种质分类受到了科学家们的关注。考虑到这一问题，我国研究者也做了关于不同水域日本鳗鲡群体遗传结构的研究，结果表明我国各水域日本鳗鲡群体出现分化，但遗传结构并未出现明显差别，不同地理群到达产卵地的时间不同可能是造成群体分化现象的原因，但并不会造成生殖隔离，这些群体仍属于同一物种&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;。解决鳗鲡的分类问题，对研究鳗鲡的繁殖具有重大的意义。&lt;/p&gt;
&lt;h2 id="12-日本鳗鲡的生活史"&gt;1.2 日本鳗鲡的生活史&lt;/h2&gt;
&lt;p&gt;日本鳗鲡是一种长距离降海洄游的鱼类，分布于日本至菲律宾间的西太平洋水域，产卵场位于菲律宾东部海域的马里亚纳群岛附近（约15°N，140°E）&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;。初生的仔鳗为透明的柳叶状幼体，称为柳叶鳗，以海雪为食。随洋流漂游到中国、日本大陆架沿岸后，变态为玻璃鳗，并在到达淡水生活水域前变态为线鳗，入河后变色为黄色鳗。发育到一定程度后，黄色鳗开始长距离的降海洄游，在这个过程中不断成熟，银化成为银色鳗。研究指出，鳗鲡在性成熟到下海繁殖的过程中不再摄食，因为产卵场距离遥远，生殖洄游需要消耗大量体力，由于人们没有发现过产完卵的亲鱼再返回到生长区的现象，所以认为鳗鲡在生殖后全部死亡，属于一次性繁殖鱼类&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;。然而，有实验室在进行的人工催产研究时，发现产卵后的亲鱼并不会死亡，而且还可以再次达到性成熟&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt;，故认为日本鳗鲡一次繁殖的观点还有待探讨。&lt;/p&gt;
&lt;h2 id="13-日本鳗鲡的资源概况"&gt;1.3 日本鳗鲡的资源概况&lt;/h2&gt;
&lt;p&gt;日本鳗鲡由于味道鲜美、肉多刺少的特点，深受国内外广大食客的喜爱。市面上的鳗鱼料理很少是由直接捕获的成鳗烹饪而成，大多食材是通过捕捞鳗苗并且养殖到一定大小的非野生养殖鳗。此外，人工养殖的鳗苗也全是依靠捕捞获得，亲本的人工繁殖至今没有取得较大突破。&lt;/p&gt;
&lt;p&gt;据2018年初日本共同通信社的报道，濒危物种日本鳗鲡的鳗苗本季遭遇极度严重的鱼荒。日本国内外自2017年12月10日捕捞解禁开始，15天内的日本鳗鳗苗捕获量只有0.5公斤，约为去年43.4公斤捕获量的1%。如果鱼荒持续没有好转，本季鳗苗捕捞量很有可能创造历史新低，受到了鳗鲡产业关注。到2018年4月底，《日本养殖新闻》报道，除大阪渔期尚存以外，2018年度东亚地区鳗苗捕捞季正式结束。回顾本季鳗苗捕捞情况，台湾地区11月中旬率先开捕，然而苗影寥寥，开局不利。次年1月，中国大陆和日本也相继展开捕苗行动，苗情同样不乐观。2月下旬的黑夜大潮在一定程度缓解了苗情颓势，但海洋3、4月份苗获仍然持续不佳。虽然日本鳗苗的捕捞量在四月中旬已经超过了近几年最低的水平，但整个东亚地区的累积捕捞量大歉收的事实无法改变，该年度的鳗苗捕捞季最终悄无声息的惨淡收场，这势必将导致鳗鲡苗价居高不下。（数据来自&lt;a href="http://www.shuichan.cc/"&gt;中国水产养殖网&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;科学家根据三维粒子跟踪方法，对北太平洋西部日本鳗鲡捕鱼量下降进行了深层的研究，发现了海洋环流近十年的变化对日本鳗鲡迁徙成功与否存在了一定的潜在影响，可能是造成鳗苗捕捞量持续不稳定性的重要原因&lt;sup id="fnref:7"&gt;&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref"&gt;7&lt;/a&gt;&lt;/sup&gt;。由于鳗苗捕捞量的波动性，苗价高一直是日本鳗鲡养殖成本的主要方面，而其他鳗种的鳗苗抗病能力、生长速度，饲料转化率和育成率都远不如日本鳗鲡，不易养殖，苗价相对较低。本次大歉收敲响了早日攻克日本鳗鲡人工繁殖难题的警钟，也可能会在一定程度上刺激其他鳗种的养殖技术发展。&lt;/p&gt;
&lt;p&gt;中国水产养殖进入产业化以来，人工养殖的鳗鲡品种以本土分布的日本鳗鲡和海外进口的欧洲鳗鲡为主&lt;sup id="fnref1:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。早在2014年，日本鳗鲡就被正式列入世界自然保护联盟（IUCN）的红色目录中，但对捕捞和食用日本鳗鲡还未有法律的明令禁止。2018年鳗苗大歉收，导致越来越多的业内人士呼吁将日本鳗鲡同欧洲鳗鲡一样，列入《华盛顿公约》（CITES）的附录二中加以保护。自2009年欧洲鳗鲡得到CITES的保护以来，中国的鳗鲡产业遭到了巨大的冲击。以前，中国鳗鲡产业依赖于进口欧洲鳗鲡幼苗，养殖到一定大小后出口日本或供国内消费。欧洲鳗鲡国际交易受到限制后，在我国也视为国家二级保护动物对待，于是中国地区分布最广的日本鳗鲡自然成为现在主要的养殖品种。&lt;/p&gt;
&lt;p&gt;日本作为鳗鲡主要的消费大国，也是东亚地区鳗鲡产业重要的领导国之一，先后召开了日本鳗产地连总会，中日、台日鳗鱼贸易会，共同讨论2019年5月的华盛顿公约缔约国会议到来前的对策。我国也成立了中国鳗鲡现代产业论坛，并于2017年10月在厦门举办了鳗鲡产业科技创新联盟成立大会，邀请二十多位专家教授做了精彩的报告，为日本鳗鲡资源的保护和人工繁殖的研究提出了新方向。&lt;/p&gt;
&lt;h1 id="2---我国鳗鲡人工繁殖的研究进展"&gt;2. 我国鳗鲡人工繁殖的研究进展&lt;/h1&gt;
&lt;p&gt;我国和日本从20世纪70年代开始鳗鲡人工繁殖的研究，并且在一些方面上取得了突破。2010年，日本水产综合研究中心（JFAR）宣告日本鳗鲡全人工繁殖成功&lt;sup id="fnref:8"&gt;&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref"&gt;8&lt;/a&gt;&lt;/sup&gt;，对我国加快相关研究的进展产生了强烈的刺激。&lt;/p&gt;
&lt;h2 id="21-雌雄鉴别"&gt;2.1 雌雄鉴别&lt;/h2&gt;
&lt;p&gt;雌雄鉴别是鱼类生物学研究的重要内容，也是鱼类人工繁殖和增殖的关键技术之一。日本鳗鲡和大多数硬骨鱼类一样，非繁殖时期的雄鱼和雌鱼在外形上并没有直观可辨的差别，但精巢和卵巢的发育会造成第二性征的出现，两性异形现象在一些种类性成熟后仍然普遍存在。早在20世纪七八十年代，林鼎等就鳗鲡的雌雄鉴别提出了吻形差异的观点&lt;sup id="fnref:9"&gt;&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref"&gt;9&lt;/a&gt;&lt;/sup&gt;，而松井魁发现在日本鳗鲡吻角的差异与性别有关，但吻形上没有差别&lt;sup id="fnref:10"&gt;&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref"&gt;10&lt;/a&gt;&lt;/sup&gt;。在前面科学家的研究基础上，郭弘艺等，对长江口153尾银色鳗作了详细的形态学分析，建立了雌雄个体的判别模型，在性腺发育早期就能够找到一些鉴别雌雄个体的外形特征。统计分析结果表明长江口银色鳗的雌性个体比雄性更为丰满，体型较高，但眼较小，建立的判别方程正确率可达89%&lt;sup id="fnref:11"&gt;&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref"&gt;11&lt;/a&gt;&lt;/sup&gt;，不过这种方法在实际操作和应用中存在着测量记录和计算判别过程较为繁琐的问题。&lt;/p&gt;
&lt;h2 id="22-性腺组织形态学观察"&gt;2.2 性腺组织形态学观察&lt;/h2&gt;
&lt;p&gt;亲鱼的性腺组织发育是人工繁殖的物质基础，了解鱼类性腺发育到什么程度才能排精和产卵对人工繁殖至关重要，为进一步开展育苗技术的研究提供了参考依据。张洁明等总结了国内外水产科学前辈的经验教训，对人工催熟的日本鳗鲡性腺进行了系统的观察和研究&lt;sup id="fnref:12"&gt;&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref"&gt;12&lt;/a&gt;&lt;/sup&gt;，结果与其他学者基本一致。他们将日本鳗鲡精巢发育可分为精原细胞前增殖期（Ⅰ）、精原细胞后增殖期（Ⅱ）、精母细胞生长期（Ⅲ）、精子出现期（Ⅳ）和精子成熟期（Ⅴ）5 个时相。因在下海鳗群体中未观察到第Ⅰ时相的卵巢，人工催熟日本鳗鲡的卵巢发育只有卵母细胞单层滤泡期（Ⅱ）、脂肪泡出现期（Ⅲ）、卵黄充满期（Ⅳ）和卵母细胞最后成熟期（Ⅴ）。按照作者的描述，日本鳗鲡性腺组织各时期性状特征与其他鱼类存在大量相似之处，有利于参照其他鱼类人工繁殖成功的案例开展相关研究。&lt;/p&gt;
&lt;h2 id="23-生殖生理研究"&gt;2.3 生殖生理研究&lt;/h2&gt;
&lt;p&gt;鳗鲡性成熟过程中，最受学者关注的是其生殖内分泌系统的下丘脑-脑垂体-性腺轴（Hypothalamus-Pituitary-Gonad，HPG）。HPG又称生殖内分泌轴，各部分激素水平、细胞形态、生化成分等的变化，以及外源激素如何对其造成影响是学者们研究的热点&lt;sup id="fnref1:8"&gt;&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref"&gt;8&lt;/a&gt;&lt;/sup&gt;。蒋天宝等使用鲤鱼垂体和HCG对雌性日本鳗鲡进行诱导催熟，对6项血清生化指标（血清总蛋白、血清甘油三脂、血清胆固醇、血糖、血钙和血清无机磷）进行了测定分析，结果表明血清中的钙和磷与鳗鲡的GSI具有显著的相关性，或成为判断发育程度的新指标和新方法&lt;sup id="fnref:13"&gt;&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref"&gt;13&lt;/a&gt;&lt;/sup&gt;。然而，人工养殖成熟和自然生长下海的日本鳗鲡的血清生化成分上可能会有所差别，至今没有相关的进一步研究发表。&lt;/p&gt;
&lt;h2 id="24-催熟催产"&gt;2.4 催熟催产&lt;/h2&gt;
&lt;p&gt;外源激素是诱导日本鳗鲡性成熟的常用和必要方法，鳗鲡下海后性腺才会逐渐成熟，在人工培育条件下，如果没有使用外源激素进行诱导，其性腺无法继续发育，并到达能够排精、产卵的程度。国内常用的鱼类催情剂有：鱼类脑垂体匀浆液（常用鲑鱼和鲤鱼脑垂体）、GnRH类似物（如LHRH-A等）、人工合成或提纯的促性腺激素制品（如人绒毛膜促性腺激素HCG等）、类固醇激素（如睾丸激素）等&lt;sup id="fnref2:8"&gt;&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref"&gt;8&lt;/a&gt;&lt;/sup&gt;。柳凌等对不同激素的作用效果进行了研究，结果显示HCG效果最佳，故成为了鳗鲡人工催熟中的首选&lt;sup id="fnref:14"&gt;&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref"&gt;14&lt;/a&gt;&lt;/sup&gt;。催熟催产的过程除了受环境因子影响外，注射时间、剂量和次数、针距等，与催情剂的效果、产卵和卵子质量都有关系。为探究出最合适的注射方法，邓岳松，林浩然等进行了大量的研究&lt;sup id="fnref:15"&gt;&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref"&gt;15&lt;/a&gt;&lt;/sup&gt;，其结果成为后辈学者实验重要的参考依据。&lt;/p&gt;
&lt;h2 id="25-繁育生态因子的研究"&gt;2.5 繁育生态因子的研究&lt;/h2&gt;
&lt;p&gt;东亚地区日本鳗鲡洄游到达马里亚纳群岛的产卵场需要经过2000海里以上，因为距离遥远，从产卵场的生态入手开展研究的难度较大，关于日本鳗鲡对野外环境要求的了解仍然不够，产卵场的海水条件是否影响亲鱼繁殖和幼体生存的问题也是科学家们的研究内容。我国学者在实验室条件下，对底质颜色、光照强度、温度等进行了控制，探究了日本鳗鲡幼体对这些环境因子的选择&lt;sup id="fnref:16"&gt;&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref"&gt;16&lt;/a&gt;&lt;/sup&gt;。除此之外，盐度也可能是关键的影响因子，探究盐度影响人工养殖日本鳗鲡性腺发育的机制，以及渗透压调节机制对高渗环境的响应&lt;sup id="fnref:17"&gt;&lt;a href="#fn:17" class="footnote-ref" role="doc-noteref"&gt;17&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref:18"&gt;&lt;a href="#fn:18" class="footnote-ref" role="doc-noteref"&gt;18&lt;/a&gt;&lt;/sup&gt;，为使用海水进行日本鳗鲡培育提供重要的理论依据。&lt;/p&gt;
&lt;h1 id="3---功能基因组学"&gt;3. 功能基因组学&lt;/h1&gt;
&lt;h2 id="31-鱼类功能基因组学"&gt;3.1 鱼类功能基因组学&lt;/h2&gt;
&lt;p&gt;随着测序技术的发展和成熟，测序的成本越来越低，各种生物的基因组测序工作也越来越普遍。鱼类是脊椎动物中最繁盛的群体，在生态保护中起着重要作用，是自然界生物多样性的一个重要组成部分。同时，鱼类也是效率最高的优质动物蛋白来源，具有极大的经济价值和医学价值。借助鱼类基因组学，开展鱼类起源、进化、生殖、发育、性别分化和免疫等问题的研究，有助于分子育种技术发展，培育抗病、高产、优质良种，使科研能够更好地应对疾病防控、海洋食品安全和生物多样性保护等带来的诸多问题。&lt;/p&gt;</description></item><item><title>隐士们的殊途同归</title><link>https://touchingfish.top/2018/road-to-heaven/</link><pubDate>Sun, 24 Jun 2018 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2018/road-to-heaven/</guid><description>&lt;h2 id="读空谷幽兰"&gt;读《空谷幽兰》&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;“佛教徒和道教徒走的是同一条路。他们只是做着不同的梦而已。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这句话是我读《空谷幽兰》时记下的第一句话，也是最击中我的一句话。比尔·波特这个美国老头，花了几十年在中国的大山里寻访隐士，最后得出这么个结论——不是佛教赢了，也不是道教赢了，而是那条路本身就存在，走的人多了，也就有了两条路。&lt;/p&gt;
&lt;p&gt;终南山。月亮山。朱雀山。销魂桥。&lt;/p&gt;
&lt;p&gt;这些名字本身就像一个个梦。比尔·波特沿着这些地名去找隐士，找到了，也找不到。找到了，是因为确实还有人在山里修道；找不到，是因为“当你遇到他们的时候，你认不出他们；除非他们愿意让你找到，否则你就找不到”。&lt;/p&gt;
&lt;p&gt;这话听起来像玄学。但你仔细想想，生活中很多事情不也是这样吗？那些真正重要的人和事，从来不是你能“找到”的，都是“遇到”的——或者说，都是人家愿意让你遇到，你才遇得到。&lt;/p&gt;
&lt;p&gt;书里提到的那些隐士，各有各的路子。有的是道士，在华山的悬崖边打坐，呼吸的是千年不变的松风；有的是和尚，在终南山的茅草屋里念经，窗外是比唐朝更古老的月亮。他们吃的不一样，拜的不一样，说话的方式不一样——但有一点是一样的：他们都在试着回答同一个问题。&lt;/p&gt;
&lt;p&gt;活着是为了什么。死了之后去哪里。以及，最要命的：现在此时此刻，我该怎样才算没白活。&lt;/p&gt;
&lt;p&gt;你说这是宗教问题，我觉得不完全是。宗教只是他们用来回答这个问题的语言体系。有的人用道家的语言，说“道法自然”，说“天人合一”；有的人用佛家的语言，说“空无自性”，说“与佛一体”。语言不同，但问的是同一件事。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“天下有道，则与物皆昌；天下无道，则修德就闲。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这句话是书中引用的庄子。意思很简单：天下太平，就好好做事；天下乱了，就躲起来修炼。听起来像是给自己找借口，但仔细一品，这其实是中国人最务实的生存智慧——不是什么时候都往前冲，有时候退一步，真的能海阔天空。&lt;/p&gt;
&lt;p&gt;我一直在想，我们这代人还需要隐士吗？&lt;/p&gt;
&lt;p&gt;我们住在水泥格子里，出门是地铁，回到家是手机屏幕。终南山离我们很远，远到只能出现在旅游攻略里。我们不可能真的躲进山里，一躲就是几十年。但是——&lt;/p&gt;
&lt;p&gt;我们难道不也在找属于自己的“终南山”吗？&lt;/p&gt;
&lt;p&gt;有人把健身房当成道场，流汗就是修炼。有人把厨房当成禅房，做饭就是打坐。有人深夜写日记，跟自己对话那半小时，就是入定。形式变了，但内核没变：我们都需要一个地方，去安放那些在地铁里、在会议室里、在家庭聚会上无法安放的东西。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;一千五百年前，菩提达摩为了防止坐禅时睡着，把眼皮割掉了。他的眼皮落地的地方，长出了第一批茶树。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;真假我不知道。但这个故事本身太美了——为了不犯困，把眼皮割掉，然后眼皮变成了茶树。这个故事要是拍成电影，一定比现在那些修仙剧有意思一千倍。&lt;/p&gt;
&lt;p&gt;更重要的是，这个故事告诉我们：修行这件事，是会“长”出东西来的。你付出的代价，你流的血汗，最后都会以某种形式回馈这个世界。达摩的眼皮变成了茶树，你的努力变成了你的气质、你的技艺、你看待世界的方式。&lt;/p&gt;
&lt;p&gt;这就是“殊途同归”的第二层意思：不管你走哪条路，只要你真的在走，真的在付出，那些积累都不会白费。它们会以你意想不到的方式，回到你身边。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“在云中，在松下，在尘廛外，靠着月光、芋头和大麻过活。除了山之外，他们所需不多：一些泥土，几把茅草，一块瓜田，数株茶树，一篱菊花，风雨晦暝之时的片刻小憩。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这段描写太诱人了。诱人到让我忍不住想，如果我也能过上这样的生活，该多好。&lt;/p&gt;
&lt;p&gt;但我也知道，我过不上。不是因为没有山，而是因为我没有那种“除了山之外，所求不多”的心境。我还贪心，还焦虑，还放不下手机。我还做不到“修德就闲”。&lt;/p&gt;
&lt;p&gt;所以我读这本书，与其说是在了解隐士，不如说是在照镜子。照照自己那颗躁动的心，问问它到底想要什么。行这件事，不是一成不变的。每个时代的人，都需要用自己的方式去回答那些古老的问题。方式不同，但目的是一样的。&lt;/p&gt;
&lt;p&gt;所以回到那句话：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;佛教徒和道教徒走的是同一条路。他们只是做着不同的梦而已。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="记于二一八年五月"&gt;——记于二〇一八年五月&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id="附录读书笔记摘录"&gt;附录：读书笔记（摘录）&lt;/h3&gt;
&lt;h2 id="第一章-隐士的天堂"&gt;第一章 隐士的天堂&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;中国隐士传统与众不同之处在于，隐士在他们所遗弃的那个社会中，享有崇高的地位。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;没有茶，就没有禅&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;中国当然还有隐士。”我的心脏停止了跳动。然后他又说：“但是当你遇到他们的时候，你认不出他们；除非他们愿意让你找到，否则你就找不到。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="第二章-月亮山"&gt;第二章 月亮山&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;但是在“秦岭”这个词开始使用之前的一千年，中国人把这整列山脉称为“终南山”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;中国最早的宗教通过“不死”的概念——这个概念是通过月亮的盈亏体现出来的——在生死之间的暗河上架起了一座桥，而昆仑－终南这列山脉，则是这个宗教的神秘中心。而且因为月亮女神住在昆仑－终南这列山脉中，于是这里就成为某些人前来试图接近月亮的神德和它的力量根源的地方。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="第四章-访道"&gt;第四章 访道&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;因为我的儿子红云与斗姥的丈夫北斗神君的生日是同一天，所以我上了一大把香。尽管如此，它的香气还是远远不及殿外桃花的芳香。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;在那里，她可以有更多的地方种菜，以及拥有更多的孤独。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="第五章-鹤之声"&gt;第五章 鹤之声&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;如道教徒所宣称的，道教的历史形态可能起源于终南山西端的楼观台。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;不知道谢道长是不是过去的五千年中来到华山的那一长串道士名单上的最后一位。这串名单中有茅，他是两千多年前来到华山的。他修炼到长生不死之后，大白天骑在龙背上，消失在云间。他的后人迁移到了东部的沿海省份江苏省，在那里的茅山上，他们建起了中国最著名的道教中心之一。花和风是老朋友了。如果华山的种子能够到达中国东部，那么它们也有可能飘过大洋。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;这条河里的沙子看起来是如此洁白，用它似乎能够把幻世的红尘洗涤尽净似的。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="第六章-登天之道"&gt;第六章 登天之道&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;两千年前，当佛教刚刚传到中国的时候，它已经是半中国化的了&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;是商业贸易把佛法带到了中国。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;玫瑰最早是两千年前在长安培育出来的，它的原型是原产于终南山的一个野生品种。像几千年前的大麻一样，它最终沿着丝绸之路，传到了印度和地中海沿岸等地。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;在一个地方，我们看见一个老太太正坐在高速公路中间，悠闲地缝一条裤子。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="第七章-云中君"&gt;第七章 云中君&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;长安位于丝绸之路的东端，也是中国第一个国际性的城市。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="第八章-朱雀山"&gt;第八章 朱雀山&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;宇宙中的每一件事物，不管是本体还是现象，都是互相联系的，因此是空无自性的。因为空无自性，所以每一件事物都与法是一体的，每个人都与佛是一体的&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;香港的佛教徒从南方的沿海城市汕头雇了八个石匠，来干这个工程的。这个工程花了他们两年的时间。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;虚云革新了中国禅宗，与此同时，印光革新了净土宗。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="第九章-走过销魂桥"&gt;第九章 走过销魂桥&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;这条路当时被称做洛阳路。它从终南山脚下绕过，也是很多想当隐士的人决定永远离开长安时所走的路。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;在古代，任何有时间的人，都可以来灞桥为他们东行的朋友或同僚送行。很多个世纪以来，它也以“销魂桥”而闻名——它是中国古代最著名的送别地点，也是一百万首涉及柳树的诗的背景地。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;东陵是秦国对灞河以东那些小山的称呼。公元前350年，当秦国国君迁都咸阳的时候，他们选择了东陵这一带作为王室墓地。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;当地人叫它“鬼沟”。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;两千五百年前，释迦牟尼佛荼毗以后，印度八个王国的国王为了争夺他的舍利，走到了战争的边缘。为了避免流血冲突，他们最终达成了一致：均分舍利。他们把自己分得的舍利安放在各自国家的舍利塔中。很多个世纪以来，塔中的舍利被进一步地分了又分。公元7世纪，当玄奘大师从印度回长安的时候，在他所带回的物品中，有五百粒释迦牟尼佛的舍利。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="第十章-暮星之家"&gt;第十章 暮星之家&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;在早期的中国哲学中，白色是西方之色，也是暮星——太白金星之色。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;见径之险者，若羊肠、鸟脊，进退一线，极人境之幻矣。&lt;/p&gt;</description></item><item><title>动态规划的智慧（Needleman-Wunsch）</title><link>https://touchingfish.top/2018/needleman-wunsch/</link><pubDate>Sat, 12 May 2018 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2018/needleman-wunsch/</guid><description>&lt;p&gt;当我们谈论序列比对（sequence alignment）时，实际上是在解决一个经典问题：如何将两段序列尽可能“对齐”，以揭示它们之间的相似性？这其中既有科学家的生物学直觉，也离不开精妙的算法设计。今天，让我们聚焦于比对算法的基础，并用一个直观的例子，深入了解Needleman-Wunsch算法这颗动态规划中的明珠，将矩阵的分值转化为真正的比对结果.&lt;/p&gt;
&lt;h2 id="从字符到序列的最佳对齐"&gt;从字符到序列的最佳对齐&lt;/h2&gt;
&lt;p&gt;在进行序列比对时，我们通常需要回答以下三个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;序列间的相似性如何量化？（使用打分矩阵定义匹配、错配和缺口的得分）&lt;/li&gt;
&lt;li&gt;什么是最佳比对？（得分最高的对齐方式）&lt;/li&gt;
&lt;li&gt;如何有效找到最佳比对？（算法）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;比对算法就是解决第3个问题的核心工具。对短序列，可以尝试列举所有可能的对齐方式，但随着序列变长，这种暴力方法的计算量会呈指数增长，显然无法处理实际问题。Needleman-Wunsch算法的提出，完美解决了这一难题。&lt;/p&gt;
&lt;h2 id="将大问题拆解为小问题"&gt;将大问题拆解为小问题&lt;/h2&gt;
&lt;p&gt;动态规划的核心思想是“化整为零”：将一个复杂问题分解为许多小问题，通过解决这些小问题，逐步得出大问题的答案。&lt;/p&gt;
&lt;p&gt;在Needleman-Wunsch算法中，序列比对的问题被表示为一个比对表（矩阵）。我们通过“填表”的方式，逐步找出最佳比对。&lt;/p&gt;
&lt;h3 id="needleman-wunsch算法的步骤一步步填出比对表"&gt;Needleman-Wunsch算法的步骤：一步步填出比对表&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Step 1: 初始化比对表&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;假设我们有两段DNA序列： Sequence1：&lt;code&gt;GATTUACA&lt;/code&gt; 和 Sequence2：&lt;code&gt;GCATTACG&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;我们建立一个比对表，行对应 Sequence1（纵向排列），列对应 Sequence2（横向排列）。&lt;/p&gt;
&lt;p&gt;为了允许“缺口”（gap），第一行和第一列按缺口得分初始化。例如，假设缺口惩罚为-2，初始化如下：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;-&lt;/th&gt;
 &lt;th&gt;G&lt;/th&gt;
 &lt;th&gt;C&lt;/th&gt;
 &lt;th&gt;A&lt;/th&gt;
 &lt;th&gt;T&lt;/th&gt;
 &lt;th&gt;T&lt;/th&gt;
 &lt;th&gt;A&lt;/th&gt;
 &lt;th&gt;C&lt;/th&gt;
 &lt;th&gt;G&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;-6&lt;/td&gt;
 &lt;td&gt;-8&lt;/td&gt;
 &lt;td&gt;-10&lt;/td&gt;
 &lt;td&gt;-12&lt;/td&gt;
 &lt;td&gt;-14&lt;/td&gt;
 &lt;td&gt;-16&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;G&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;A&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;T&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;-6&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;T&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;-8&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;U&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;-10&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;A&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;-12&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;C&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;-14&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;A&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;-16&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Step 2: 填充比对表&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>生物学相似性的追寻</title><link>https://touchingfish.top/2018/sequence-similarity/</link><pubDate>Tue, 24 Apr 2018 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2018/sequence-similarity/</guid><description>&lt;p&gt;在我们身体里，存在着肉眼看不见的&amp;quot;生命代码&amp;quot;——DNA、RNA和蛋白质序列。它们由四种碱基或二十种氨基酸排列而成，看似是简单的字符串，却记录着生命的全部奥秘。&lt;/p&gt;
&lt;h2 id="生命代码的两大主角"&gt;生命代码的两大主角&lt;/h2&gt;
&lt;p&gt;要比对生命序列，首先得搞清楚它们长什么样。DNA序列由A（腺嘌呤）、T（胸腺嘧啶）、C（胞嘧啶）、G（鸟嘌呤）四种碱基组成。RNA将T换成了U（尿嘧啶）。蛋白质序列更为复杂，由20种氨基酸用单字母表示，比如A是丙氨酸，L是亮氨酸。这些字符的排列顺序决定了基因的功能——就像词序决定了句子的意义。&lt;/p&gt;
&lt;h2 id="序列比对的基本概念"&gt;序列比对的基本概念&lt;/h2&gt;
&lt;p&gt;拿到一段陌生的DNA序列，想知道它的作用？最直接的方法是序列比对（sequence alignment）——把它与已知序列对齐，看看两段序列&amp;quot;像不像&amp;quot;。&lt;/p&gt;
&lt;p&gt;相似性背后可能藏着共同的祖先、相似的功能，或进化的痕迹。如果能在已知序列中找到&amp;quot;亲戚&amp;quot;，往往就能推断出它的功能。&lt;/p&gt;
&lt;p&gt;两段序列相似，究竟有多相似？科学家用一套打分体系来量化：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;匹配得分&lt;/strong&gt;：两个位置的字符相同，得分。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;错配惩罚&lt;/strong&gt;：字符不同，扣分。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缺口惩罚&lt;/strong&gt;：需要插入&amp;quot;空白&amp;quot;（gap）对齐时，扣更多分。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;相似度（similarity）指的是两个序列在对应位置上，匹配字符的数目占总长度的百分比。例如两条序列经过比对后：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sequence1: &lt;code&gt;C V H K A T&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Sequence2: &lt;code&gt;C I H K - T&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;有4处一致，1处相似，1处缺口。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;identity = (4/6)*100% = 67%&lt;/li&gt;
&lt;li&gt;similarity = (4+1/6)*100% = 83%&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这套评分系统，让科学家能够快速评估比对结果的优劣。&lt;/p&gt;
&lt;h2 id="打分矩阵的必要性"&gt;打分矩阵的必要性&lt;/h2&gt;
&lt;p&gt;如果说序列比对是解读生命密码的艺术，打分矩阵（scoring matrix）就是它的调色盘。比对比的不仅是字符是否&amp;quot;对得上&amp;quot;，还需要考虑生物学意义——哪些替换是自然界常见的？哪些匹配最能反映进化关系？&lt;/p&gt;
&lt;p&gt;序列比对中的&amp;quot;相似性&amp;quot;并非一概而论。以蛋白质为例，氨基酸的化学性质、功能、结构对其进化替换的频率有重要影响。比如，亮氨酸（L）替换为异亮氨酸（I）相对常见，因为都是疏水性氨基酸。而亮氨酸被替换为带正电的赖氨酸（K）就很少发生，可能破坏蛋白质功能。&lt;/p&gt;
&lt;p&gt;打分矩阵的任务，正是为这些替换赋予合适的分值，使比对结果既符合生物学事实，又有助于后续分析。&lt;/p&gt;
&lt;h2 id="常用的打分矩阵"&gt;常用的打分矩阵&lt;/h2&gt;
&lt;h3 id="pam矩阵"&gt;PAM矩阵&lt;/h3&gt;
&lt;p&gt;PAM（Point Accepted Mutation）矩阵是最早的蛋白质打分矩阵之一。它以&amp;quot;单位进化时间&amp;quot;为基础——1 PAM相当于每100个氨基酸中约有1个发生了可接受的突变。PAM1自乘n次可以得到PAM-n，表示发生了更多次突变。&lt;/p&gt;
&lt;p&gt;PAM矩阵的核心思想是：通过研究近亲物种的蛋白质序列，推测不同氨基酸在进化中的替换频率。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PAM1：适用于非常相似的序列。&lt;/li&gt;
&lt;li&gt;PAM250：适用于亲缘关系较远的序列。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PAM矩阵像一台时间机器，帮我们回溯序列在进化中的替换轨迹。随着PAM数值增加，比对倾向于寻找远亲关系。&lt;/p&gt;
&lt;h3 id="blosum矩阵"&gt;BLOSUM矩阵&lt;/h3&gt;
&lt;p&gt;BLOSUM（BLOcks SUbstitution Matrix）矩阵更关注当前的序列相似性，尤其适用于远亲序列的比对。它通过分析保守序列区块（blocks）中的氨基酸替换频率得出得分。&lt;/p&gt;
&lt;p&gt;与PAM不同，BLOSUM不假设进化模型，而是基于实际观测数据生成。BLOSUM编号代表该矩阵由一致度≥该数值的序列计算而来。例如BLOSUM62是由一致度≥62%的序列计算得出。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BLOSUM62：最常用，适用于大多数情况。&lt;/li&gt;
&lt;li&gt;BLOSUM80：更适合相似性较高的序列。&lt;/li&gt;
&lt;li&gt;BLOSUM45：适合亲缘关系更远的序列。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;简单说，BLOSUM后面数字越小，适合比较的序列相似度越低；数字越大，适合比较的序列相似度越高。&lt;/p&gt;
&lt;h3 id="选择矩阵的原则"&gt;选择矩阵的原则&lt;/h3&gt;
&lt;p&gt;如何选择合适的矩阵？关键在于序列的&amp;quot;亲疏&amp;quot;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;相似序列（近亲）：选择细致的矩阵，如PAM1或BLOSUM80，强调微小差异。&lt;/li&gt;
&lt;li&gt;差异较大序列（远亲）：选择更粗略的矩阵，如PAM250或BLOSUM45，允许更多替换。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一选择直接影响比对结果的敏感性与特异性。近亲需要精确，远亲需要包容。&lt;/p&gt;
&lt;h2 id="如何解读打分矩阵"&gt;如何解读打分矩阵&lt;/h2&gt;
&lt;p&gt;下表为PAM-250矩阵，对角线上的数值为匹配氨基酸的得分。在其他位置上，≥0的得分代表对应的一对氨基酸为相似氨基酸，&amp;lt;0的是不相似的氨基酸。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;A&lt;/th&gt;
 &lt;th&gt;B&lt;/th&gt;
 &lt;th&gt;C&lt;/th&gt;
 &lt;th&gt;D&lt;/th&gt;
 &lt;th&gt;E&lt;/th&gt;
 &lt;th&gt;F&lt;/th&gt;
 &lt;th&gt;G&lt;/th&gt;
 &lt;th&gt;H&lt;/th&gt;
 &lt;th&gt;I&lt;/th&gt;
 &lt;th&gt;K&lt;/th&gt;
 &lt;th&gt;L&lt;/th&gt;
 &lt;th&gt;M&lt;/th&gt;
 &lt;th&gt;N&lt;/th&gt;
 &lt;th&gt;P&lt;/th&gt;
 &lt;th&gt;Q&lt;/th&gt;
 &lt;th&gt;R&lt;/th&gt;
 &lt;th&gt;S&lt;/th&gt;
 &lt;th&gt;T&lt;/th&gt;
 &lt;th&gt;U&lt;/th&gt;
 &lt;th&gt;V&lt;/th&gt;
 &lt;th&gt;W&lt;/th&gt;
 &lt;th&gt;X&lt;/th&gt;
 &lt;th&gt;Y&lt;/th&gt;
 &lt;th&gt;Z&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;A&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;B&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;C&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;12&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;D&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;E&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;F&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;-6&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;9&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;G&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;5&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;H&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;6&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;I&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;5&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;K&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;5&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;L&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-6&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;6&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;M&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;6&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;N&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;P&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;6&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Q&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;R&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;6&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;S&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;T&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;U&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;V&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;W&lt;/td&gt;
 &lt;td&gt;-6&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;-8&lt;/td&gt;
 &lt;td&gt;-7&lt;/td&gt;
 &lt;td&gt;-7&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-7&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;-6&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;-6&lt;/td&gt;
 &lt;td&gt;17&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;X&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Y&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;7&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;10&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Z&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;-5&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-3&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-2&lt;/td&gt;
 &lt;td&gt;-6&lt;/td&gt;
 &lt;td&gt;-1&lt;/td&gt;
 &lt;td&gt;-4&lt;/td&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;打分矩阵的表格看似复杂，但很直观：&lt;/p&gt;</description></item><item><title>出走（DETACH）</title><link>https://touchingfish.top/2018/six-thoughts-of-loneliness/</link><pubDate>Sun, 22 Apr 2018 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2018/six-thoughts-of-loneliness/</guid><description>&lt;p&gt;——读《孤独六讲》（二〇一八年四月）&lt;/p&gt;
&lt;p&gt;书名别致，与我此刻的心境不谋而合：孤独是主动选择出走，而非寂寞。&lt;/p&gt;
&lt;p&gt;似乎因为文体是讲稿，书中频繁引用事例，不乏重复之处。或许正因如此，我这个文学素养平平之人也能从中读出些许滋味。重复看这些不新鲜的故事，我的阅读习惯正是如此，能记住的便是谈资。而蒋先生那些对自身作品的评论，则更像是为凑字数而为，缺乏深度。即使回味，亦发现无味无营养。&lt;/p&gt;
&lt;p&gt;书中的文字虽然不多，但绝大多数句子摘抄出来都可以当签名用，满足了人们对个性化表达的追求。观点看似深刻，实则留白颇多，适合&amp;quot;望文生义&amp;quot;。又像是抛砖引玉，激发读者思考。这与卡耐基的鸡汤有异曲同工之妙，不提供现成的答案，却能启发人们做出选择。&lt;/p&gt;
&lt;p&gt;有人将此书比作鸡汤，但我并未从中汲取到所谓的能量。相反，书中那些直击心灵的片段让我感触颇深。情欲、语言、思维、伦理的孤独，让我不禁想到因为&amp;quot;母亲&amp;quot;的角色，一生被困在家庭中的女性，她们或许都应该有好好享受独处时光的机会。&lt;/p&gt;
&lt;p&gt;&lt;img src="lonliness.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;一直以为，独处是每个人都需要的。独处的时间是和自己的对话，尤其是夜深人静时，任思绪自由驰骋。在这个喧嚣的时代，inner peace 弥足珍贵。真正的孤独远不止于表面，而是情欲的理性思考，语言的颠覆性运用，思维的自由探索，以及对伦理的重新审视。&lt;/p&gt;
&lt;p&gt;年少时，我常以&amp;quot;君子慎独&amp;quot;自勉。然而，儒学&amp;quot;糟粕&amp;quot;的束缚让我难以真正体会到书中所描述之孤独。现代社会，主动选择的疏远是保持内心清明的一种智慧。通过刻意与人保持距离，恰当地把握人际关系，又不失人性的关怀。&lt;/p&gt;
&lt;p&gt;孤独并非消极的孤立，孤独是一种艺术，需要我们用心去体会。它并不是对社交的逃避，而是对自我的一种探索，可以是创造力的源泉，是自我成长的契机。也许学会与孤独相处，才能更好地理解自己。&lt;/p&gt;
&lt;p&gt;孤独，并非退缩，而是进阶。&lt;/p&gt;</description></item><item><title>史学家的回忆录更有沧海一粟之觉悟</title><link>https://touchingfish.top/2018/orient-lee/</link><pubDate>Mon, 12 Mar 2018 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2018/orient-lee/</guid><description>&lt;p&gt;——读《平凡的我》&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;寄蜉蝣于天地，渺沧海之一粟。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="二一八年-一月八日"&gt;二〇一八年 一月八日&lt;/h2&gt;
&lt;p&gt;在书架发现了别人翻看后没有放回书堆里的《平凡的我》，被腰封&amp;quot;民国通俗讲史第一人&amp;quot;所吸引，花时间翻了序言、弁言，遂借书来读。所记前十几节均是童年的事，作者对往事细节居然记得如此清楚让我感到吃惊。当时我正刚开始喜欢上读自传和回忆录，后来才发觉正是这些&amp;quot;记忆&amp;quot;才塑造每个立体的人。&lt;/p&gt;
&lt;p&gt;初读不算有趣，曾经也需要刻意去寻书中能引起我共鸣的片段才读得下去。&lt;/p&gt;
&lt;p&gt;真正第一次触动我的是《扑通一声》，&amp;ldquo;父亲&amp;quot;戒了鸦片，并为了&amp;quot;我&amp;quot;发奋赚钱，他的勇气、毅力和慈爱让我深受感动。他的转变不仅改变了家庭的命运，更让我看到了人性的光辉和生命的韧性。身边没有榜样一直是我个人的遗憾之一。&lt;/p&gt;
&lt;p&gt;晚清与民国时代，人们社会生活各方面的变化也无不在书中的细枝末节处体现。在《搬到旧城头巷去住》中，搬过来和&amp;quot;我&amp;quot;一起住的干姐姐及二表姐（丈夫汪声和）也或多或少地看出时代之不平凡。入党和孙中山对生活在那个时代的人都难以忘记吧。《大师礼赞》写的则是清华国学四大导师（梁启超、陈寅恪、王国维、赵元任）与&amp;quot;我&amp;quot;的渊源。&lt;/p&gt;
&lt;p&gt;平凡如此的有《三角恋的旁观者》。这是件青涩的趣事：&amp;ldquo;他爱她，她爱他&amp;rdquo;，我想大多数人的一生中，应该都经历到过雷同的情节吧。在我看来，本篇似乎也是作者有意展示自己魅力所记吧。&lt;/p&gt;
&lt;p&gt;最近连贯地读下来的是关于&amp;quot;我&amp;quot;留法的记录。留法的执念，作者认为是自己&amp;quot;最错的一次&amp;quot;决定。不顾家人反对，也花光了家人积蓄。求学心切，以致于蒙蔽了眼睛，没有体察家人的辛酸。不过能够全身心地学习，也让非常羡慕。有时候确实是顾虑得太多，并不坏，但也确实让做事情有所拘束。作者留法期间的经历亦感动了我，其治学态度，巴黎大学博士学位最荣誉记名（泰音和古朗希之后）是当之无愧的鼓励 见当时搜集材料之困难，作者尚能有此学术成就，想到现在那些占用着最便利的资源的伪科学家，靠&amp;quot;编材料、凑数据&amp;quot;享受到富裕和名誉，早已麻木，不再思考如何为人类所学所知做贡献。用朋友的话说，果真是&amp;quot;穷则独善其身，达则再善一次&amp;rdquo;。&lt;/p&gt;
&lt;h2 id="二一八年-三月十二日"&gt;二〇一八年 三月十二日&lt;/h2&gt;
&lt;p&gt;黎东方先生已无需多讲，书中别人对他的评价也引用不少，我只写&amp;quot;钦佩&amp;quot;二字。&lt;/p&gt;
&lt;p&gt;第二集渐入佳境，前面几节是在上学期末考试后看的，还没有引人入胜，甚至让我加快了阅读速度。假期来临前，确实容易有着急把书看完的感觉。读书不宜浮躁也是在寒假才深刻懂得的简单道理。&lt;/p&gt;
&lt;p&gt;在后面的篇幅中，不知道该说作者的文学造诣又提高了，还是我的阅读能力进步了一点？章节之间有更多历史知识的科普，故事也讲得&amp;quot;通俗而不俗气&amp;quot;。在第一集中没有被我认可的&amp;quot;民国通俗讲史第一人&amp;quot;在渐渐得到正名。&lt;/p&gt;
&lt;p&gt;印象深刻的有作者在新疆放飞自我，策马奔腾……很有画面感的描写，这种不知是在人前还是人后，孤独前行的心情，似乎让我十分共情。&lt;/p&gt;
&lt;p&gt;看到&amp;quot;我&amp;quot;总能在困窘之时靠史学演讲获得收入，觉得轻易得过分，一种羡慕嫉妒的情绪——难以想象当时的年代和社会，这种在剧院举行的收费演讲竟会有那么多人买单。&lt;/p&gt;
&lt;p&gt;在阅读第一集时对作者治学产生的钦佩之情有增无减。这一集更多是写学成归来以后，漂泊的教育和学术生涯。能深切地感受到他渴望用毕生所学报效祖国，为国家的文史教育事业贡献力量的伟大愿望。&lt;/p&gt;
&lt;p&gt;我希望，读书人都应该有这样的理想。学界的乌烟瘴气中，真正为学为国的人，且能够这么做的也只占少数吧。然而，如此渊博之人，在为人处世未免是有点太过&amp;quot;潇洒&amp;quot;。书中所见，从婚变和枚举不少的与友人的交谈中，作者的待人接物确实也才在慢慢进步。这样看来，当年在外留学，对家里&amp;quot;不闻不问&amp;quot;（并没有察觉真相，坚持完成学业）到底也不算成熟的表现？最精彩的还是书翻到快完的时候，丹妮尔事件的有趣也有情有义，值得反复回味的故事。&lt;/p&gt;
&lt;p&gt;史学家的回忆录更有沧海一粟之觉悟。&lt;/p&gt;
&lt;p&gt;在这段伴随着&amp;quot;我&amp;quot;一生的社会变迁史中，以亲历之平凡小事使读者觉察历史车轮中的时代之不平凡。那些与黎先生结交的人，虽然不是每一个的名讳都如雷贯耳，但也算在学界或政界小有名气，最熟悉莫过于陈立夫和林语堂。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;每一段的开始，林先生都用闽南话说&amp;quot;我告诉你&amp;quot;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;让我疯狂脑补林语堂先生开口闭口的&amp;quot;wā gǎn lī gòn&amp;quot;。&lt;/p&gt;</description></item><item><title>遇见李维（Alchemist of Memory）</title><link>https://touchingfish.top/2018/primo-levi/</link><pubDate>Sat, 27 Jan 2018 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2018/primo-levi/</guid><description>&lt;h2 id="二一七年九月"&gt;二〇一七年九月&lt;/h2&gt;
&lt;p&gt;——读《周期表》&lt;/p&gt;
&lt;p&gt;在看书之前，未曾了解李维（大陆地区好像译作：普里莫·莱维）此人。因为从程先生那借来的书大多是科普读物，我以为这本书会是以介绍化学元素为内容。大概每个第一次看到书名的人都会这样想吧。在学生的印象中，化学元素是冷硬的符号，是课本上枯燥的背诵内容。早在应对考试的生涯中，我们就把这页表刻在脑中，没想过如今它以书籍的面貌出现。出于对化学知识的怀旧，我从先生的柜子中拿出这本书，也开始了这段时间对二战历史奇怪的兴致。&lt;/p&gt;
&lt;h3 id="永恒元素与生命的交汇"&gt;永恒元素与生命的交汇&lt;/h3&gt;
&lt;p&gt;初次翻书，我被导读深深吸引。这几页文字足以在我的脑中刻画出了李维的形象。王浩威先生的语言好像为李维拍下了一张照片——&amp;ldquo;李维用人文的眼神凝视科学，颠覆了几百年在科学与人文的争执中，永远只有科学在打量着人文的处境。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;不知何故，我意外地跳过了第一章《氩》。后来读时，发现第一章提到了过多人物，却不是为了串联成一个完整的故事。这无疑增加了这部作品阅读上的难度。这些人物的小故事有意思但不精彩，像我这种精神怠惰的读者，如果从头看起，可能已经早早放弃了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我所知道的祖先和这些气体有点像。我不是说他们身体怠惰，他们没有能耐如此。他们反而必须相当努力来赚钱养家，以前还有&amp;quot;不做没得吃&amp;quot;的道德信条。但他们的精神无疑属惰性，倾向玄想和巧辩。他们事迹虽然多，但都有静态的共同特点，一种不介入的态度，自动（或接受）被纳入生命长河的边缘支流。这些并非偶然。无论贵重、惰性或稀有，和意大利、欧洲其他犹太族比起，他们的经历贫乏得多。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;平凡家庭又何尝不是如这文中所书。对于&amp;quot;排斥世界&amp;quot;的静态人生，应该是笑之以&amp;quot;无病呻吟&amp;quot;吗？也许我们难以将心比心。然而，对经历过奥斯维辛的李维来说，倒也能从别具一格的遣词造句中看出态度。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;锌虽然很容易和酸反应，但是很纯的锌遇到酸时，倒不大会起作用。人们可以从这里得到两个相反的哲学结论：赞美纯真，它防止罪恶；赞美杂物，它引导变化以及生命。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;受封面上一些文字的引导，我曾一度纠结于书中元素的象征意义，试图将每个元素都对应到李维人生中的某个特定事件或情感。李维在书中频繁地穿插家族故事、历史事件和虚构寓言，这使得叙事结构显得有些散漫。有时，我很难将这些看似不相关的片段联系起来。若这些元素是&amp;quot;人生象征&amp;quot;，我倒也可以选择相信每篇作品的寓意与元素的性质应是相关的。&lt;/p&gt;
&lt;p&gt;或许是我在化学元素的了解并不深刻，&lt;/p&gt;
&lt;p&gt;或许是化学本身无法回答这些问题，&lt;/p&gt;
&lt;p&gt;或许是这种一一对应的解读本就过于局限。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我穿上自己最好的西装，想着最好是把脚踏车留在一条街之外，让他们以为我坐计程车来的。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;化学元素在周期表中并非孤立存在，它们之间存在着复杂的联系和相互作用。这本书的巧妙之处正在于，并没有将元素简单地作为一种&amp;quot;充满诗意的人生象征&amp;quot;，而是借用元素的周期性，想要表达人生的循环往复、生命的脆弱与坚韧。一厢情愿地寻找解释并非必要。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;化学教你要克服、忽略某些不必要或天生的禁忌。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;在书中，李维已道出了《周期表》成书的原因：&amp;ldquo;我正在收集「事件」，我的或别人的，写进书里，看能否让世人了解我们这行的痛苦滋味，也是生活滋味的反映。&amp;ldquo;见微知著，我想，书中所表达的，不仅是对科学的热爱，更是对生命的思考和对人性的关怀。于是在了解这些&amp;quot;滋味&amp;quot;的时候，看到了李维身上&amp;quot;奥斯维辛&amp;quot;的阴影。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;它们让你有无力感，不长进的感觉，不是吗？觉得是在和一个迟钝、缓慢，但在数量和体积上都吓人的敌人做永无休止的战争，年复一年，一个接一个。只在敌人偶尔有空当时，你才能狠狠一击获得短暂胜利，得到一点安慰。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;李维用化学元素作为载体，将那段黑暗历史的伤痛转化为文学的永恒。&lt;/p&gt;
&lt;p&gt;这是一个化学家对物质世界的探索，也是一个幸存者对生命意义的深沉思考。&lt;/p&gt;
&lt;h2 id="二一八年一月"&gt;二〇一八年一月&lt;/h2&gt;
&lt;p&gt;——读《被淹没的和被拯救的》&lt;/p&gt;
&lt;p&gt;在&amp;quot;德国史&amp;quot;的书架上，原想看看关于二战的记载，无意中看到李维的作品，想到与手里的《周期表》是同一作者，又深陷于对这段历史的好奇，于是把这本被称为&lt;strong&gt;李维生前最后一本重要作品&lt;/strong&gt;的书借回来。书到手时，《周期表》还没有读完。之后迫不及待地开始翻阅，在国庆期间和假后几天一口气看完。因为没完成读书笔记，所以迟迟未将书还给图书馆。直到次年一月，尝试回忆读书的历程，完成这篇补记。&lt;/p&gt;
&lt;h3 id="在记忆的迷宫中寻找真相"&gt;在记忆的迷宫中寻找真相&lt;/h3&gt;
&lt;p&gt;导读和序言已经勾勒出了一幅黑暗的画卷。整本书弥漫着浓重的阴影，让人感到压抑沉重。&lt;/p&gt;
&lt;p&gt;集中营的极端环境扭曲了人的感知，幸存者们对过去的回忆常常是支离破碎、模棱两可的。他们试图拼凑起那段噩梦般的经历，却发现记忆就像流沙，越是想抓住，越容易滑落。这种记忆的模糊性，不仅给幸存者带来了心理上的折磨，也为历史研究带来了巨大的挑战。&lt;/p&gt;
&lt;p&gt;李维对记忆的模糊和模式化的描述，让我深有共鸣。我时常会把自己的臆想当作记忆，记忆会因时间而模糊，会因不愿相信这样的现实，而被想象力朝着更能够被接受的方向&amp;quot;篡改&amp;rdquo;。这种记忆的模糊可以归因于多种因素：心理防御机制、时间的流逝，还有语言的局限性。&lt;/p&gt;
&lt;p&gt;李维以冷静客观的笔触，记录下了这段黑暗历史的残酷现实。他明白，完全还原历史的真相是不可能的。即使是最详尽的记录，也无法完全捕捉到那段历史的复杂性和多样性。因此，他选择了用文学的方式来表达自己的感受和思考。通过文学，他不仅记录了历史，更表达了对人性的深刻思考。&lt;/p&gt;
&lt;h3 id="人性的善恶模糊不清"&gt;人性的善恶模糊不清&lt;/h3&gt;
&lt;p&gt;在极端的环境下，善恶的界限变得模糊不清。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;正义的人有责任通过战争去消灭所有不应存在的特权。但我们不能忘了，这样的战争是永无休止的。当权力被少数人（甚至一个人）所掌握去奴役大多数人时，特权就会出现，并滋生蔓延，甚至违背权力的本意。从另一方面来说，权力通常纵容和鼓励特权。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;幸存者之间产生隔阂，出现相互算计的现象。眼看着身边的罪行，任其蔓延而成为凶手的同谋。以冷漠的方式自保，这种&amp;quot;同谋&amp;quot;式的沉默，无疑是对人性的巨大讽刺。&lt;/p&gt;
&lt;p&gt;受害者为了生存，不得不做出一些违背良心的选择。自私让机会没有被分享，交流的障碍也因此产生。反过来又减轻了加害者的罪恶感，形成了一种扭曲的道德循环。&lt;/p&gt;
&lt;p&gt;加害者也并不是一群完全丧失人性的人。在特定的历史环境下，他们选择性地泯灭良知和情感，成为了暴行的执行者。&lt;/p&gt;
&lt;p&gt;李维的叙述细腻，论证严谨，语言精炼，但字里行间透露出深沉的悲哀。这本书中，他以更加冷静客观的视角，深入探讨了记忆的欺骗性、暴力的本质，极端环境的生存法则和心理变化。书至最后章节，对信件的回复击碎了李维此前建立起来的冷静形象。他用更加直接、强烈的方式，表达了作为一个幸存者的愤怒与悲痛。这些真实的情感，也让我心中的李维更加血肉丰满。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;生活的目标是对死亡最好的防御，这不仅适用于集中营的生活。&amp;ldquo;历史的伤痕是无法轻易抹去的，而对人性的探索是一个永无止境的旅程。&lt;/p&gt;</description></item><item><title>咖啡与音乐</title><link>https://touchingfish.top/2018/coffee-and-music/</link><pubDate>Fri, 19 Jan 2018 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2018/coffee-and-music/</guid><description>&lt;p&gt;最近在读，一本关于咖啡，一篇关于音乐。原本风马牛不相及的文字，读罢竟然有种奇妙的共振在胸腔里隐隐作响。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“对于咖啡，我们完全可以不管那是哪一个国家的出产，只要我们喜欢，享受就是了。但倘使我们熟知这些典故趣闻，且在品咖啡时娓娓道来作为谈资以增雅兴的话，无疑又是一种物质之外的绝妙享受。无论如何，拒绝享受时不对的。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这话读来舒服。舒服在于它的“不强求”——既不逼你成为咖啡学究，也不阻止你享受那杯中物。可仔细咂摸，又觉得哪里不对劲。享受便享受，为何非要“娓娓道来”才显得“绝妙”？说到底，还是文人那点虚荣心在作祟，仿佛不抖落些典故，这咖啡就白喝了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“在我们这样一个有着悠久的嗜茶传统的国度里，人们对咖啡的了解实在很少，倘使有机会得知多一些咖啡的知识，以帮助你更好地享受咖啡，为什么不呢？”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;没有居高临下的说教，只是一个读书人的善意提醒。但“更好的享受”几个字，细想之下颇为吊诡——难道不知道咖啡产地和烘焙程度的，就不配享受一杯咖啡了吗？知识这东西，有时是阶梯，有时是负担。把它端到“时尚”的高度供着，反而离生活远了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“倘使你并不是咖啡烘焙师或者咖啡馆老板，最好以一种欣赏和享受的态度去调制咖啡和饮咖啡。就算你在咖啡馆面对决定你公司生死大事的客户，也不要太过紧张。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;“处大变而不惊是人们最欣赏的一种气度”——说这话的人，怕是经历过不少“大事”的。一个能在咖啡馆里保持从容的人，不是故作镇定，而是真的把咖啡当回事了。不浪费一滴好咖啡，是尊重杯中物，更是对自己的尊重。&lt;/p&gt;
&lt;p&gt;至于后面那番关于“时尚”的议论，读来颇有些自嘲的意味。作者显然对“时尚人士”这个标签有些不自在，急着要撇清自己。我倒觉得大可不必。喜欢咖啡不是罪，被人视为“时尚”也不是骂人的话。真正累的，是明明喜欢，却要假装不喜欢；或者明明不喜欢，却要假装喜欢。&lt;/p&gt;
&lt;p&gt;聊完咖啡，再看音乐。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“在录音技术尚未发明的年代，音乐的传播尚处在当面或当众演奏或演唱的阶段，音乐欣赏具有小众化的特征。而随着录音技术、记录介质和播放设备的发明、创造、生产和逐渐普及，尤其是音乐作品可以通过广播电视等大众传媒传播后，情况就发生了根本性的改变，欣赏音乐呈现出了大众化的特征——不再存有所谓的底层世俗和宫廷、贵族的趣味和气息，而是为大众所共享。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这是技术改变文化的绝佳注脚。录音技术让音乐从“此时此地”走向“随时随地”，门槛降低了，壁垒消融了。可作者接下来笔锋一转，开始探讨“音乐欣赏层次”，这就有意思了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“这种立体思维，就不仅仅是钻在旋律是否好听、歌词能否引发共鸣的人所具备的了。这种立体思维的好处是，能统领和驾驭音乐的神髓，宏观地、全方位地、多维度地审视音乐本身，理性地借鉴和吸纳其创作手法和养料，继而为我所用。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;“立体思维”——这个词用得漂亮。但我更喜欢后面那句：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“对非音乐专业但同样具备理性的欣赏能力的人来说，不懂和声、对位、复调、配器等未见得是一件痛苦的事。相反，他们能调集自己的生活经历和人生阅历，统括自身的专业特长，融会贯通，在同一个高度感知和生发音乐欣赏的理性光芒。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这是对“专业门槛”的一次温柔拆解。不会画画的不影响欣赏画作，不懂乐理的难道就不能听音乐了？人生阅历本身就是最好的鉴赏力。这话让那些“五音不全”却热爱音乐的人，总算可以理直气壮一回了。&lt;/p&gt;
&lt;p&gt;咖啡与音乐的关系，大概都是“享受”二字。&lt;/p&gt;
&lt;p&gt;但享受从来不是坏事。拒绝享受才是。&lt;/p&gt;
&lt;p&gt;问题是，我们享受的到底是什么？是那杯咖啡本身，还是端起咖啡杯时自我感觉良好的那点姿态？是音乐本身，还是“在听巴赫”带来的那点优越感？&lt;/p&gt;
&lt;p&gt;这个问题，我想了很久。&lt;/p&gt;
&lt;p&gt;后来想明白了——管它呢。咖啡好喝，音乐好听，就够了。那些“典故趣闻”、“立体思维”，是锦上添花的东西。有，固然好；没有，也不妨碍我们成为理直气壮的爱好者。&lt;/p&gt;
&lt;p&gt;毕竟，活着已经够累的了。&lt;/p&gt;</description></item><item><title>海洋文化与潮汕（SWATOW）</title><link>https://touchingfish.top/2017/swatow-culture/</link><pubDate>Sat, 09 Dec 2017 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2017/swatow-culture/</guid><description>&lt;h2 id="2017年11月22日读中国海洋文化与潮汕"&gt;2017年11月22日读《中国海洋文化与潮汕》&lt;/h2&gt;
&lt;p&gt;有幸读到先生著作，确是奇缘。过目的书越多，越觉得自己见识之短浅。作为一个汕头人，对潮汕文化的了解却少得可怜，说来实在惭愧。机缘巧合，在书架上撞见此书，翻阅数日，感慨系之。本想回汕时若能拜见讨教，岂不是一桩美事？一番了解后，方知先生已与世长辞，百感交集。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;流动导致开拓进取精神。海洋文化主要是面对人与自然的矛盾，而人在自然面前是平等的，决定命运的是自己的努力。在大海的风浪面前，如果退缩、投降，只有死亡。恶劣的自然环境培养了拼搏精神。潮汕人碰上杨白劳的境遇绝不会自杀，他们认为：既然连死的决心都有，要么就拼个你死我活，要么就下南洋，远走高飞。乘红头船在大海山飘荡，九死一生，本身就是一场生存的拼搏。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;大陆文化追求的是“寿终正寝”，海洋文化追求的则是“过把瘾就死”。有一个寓言很能说明这两种观念的不同。一位农夫问一个预付：“你的爷爷死在哪里？父亲死在哪里？”渔夫说：“我的爷爷和父亲都死在海里。”农夫说：“那你为什么还敢到海里去？”渔夫没有正面回答，反问道：“那末，你的爷爷和父亲死在哪里呢？”农夫自豪地回答：“他们都死在家里。‘渔夫不解地问：”那你怎么还敢待在家里呢？“&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我猜他喜欢“死在海里”这个寓言——农夫与渔夫的对话，看似荒唐，细想却哑口无言。我们总以为“在家里”比“在海里”安全，其实都是各自的舒适区罢了。潮汕人敢往外跑，不是因为不怕死，是因为怕穷。这年头，怕穷比怕死更需要勇气。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“德行”是评价人的一个标准。唐朝的张九龄说过：“货贿为贤所贱，德行为贤所贵。“可见贤者重视的也就是这个道德的评价。其实”德“与”行“是两个方面的事。”德“是道，是”行“的思想基础；”行“是表，是”德“德外化。潮汕女人可谓是”德行“兼备、现实的楷模。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;潮汕姿娘“德行”兼备，楷模——这种词太重了，压得人喘不过气来。女人也是人，何苦非要做楷模？&lt;/p&gt;
&lt;p&gt;书读不完。几个片段，记住了。先生客居潮汕尚能观察入微，起草成书，传承于世，乃潮学之幸，潮人之幸。先生仙逝，桃李含悲。今日所言，语无伦次，难表缅怀与景仰之情，愿先生往生极乐。&lt;/p&gt;</description></item><item><title>About</title><link>https://touchingfish.top/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://touchingfish.top/about/</guid><description>&lt;p&gt;更新于：2026年5月&lt;/p&gt;
&lt;p&gt;Email: &lt;a href="mailto:voice0617@live.com"&gt;voice0617@live.com&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="关于我"&gt;关于我&lt;/h3&gt;
&lt;p&gt;我是一个在不断整理经验、尝试连接自身能力与现实需求的工作者。没有传统意义上的职业主线，而是一步步在现实中积累技能、校准方向，并在反复实践中认识到：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不是所有人都适合快速归位于某个职位名下，但每个人都有可以提供的价值&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读圣闲书，做白日梦，
开青白眼，说风凉话。&lt;/li&gt;
&lt;li&gt;时常天马行空，
偶尔深思熟虑。&lt;/li&gt;
&lt;li&gt;太阳金牛，月亮水瓶，
上升天蝎，群星三宫。&lt;/li&gt;
&lt;li&gt;愿世界和平健康，
祝祖国早日统一。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从一个冷门专业到另一个冷门专业，我并没有感受到任何专业跨度的困扰。这些转变均是在每一个阶段中，发现自己理解能力和兴趣所在后，所作出的理性选择。应试能力一般，但从来没有为&amp;quot;挂科&amp;quot;担心过成绩。&lt;strong&gt;排名是奖学金守门员，似乎还擅长科研&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;我正在寻找一种职业方式，它可以不是理想岗位，但希望与有耐心、支持型、尊重现实节奏的组织建立合作。虽然曾长期处于&amp;quot;科研边界角色&amp;quot;中，但只要是在一个可以稳定发挥的结构中，从基础做起，我愿意接受。&lt;/p&gt;
&lt;p&gt;如果你正在寻找这样的人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;技术型但不固执，理解但不越位；&lt;/li&gt;
&lt;li&gt;能帮你把零散资料变成干净结果；&lt;/li&gt;
&lt;li&gt;做事节奏稳定，不内卷但也不脱离责任；&lt;/li&gt;
&lt;li&gt;有一定分析能力，能独立处理中低强度任务；&lt;/li&gt;
&lt;li&gt;对外界变化敏感但不焦虑，能适应缓慢的组织节奏；&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那我也许是一个合适的合作者。&lt;/p&gt;
&lt;h3 id="泉州师范学院---工科学士--海洋技术"&gt;泉州师范学院 - 工科学士 · 海洋技术&lt;/h3&gt;
&lt;h4 id="2015年9月---2019年6月"&gt;2015年9月 - 2019年6月&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;掌握海洋生物技术和海洋科学的基础理论、基本知识和基本技能，具有海洋生物高新技术应用、研究和开发能力，具备创新创业意识、终身自主学习，能适应独立和团队工作环境的应用型人才。能够在海洋生物资源调查和开发利用、水产养殖、海洋环境监测管理和保护、海洋新技术研发等领域，从事科研、教学、管理及技术研发工作。（引自院系培养目标）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;师生双方都在共同努力实现院系培养目标，但海洋生物相关专业的社会需求有限，认可程度一般。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我上了一年大学，还是不知道自己在大学里将学到什么，也不知道我们专业是干什么的，于是&lt;a href="../../2019/my-mentor-sd-tsen/"&gt;拜师&lt;/a&gt;来自国立阳明大学的程树德先生，跟着他养日本鳗鱼。&lt;/p&gt;
&lt;p&gt;&lt;a href="../../2021/the-ways-of-eel/"&gt;养鱼&lt;/a&gt;考验的是对动物生理学的理解，需要解剖、打针、手术、组织切片和细胞观察等。跟这些湿实验工作打交道两年，（说来可笑）最终因为学院不再给我们的老师提供实验室而不了了之。&lt;/p&gt;
&lt;p&gt;功能基因组学是当时很时尚的研究方向，毕业论文转向生物信息学，成为我开始写代码的契机。生物学没错过那几年&amp;quot;大数据&amp;quot;的风口，高通量测序炙手可热。浅尝机器学习之后，我还是以服务于毕业为目标，专研了一段时间的转录组学。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="../../2019/anguilla-japonica-deg-analysis/"&gt;日本鳗鲡&lt;em&gt;Anguilla japonica&lt;/em&gt;在盐度适应下的转录组分析&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工作内容&lt;/strong&gt;: 领导关于分析流程、结果解释的课题组内部讨论，并起草了最终论文。
&lt;ul&gt;
&lt;li&gt;通过逐渐增加养殖池中的盐度，模拟日本鳗鲡的海洋迁移条件。&lt;/li&gt;
&lt;li&gt;从大脑、性腺和胸鳍组织中收集RNA测序样本。&lt;/li&gt;
&lt;li&gt;进行转录组下游分析，鉴定差异表达基因，基因功能注释和系统发育树构建。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;日后看来，本科师承的学术教育足够应付末流211的全日制硕士学位。&lt;/p&gt;
&lt;h4 id="2017年3月---2018年7月"&gt;2017年3月 - 2018年7月&lt;/h4&gt;
&lt;p&gt;不幸有一段没有任何成果拿得出手的&lt;a href="../../2019/entrepreneurship-game/"&gt;支线经历&lt;/a&gt;。我们是一支跨学院的创业团队（后注册为公司），成功人士毕业后直接去给创业公司当CTO了，同为唯二负责技术的成员，我纯抱大腿（希望你能理解是自谦）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;技术推广&lt;/strong&gt;：通过策划项目路演、技术沙龙等，执行3D打印、无人机、云服务器等前沿科技推广活动，深入研究并实践主流3D打印机FDM技术，独立解决多个实验性功能部件在打印过程中的翘边、层纹等常见结构问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;校企对接&lt;/strong&gt;：协助大学生创业孵化基地的建设与推广，负责创业团队的协调沟通、意向跟进、需求反馈等，通过问卷调查等形式，收集和分析运营数据。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但如果没有这个创业游戏，我毕业时也许是一个只懂一点「生命科学」杂交「海洋科学」无聊的人。英语六级、计算机国二、考研，三重经典无趣大学生 buff 叠满。&lt;/p&gt;
&lt;h3 id="汕头大学--海洋研究所广东海洋生物技术重点实验室"&gt;汕头大学 · 海洋研究所（广东海洋生物技术重点实验室）&lt;/h3&gt;
&lt;h4 id="2019年6月---2021年7月"&gt;2019年6月 - 2021年7月&lt;/h4&gt;
&lt;p&gt;研究生报的是家门口的大学，初试第3，毕业后直接报到上班。&lt;/p&gt;
&lt;p&gt;真到快开学的时候，忍受不了&lt;a href="../../2019/farewell/#%E5%AE%B6%E9%97%A8%E5%8F%A3%E7%9A%84%E5%A4%A7%E5%AD%A6"&gt;toxic PI issue&lt;/a&gt;就drop out了，临走前交了一篇论文草稿。现在还是只想引用简历上较为官方的描述来呈现这段经历：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;论文发表&lt;/strong&gt;: &lt;a href="https://www.frontiersin.org/journals/marine-science/articles/10.3389/fmars.2021.658091/full"&gt;《Frontiers in Marine Science》, 2021年&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;项目描述&lt;/strong&gt;: 结合 PacBio 三代单分子长读长测序和 Illumina 二代测序技术，构建青蟹&lt;em&gt;Scylla paramamosain&lt;/em&gt;雌雄性腺发育全长转录组&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工作内容&lt;/strong&gt;: 生物信息学、试验设计和数据分析
&lt;ul&gt;
&lt;li&gt;进行下游分析，如&lt;a href="../../2021/alternative-splice-algorithm-cn/"&gt;可变剪接（AS）&lt;/a&gt;和差异基因表达（DEG）鉴定。&lt;/li&gt;
&lt;li&gt;设计并执行了qPCR和RT-PCR实验，以验证测序结果。&lt;/li&gt;
&lt;li&gt;负责RNA提取和样本制备。&lt;/li&gt;
&lt;li&gt;参与了数据可视化和手稿起草。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;遗憾的是，这里的同门都是极好的伙伴，如果不是我内向又慢热，本来可以成为好朋友。平时看到他们在朋友圈互动，加入不了，只是羡慕。&lt;/p&gt;</description></item></channel></rss>