Skip to content

生命历程中的马尔可夫链模型(一):从通用模型到社会人生轨迹的科学分析工具

· 40 min

一、马尔可夫链模型是干什么的?#

我们每天的生活其实就像在“状态之间跳来跳去”。今天你在“上班”,明天可能在“休假”,未来可能“退休”;一个人从“单身”变成“已婚”,又可能“离婚”或“再婚”。这些“状态”与“转换”,就是生命历程研究中最核心的对象。

马尔可夫链模型(Markov Chain Models),正是一个能够描述“状态如何变来变去”的数学工具。它广泛应用于很多领域,不只是社会科学。比如,下面的表格是其他领域中的马尔可夫链应用例子,你可能听过但不知道是马尔可夫链:

领域应用场景举例说明
自然语言处理模拟语言生成、拼写纠正句子中下一个词的概率取决于前一个词(如“我爱→你”的概率高,“我爱→它”次之)
金融建模股票价格状态变化股市从“上涨”转为“下跌”或“持平”的概率
生物学DNA序列建模一段基因中“A”后最可能是“G”或“T”?
天气预测状态间转移今天晴,明天雨的概率是多少?
工程可靠性系统健康状态演变一台机器从“正常”变“故障”再到“维修中”

这些模型的共通点:用一组“状态”和“转换规则”,来简洁描述复杂世界的动态行为。

根据定义:

马尔可夫链模型是一个 stochastic process model describing transitions between states over time。 翻译为中文就是: 一个描述“状态随时间转移”的 随机过程模型

那什么是“随机过程”呢? “随机”(stochastic)是什么意思?

“随机”指的是模型中包含不确定性和概率,不是每次都给出一个确定的结果,而是:

你只能说“可能发生什么”以及“它发生的概率是多少”。

这与“确定性模型”不同,后者每次输入一样,输出一定是一样的。

举个简单的例子:

一个状态从“就业”转向“失业”的概率是 0.2 意思不是说“它一定会失业”,而是: 每一次模拟,它有 20% 的机会进入失业状态,80% 的机会留在原状态或转向别的状态。

因此,每次运行这个模型,可能得出不一样的路径,这就是“随机性(stochasticity)”。

💡 术语说明:什么是 stochastic? 在本教程中,我们多次提到“stochastic process”(随机过程)。 它的意思是:模型中包含“概率”和“随机性”,不是每次都会得出相同结果。 举个例子:你从“就业”状态出发,有 10% 的概率下一年失业,90% 的概率继续工作。每次模拟,走向哪个状态是“抽签”的结果。 这不同于“确定性模型”,后者的输出是唯一的、可预测的。

二、那么,生命历程研究中的马尔可夫链有什么特别?#

生命历程研究通常分析一个人从青少年到老年之间,在多个社会状态之间的演变

和其他领域相比,它有几个独特的特征

特征说明与其他领域的区别
状态含义复杂社会状态往往多维(比如“已婚+就业”)不是像天气那样简单离散
时间顺序重要年龄、历史路径对结果有影响股票价格可视为无记忆过程,但人在社会中会积累经验或标签
数据来源不确定来源于调查、追踪研究,可能有遗漏或观测误差不像基因序列那样“精确”
状态不可见时多心理状态、社会归属等是“隐状态”类似生物或语言模型的隐马尔可夫模型
研究目标多样不只是预测,更关注解释、干预社会学关注因果机制、群体差异、政策效果

三、生命历程研究中常见的马尔可夫模型#

1. 最基础:离散时间齐次马尔可夫链(Discrete-Time Homogeneous Markov Chains)#

2. 基于随年龄变化的转移概率矩阵:非齐次马尔可夫链(Non-Homogeneous Markov Chains)#

3. 连续时间马尔可夫过程(Continuous-Time Markov Processes)#

4. 多状态寿命模型(Multi-state Life Table)#

5. 隐马尔可夫模型(Hidden Markov Model, HMM)#


四、非常重要的概念:状态转移#

在生命历程研究中,状态转移概率是模型的核心参数,但这些概率不是凭空而来的

在生命历程研究中,状态转移概率主要来自追踪调查数据的频率估计或统计模型推断, 也可以借用已有文献或进行理论设定,具体方式要看你的研究目的和数据条件。

根据研究目的和数据类型,它们通常来自以下四种来源:

1️⃣ 从追踪(纵向)调查数据中直接估计#

这是最常见、最直接的方法。

数据类型:

怎么估?

对于离散时间马尔可夫链来说,转移概率可以按经验频率估计

P(状态A → 状态B) = 从A转到B的人数 / 当前处于A的人数

举例:

100个就业者中:

  • 80人下一年仍就业
  • 15人失业
  • 5人退休

→ 构建一行转移概率:[0.15, 0.80, 0.05]

2️⃣ 通过生存分析/事件历史分析模型间接获得#

有时数据太稀疏,不能直接算频率,或我们想控制变量影响(性别、教育等),那就用统计建模。

常见方法:

这些方法能输出“不同状态转移的概率或风险”,再用来构造转移矩阵。

特点:可控制变量,结果更稳健,也可用于模拟


3️⃣ 从已有研究/官方统计数据中获取(secondary data)#

有时候我们自己没有调查数据,但已有研究或统计年鉴有:

用这些已有数据可以做模拟研究、政策情境测试等,但要注意:

4️⃣ 从专家设定或理论假设中“构造”(建模/仿真用)#

当你做理论模型、机制模拟、政策演练时:

这种方式广用于:

虽然不是实证估计,但对“政策干预演练”非常有用。

不同来源的对比总结:

来源精确度控制变量适用场景优势局限
1. 追踪数据频率估计描述性分析简单直观无法控制混杂因素
2. 生存/回归模型中高推断、解释性分析可加变量,结果稳健模型设定依赖强
3. 现有文献或统计表仿真、参考用无需收集数据与目标样本可能不匹配
4. 理论/专家假设-情景演练、理论建模灵活、适合模拟非经验数据、可争议性高

五、我们从哪里开始?最基础的模型:离散齐次马尔可夫链#

设定: 我们将生命周期划为若干“年龄段”,每段可能处于某状态,比如:

核心假设

举个例子:就业路径转移矩阵#

当前\明年未就业就业退休
未就业0.50.40.1
就业0.10.80.1
退休001

含义:

例子讲解:小王的就业人生#

假设小王20岁时是“未就业”,我们可以模拟他未来10年可能的状态路径:

import numpy as np
P = np.array([[0.5, 0.4, 0.1],
[0.1, 0.8, 0.1],
[0.0, 0.0, 1.0]])
states = ['未就业', '就业', '退休']
current_state = 0
np.random.seed(1)
path = []
for year in range(10):
path.append(states[current_state])
current_state = np.random.choice([0,1,2], p=P[current_state])
print("小王的模拟路径:", "".join(path))

我们运行的这段代码实际上做了下面这件事:

  1. 初始状态是“未就业”(索引为0)
  2. 使用预设好的状态转移矩阵 P,每一年“随机抽样”一次,看小王的下一步状态是什么
  3. 连续执行10年,得出一个“模拟路径”

例如输出可能是(因为我们用了 np.random.seed(1) 固定了随机数):

小王的模拟路径:未就业 → 就业 → 就业 → 就业 → 就业 → 退休 → 退休 → 退休 → 退休 → 退休

这表示:

这个过程本质上是:生成一条可能的生命历程轨迹


六、那马尔可夫模型到底是“模拟工具”还是“解释工具”?#

马尔可夫模型最初是一个模拟工具#

它用于:

在我们这个“小王模拟”中:

但它也可以作为解释模型或统计模型来用,类似回归#

如果我们反过来说:

“我有1000个人,跟踪了他们10年的就业数据,我想估计状态转移概率矩阵,并且看看‘性别’、‘教育水平’是否影响转移概率。”

这时候我们不再已知P,而是:

这就是马尔可夫模型作为解释工具(explanatory model)的应用。

类比回归模型:它们的异同点

特征回归模型马尔可夫模型
预测什么?一个数值(如收入、概率)一个状态的转移(路径)
核心机制因变量 = 自变量 × 系数 + 误差转移概率取决于当前状态,可能也依赖特征
是否考虑时间动态?一般不考虑,除非是面板数据专门研究随时间的状态变化
可否加入解释变量?✅(如条件马尔可夫模型、logit转移建模)
模拟功能强吗?不强,回归结果通常用于静态推断✅ 很强,可以生成未来轨迹

那我们啥时候用回归?啥时候用马尔可夫?

问题类型推荐工具
“大学学历是否影响收入?”回归模型(cross-sectional or panel regression)
“人从就业→失业→退休的路径是怎样的?”马尔可夫链(模型路径)
“我想模拟未来10年中国青年的婚姻状态结构”马尔可夫模型(模拟 + 群体层演化)
“哪类人更可能在失业后重新就业?”马尔可夫 + 回归结合(条件转移建模)

总结一句话:

马尔可夫模型既是模拟工具,也是解释工具。 它可以用来生成状态路径(forward simulation),也可以用来解释哪些因素影响转移概率(statistical inference), 它是社会科学中的“时序版回归”+“预测引擎”

七、解释一些重要概念#

吸收状态(absorbing state)#

定义: 在马尔可夫链中,如果某个状态一旦进入就不会再离开,那么它被称为吸收状态

用公式表示就是:

如果某状态 s 满足: P(s → s) = 1P(s → 其他状态) = 0, 那么 s 是一个吸收状态。

举个生活中的例子:

状态含义吸收吗?
在职正常工作
失业暂时失业
退休永久退出劳动市场✅ 是吸收状态(不回来了)
死亡✅ 也是吸收状态(…)

看我们之前的转移矩阵:

P = np.array([[0.5, 0.4, 0.1], # 未就业
[0.1, 0.8, 0.1], # 就业
[0.0, 0.0, 1.0]]) # 退休 ← 你看这一行!

说明:

所以 “退休” 是一个吸收状态

吸收状态的意义

  1. 状态不可逆:模拟路径将“终结”于此
  2. 重要的生命周期节点:如死亡、退出系统、永久改变身份等
  3. 模型中止标记:帮助判断路径“何时结束”
  4. 多状态寿命分析中常用:比如从健康 → 生病 → 死亡,其中“死亡”是吸收状态

你还可以定义多个吸收状态,比如:

小结

吸收状态指的是“一旦进入就不会再离开的状态”, 是马尔可夫模型中用来表示终点、不可逆事件的核心工具, 就像“退休”、“死亡”、“退出市场”这样的人生阶段。

参数估计#

参数这个问题非常关键,涉及到我们是否把马尔可夫链模型当作一个统计模型来用。马尔可夫链模型的“参数”是什么?简单说:

参数 = 状态转移概率

比如你有3个状态:

你要建的模型需要知道,从任何一个状态出发,到下一个状态的概率是多少,也就是状态转移矩阵(P):

当前状态 \ 下一状态未就业就业退休
未就业 (U)p₁₁p₁₂p₁₃
就业 (E)p₂₁p₂₂p₂₃
退休 (R)001

每一行表示“当前状态”的出发点,每个元素就是一个参数,表示“转移到某状态的概率”。

这些参数来自哪里?#

如果你只是“模拟”(不做统计),这些参数是你事先指定的#
P = np.array([[0.5, 0.4, 0.1],
[0.1, 0.8, 0.1],
[0.0, 0.0, 1.0]])

这时候,它就是一个“确定性模型”:你告诉它转移概率是多少,它照做。

如果你想“从数据估计”模型(像回归一样),这些参数就变成了统计参数,要通过最大似然估计(MLE)或贝叶斯方法估出来。#

比如:

给你1000个人的追踪数据,观察了他们从“就业”到“失业”或“退休”的频率

你就可以根据频率来估算这些转移概率:

p₂₁ = (就业 → 未就业的次数) / (当前是就业的总次数)

这时,马尔可夫模型就变成了一个有“待估参数”的统计模型

三、如果引入个体特征,那参数会更多#

在条件马尔可夫模型中:

p_ij 会变成个体特征 X 的函数:

logit(P(就业 → 退休)) = β₀ + β₁·性别 + β₂·学历 + ...

这时你的模型中就不止有“转移概率”这个参数了,还要估一堆β系数,就像逻辑回归那样。

四、小结一下有哪些“参数”类型

参数类型含义示例
状态转移概率 P(i→j)基本马尔可夫模型核心参数就业→失业 = 0.1
个体特征影响系数 β条件马尔可夫模型中的解释变量β₁ = 女性对退休概率的影响
状态停留时间参数(λ)连续时间模型中控制“等待时间”的分布参数平均失业时间 = 1/λ
隐状态转移/观测参数隐马尔可夫模型中隐藏链与观测值之间的关系状态1→状态2 概率,状态1输出”健康”的概率

所以说:

是的,马尔可夫链模型是有参数的模型, 最基础的是转移概率,进阶模型则可能包括解释变量的系数、时间分布参数、观测模型参数等。

齐次和非齐次马尔可夫链#

什么是“齐次”(Homogeneous)马尔可夫链?#

定义: 如果一个马尔可夫链的转移概率不随时间(或年龄)变化,也就是说 每一步的转移规则都是一样的,那么我们称它是“齐次的”(homogeneous)。

举例: 无论现在是第1年还是第10年,从“就业”到“失业”的概率都是 0.2,这就是“齐次”。

P(第1年就业 → 第2年失业) = 0.2
P(第10年就业 → 第11年失业) = 0.2

简单说:转换规则恒定不变,就叫“齐次”(Homogeneous)。

什么是“非齐次”(Non-Homogeneous)马尔可夫链?#

定义: 如果马尔可夫链的转移概率会随时间、年龄或其他变量发生变化,我们称它是“非齐次的”(non-homogeneous 或 time-inhomogeneous)。

比如,年龄越大,退休概率越高:

P(25岁就业 → 退休) = 0.01
P(60岁就业 → 退休) = 0.40

这就说明,转移概率随着年龄变化,因此是“非齐次”的。

齐次 vs 非齐次 的比较表:#

特征齐次马尔可夫链(Homogeneous)非齐次马尔可夫链(Non-Homogeneous)
转移概率是否固定是,每一时期都一样否,随时间或变量变化
公式简化数学上更简洁,易于分析更接近现实,但计算更复杂
是否真实反映社会现象通常是简化模型更符合生命历程的动态特性
常见用途初步建模、教学、长期平均状态年龄建模、政策模拟、生命周期分析
示例天气模型(晴→雨概率固定)健康研究中老年人患病概率变大

在生命历程研究中:为何非齐次更常见?#

人的行为会随时间变化,比如:

所以,“非齐次马尔可夫链”更符合现实中人的生命周期变化。

但我们仍然从“齐次模型”开始学起,因为它简单、便于理解,是所有高级模型的基础。此外,在科研论文中,绝大部分还是在用齐次模型,具体原因我们会在之后的教程里讲到。

低阶和高阶的马尔可夫链#

齐次 vs 非齐次低阶(low order)vs 高阶(high order)马尔可夫链 是两个完全不同维度的概念,它们描述的是马尔可夫链的不同方面

维度 1:齐次(Homogeneous)vs 非齐次(Non-Homogeneous)#

这个维度,描述的是 “转移概率是否随时间(或年龄)变化”

举例:

齐次:就业→退休 概率始终是 0.1 非齐次:40岁就业→退休 概率是0.02,60岁是0.5

维度 2:低阶(Low-Order)vs 高阶(High-Order)马尔可夫链#

它描述的是 “未来状态依赖过去多少步的状态”

举例:

一阶模型:你今天的状态决定明天的状态 二阶模型:你今天+昨天的状态决定明天的状态(如连续失业2年影响更大)

两者关系与组合:

场景齐次 or 非齐次?低阶 or 高阶?举例
最基础教学模型齐次一阶每年状态不变,未来只看当前
年龄影响状态转移非齐次一阶转移概率随年龄变
具有路径依赖的行为齐次高阶连续失业2年比1年更影响就业机会
既考虑年龄又考虑历史路径非齐次高阶最复杂但最现实的模型

总结一句话:

齐次/非齐次:管的是“转移概率是否固定”; 低阶/高阶:管的是“未来要不要看更久的历史”。

它们是两个正交维度,你可以同时拥有“非齐次高阶”模型,也可以从最简单的“齐次一阶”模型入门。

具体讲解一阶和高阶马尔可夫链#

我们在教程上面提到的这几种生命历程研究中的常见马尔可夫模型,它们默认的阶数是“一阶”,但它们可以扩展为高阶模型,我们来一一分析:

总体原则:#

模型类型默认阶数是否可扩展为高阶?说明
离散时间齐次马尔可夫链✅ 一阶✅ 可扩展默认只依赖当前状态,可引入历史记忆变高阶
非齐次马尔可夫链✅ 一阶✅ 可扩展转移概率随年龄变,但通常只看当前状态;可加历史状态
连续时间马尔可夫过程✅ 一阶⚠️ 理论上困难数学性质限制,高阶扩展复杂,很少这么做
多状态寿命模型✅ 一阶✅ 可建高阶传统寿命表是记忆无关,可用嵌套状态扩展高阶逻辑
隐马尔可夫模型(HMM)✅ 一阶隐状态链✅ 可扩展(高阶HMM)可以设计为高阶HMM,但建模和估计难度显著提升

分析要点#

一、标准马尔可夫链(齐次/非齐次)默认是“一阶”#
二、连续时间马尔可夫过程 高阶很难实现#
三、多状态寿命表可通过“嵌套状态”引入高阶信息#

四、隐马尔可夫模型也有高阶版本#

总结:

所有我们在上面列出的生命历程马尔可夫模型在默认建模时是“一阶”, 但只要数据允许、理论需要都可以扩展为高阶模型, 通常通过“状态嵌套编码历史”或“改变条件概率结构”来实现。

条件和非条件马尔可夫模型#

什么是条件马尔可夫模型(Conditional Markov Model)?#

定义:

一个马尔可夫模型,其中转移概率不仅依赖于当前状态, 还依赖于个体的特征变量(如性别、教育、年龄、民族等), 就叫条件马尔可夫模型

结构上怎么体现?

你不再用固定的转移概率矩阵,而是用逻辑回归(logit)或多项logit模型来建模:

P(状态i → 状态j | X) = f(X;β)

其中 X 是个体特征,比如:

这就像是“带解释变量的马尔可夫模型”,也是马尔可夫版本的回归分析。

举个实际例子:

问题:女性是否更容易从就业状态转向失业?

可以建模如下:

logit[P(就业→失业)] = β₀ + β₁·(女性) + β₂·(教育年限)

如果 β₁ > 0,就说明女性失业风险更高。

什么是多水平马尔可夫模型(Multilevel Markov Model)?#

定义:

一个马尔可夫模型,考虑了数据的层次结构(如群组、地区、学校、单位等), 并允许转移概率在不同群体间存在变异,这就是多水平(层级)马尔可夫模型

这与多水平回归(Hierarchical Linear Model, HLM)是一个道理。

举个结构:

你现在不仅有个体层特征(比如性别、年龄),还有上层结构,比如:

转移概率这样写:

P_ij(g) = 转移概率从状态i到j,在群组g中的估计

其中 g 表示组,比如不同城市、家庭、民族,允许不同组有不同的转移率

你可以这么建模:

logit[P(就业→失业)] = β₀ + u_家庭 + β₁·(女性) + β₂·(年龄)

其中 u_家庭 是随机截距,用来建模“家庭对就业稳定性的影响”。

条件 vs 多水平:对比总结

比较维度条件马尔可夫模型多水平马尔可夫模型
核心思想转移概率由个体特征解释转移概率在不同群组间随机变化
是否加入固定变量✅(性别、年龄等)✅(可以有)
是否建模群体差异❌(只解释“谁”)✅(解释“哪里”)
类比回归模型类似Logistic回归类似HLM、混合效应模型
使用场景谁更容易转移状态?群体(城市、学校)是否存在结构性差异?
数学复杂度中等较高(需贝叶斯/MCMC或REML估计)

在生命历程研究中的实际用途

模型类型应用例子
条件马尔可夫教育年限是否影响婚姻状态变化?性别是否影响再婚概率?
多水平马尔可夫不同城市青年的就业路径是否显著不同?学校背景是否影响学生中退概率?

当然可以,基于你这一篇已经丰富得非常完整的教程内容,我来帮你更新和扩展一下最后的 小结部分,更准确地概括你实际已经覆盖的内容,也为后续篇章铺垫清晰的结构感。


七、小结:第一篇我们建立了什么基础?#

通过本篇教程,我们从头开始,全面介绍了马尔可夫链模型在生命历程研究中的理论基础、应用语境与建模框架。你已经了解并掌握了以下关键内容:

1. 什么是马尔可夫链模型,它适合解决什么问题?#

2. 马尔可夫模型在社会科学中的独特之处#

3. 生命历程研究中常见的五类马尔可夫模型类型#

你已熟悉这些模型在现实中各自解决什么类型的问题,并能据此选择合适的建模思路。

4. 状态转移概率的来源与估计方法#

你现在可以判断:数据结构与研究目标决定了模型参数的获得方式。

5. 深入理解了“马尔可夫性”、“齐次性”、“阶数”等核心概念#

这些基础术语和结构将贯穿你未来构建、使用与解释任何一个马尔可夫模型。

6. 你也完成了一个完整的 Python 模拟案例#