跳转到内容

基本概念

在我们深入学习 Sequenzo 包的实际用法之前,熟悉一些基本的序列概念是非常重要的。这些基本概念是我们稍后在构建序列、计算距离和解释结果时将使用的基本构建模块。可以将这一节视为在写出完整句子之前学习的“字母表”。

为了让学习过程更加聚焦和具体,我们将使用 德国家庭研究面板 pairfam 数据集(“亲密关系与家庭动态的面板分析”)中的相关例子。这个数据集为诸如教育 (EDU)、全职就业 (FT) 和失业 (UNEMP) 等生命历程状态,提供了一套广泛使用的编码方案。这些分类直观易懂,因此我们将在整个都教程中沿用它们。


序列结构的概念比较

概念定义例子
状态(State)在特定时间点观察到的分类值FT at year 3
子序列(Subsequence)完整序列的一个有序(可能不连续)的子集(EDU, FT, UNEMP)
片段(Spell)一段连续重复且没有中断的相同状态(EDU, EDU), (FT, FT), (UNEMP)
完整序列(Full sequence)从第 1 年到第 T 年观察到的完整轨迹(EDU, EDU, FT, FT, UNEMP)

状态(State)

状态是一个人在特定时间正在做什么或经历什么的一个标签。例如,在序列中:

(EDU, EDU, FT, FT, UNEMP)

  • EDU 表示此人正在接受教育,
  • FT 表示全职工作,
  • UNEMP 表示失业或正在找工作。

每年(或每月,取决于数据集)都会记录一个状态。这些状态共同构成了这个人的轨迹。状态就像我们序列字母表中的“字母”,其他一切都建立在它们之上。

子序列(Subsequence)

子序列就像从一个单词中挑选出几个字母,同时保持它们的顺序。你不用把每个字母都抽取出来成为子序列,它们也不用彼此相邻,虽然这样的配置很灵活,但你不能重新排列它们的顺序。

从序列 (EDU, EDU, FT, FT, UNEMP)中:

  • (EDU, FT, UNEMP) 跳过了第二个 EDU 和第二个 FT
  • (FT, UNEMP) 跳过了前三年。
  • (EDU, FT) 跳过了中间的一个 EDU

子序列用于相似性度量,如最长公共子序列(Longest Common Subsequence)。这可以让我们发现模式,即使两个人的路径并非年年完全一致。

但子序列的缺点是忽略了事情发生的时间。例如,两个人可能一生中都有 (EDU, FT, UNEMP) 这段经历,但一个人在 18-20 岁时经历,而另一个人在 30-32 岁时经历。子序列方法会说他们是相似的,即使他们更广泛的人生故事截然不同。这就是为什么子序列功能强大但有时又过于灵活的原因。

片段或阶段 (Spell or Episode)

一个片段(也称为一个阶段)指某个相同状态未经中断的持续过程。可以把它想象成生命中一个稳定的区块。

(EDU, EDU, FT, FT, UNEMP)来看, 其中的片段(spell)是:

  • (EDU, EDU) → 连续两年的教育,
  • (FT, FT) → 连续两年的全职工作,
  • (UNEMP) → 一年的失业。

即使只有一年也算作一个片段。片段对于描述生命历程中的稳定阶段很有用,例如“一段为期三年的失业片段”或“一段为期五年的全职工作片段”。

完整序列 (Full Sequence)

完整序列 (Full Sequence) 就是一个人在所有观察年份中的完整轨迹。

例如:

(EDU, EDU, FT, FT, UNEMP)

这是从第 1 年到第 5 年的完整记录。


牢记这些概念,你就可以准备好学习后续章节的内容,在那些章节中我们将构建前缀树和后缀树(prefix and suffix trees)、测量差异度(divergence)以及分析集体模式(collective patterns)。

基本序列概念练习

练习 1:识别状态

思考以下序列: (EDU, EDU, FT, FT, UNEMP)

问题:

  1. 第 1 年的状态是什么?
  2. 第 4 年的状态是什么?
  3. 如果第 5 年是 UNEMP,这对当事人意味着什么?

练习 2:构建子序列

针对如上同一序列: (EDU, EDU, FT, FT, UNEMP)

问题:

  1. 写出一个包含 EDUFT 的子序列。
  2. 仅使用最后两年的状态写出一个子序列。
  3. 判断正误:(FT, EDU) 是原始序列的一个子序列。

练习 3:识别片段(阶段)

针对序列: (EDU, EDU, FT, FT, UNEMP)

问题:

  1. 序列中有多少个片段?
  2. 哪个片段最长?
  3. 如果有人声称自己有一段“为期三年的 EDU 片段”,这与该序列匹配吗?

练习 4:理解完整序列

思考以下序列: (EDU, EDU, EDU, FT, FT, UNEMP, FT)

问题:

  1. 这个序列涵盖了多少年?
  2. 前三年的片段是什么?
  3. 这个序列中出现了多少种不同的状态?

练习 5:思考

问题:

  1. 为什么子序列方法有时会“忽略时间”?
  2. 如果你只关心某人是否连续几年稳定就业,你会关注子序列还是片段?
  3. 如果你想了解一个人职业生涯的完整轨迹,你会使用哪个概念?

答案与解释

练习 1

  1. 第 1 年 → EDU (当事人在接受教育)。
  2. 第 4 年 → FT (当事人在全职工作)。
  3. Year 5 → UNEMP (当事人失业或正在找工作)。

状态只是指当事人在那个特定时间点正在做什么。

练习 2

  1. (EDU, FT) 是有效的 (顺序保持不变,即使不连续)。
  2. (FT, UNEMP) 是有效的 (取自第 4 年和第 5 年)。
  3. False → (FT, EDU) 是无效的,因为在原始序列中,所有 EDU 状态都在所有 FT 状态之前。

子序列保持原始顺序,但不需要包含每一个元素。

练习 3

  1. 三个片段: (EDU, EDU), (FT, FT), (UNEMP).
  2. (EDU, EDU)(FT, FT) 都是最长的,长度为 2。
  3. 不匹配 → 在这里,EDU 片段只有 2 年,而不是 3 年。

片段是相同状态未经中断的连续区块。

练习 4

  1. 7 年 (列出了 7 个状态)。
  2. (EDU, EDU, EDU) → 一段为期三年的教育片段。
  3. 三种不同的状态: EDU, FT, 和 UNEMP.

完整序列是贯穿所有观测时间点的完整轨迹。

练习 5

  1. 因为子序列只关注事件的顺序,而不关注它们发生的时间(例如,年龄或日历年份)。
  2. 片段 → 因为它们捕捉的是相同状态的连续、不间断的时期。
  3. 完整序列 → 因为它记录了从开始到结束的整个路径。

作者:梁彧祺
翻译:何梁星云

Released under the BSD-3-Clause License.