5D Library › 依恋理论的计算模型与伴侣互动动力学 · English
第四章 冲突中的身体:生理联动与共调
心率会跟着对方走
证据
生理联动。 莱文森与戈特曼让 30 对已婚夫妇在实验室里先聊一天的经历,再讨论一个冲突话题,同时连续记录双方的心率、皮肤电、脉搏传导时间与身体活动。他们用双变量时间序列方法计算一方的生理信号能在多大程度上由另一方的信号预测,称之为生理联动(physiological linkage)。在冲突讨论中,联动程度与婚姻满意度负相关:越不满意的夫妻,双方的生理信号越紧密地互相跟随;联动指标可以解释婚姻满意度约 60% 的变异(样本 30 对) (Levenson and Gottman 1983)。三年后对其中 19 对的追踪发现,第一次实验时的生理唤醒水平能预测之后婚姻满意度的下降 (Levenson and Gottman 1985)。这两个数字都来自小样本,而且是在同一个样本上估计的,按第三章交叉验证的道理,在新样本上很可能会小一些。
这些发现常被简化为「好的伴侣心跳同步」,方向其实正好相反:在冲突中,生理上紧紧跟随对方,与较差的关系相关。一种解释是,不满意的伴侣陷入了一种「你激动我就更激动」的状态,双方都难以独立地平静下来。
后来的研究对「联动」的含义做了更细的区分。蒂蒙斯等人的综述指出,联动的强度、方向与意义随情境(冲突、日常生活、支持性互动)、测量指标与分析方法而变,有些研究发现日常生活中的联动与亲近相关,有些则发现与负面结果相关 (Timmons et al. 2015)。巴特勒提出的「时间性人际情绪系统」框架,把伴侣之间情绪的相互影响分为稳定化(一方偏离时另一方把系统拉回)与去稳定化(一方偏离时另一方把系统推得更远)两种 (Butler 2011);斯巴拉与哈赞把依恋关系中的这两种过程称为共调(coregulation)与失调(dysregulation) (Sbarra and Hazan 2008)。
证据
握住伴侣的手。 科恩、谢弗与戴维森让 16 位已婚女性在磁共振扫描仪中接受「可能被电击」的威胁提示,分三种条件:握着丈夫的手、握着陌生男性的手、不握手。握着丈夫的手时,与威胁相关的多个脑区的激活最低,握陌生人的手次之;而且婚姻质量越高,握丈夫的手带来的降低越明显 (Coan et al. 2006)。这是一项样本很小的研究,结论应当看作「伴侣的支持可以调节威胁反应」的初步证据,而不是一种可靠的「技巧」。
共调与升级的模型
推导
两个人各自的生理唤醒(相对于自己的静息水平)。单独一个人时,唤醒以 10 分钟的时间常数回落。耦合有两种: 表示对方的唤醒提高我的唤醒(相互升级); 表示双方被拉向彼此的状态(较平静的一方帮助另一方平静,即共调)。伴侣 1 遇到一个持续 5 分钟的压力源。
# Co-regulation versus co-dysregulation (Butler 2011; Sbarra & Hazan 2008) in a two-variable arousal
# model. a1, a2 = each partner's physiological arousal above their own resting level (arbitrary
# units). On its own, arousal decays back with time constant tau = 10 minutes. Coupling:
# da1/dt = -a1/tau + c*a2 + k*(a2 - a1) + stress1(t) (and the same for a2 with 1 and 2 swapped)
# c > 0: the other's arousal raises mine (mutual escalation, "co-dysregulation")
# k > 0: each is pulled toward the other's state (a calmer partner helps me settle, "co-regulation")
# Partner 1 meets a stressor: arousal input of 1 per minute for 5 minutes. Illustrative numbers.
TAU = 10.0
def run(c, k, T=120.0, dt=0.01):
a1 = a2 = 0.0; peak1 = peak2 = 0.0; t_rec = None; hist = []
for i in range(int(T / dt)):
t = i * dt
s1 = 1.0 if t < 5 else 0.0
d1 = -a1 / TAU + c * a2 + k * (a2 - a1) + s1
d2 = -a2 / TAU + c * a1 + k * (a1 - a2)
a1, a2 = a1 + d1 * dt, a2 + d2 * dt
peak1, peak2 = max(peak1, a1), max(peak2, a2)
if t > 5 and t_rec is None and a1 < 0.1 * peak1: t_rec = t
if i % 100 == 0: hist.append((t, a1, a2))
return peak1, peak2, t_rec, hist
print("coupling | peak 1 | peak 2 | partner 1 back below 10 % of peak")
for label, c, k in (("independent", 0.0, 0.0), ("co-regulation, k = 0.10/min", 0.0, 0.10),
("mild mutual escalation, c = 0.05", 0.05, 0.0), ("strong mutual escalation, c = 0.09", 0.09, 0.0),
("past the limit, c = 0.11 > 1/tau", 0.11, 0.0)):
p1, p2, tr, h = run(c, k)
end = h[-1][1]
rec = (f"{tr - 5:.0f} min after the stressor ends" if tr else
f"not within 2 hours; still {end:.2f} and rising" if end >= h[-2][1] else
f"not within 2 hours; still {end:.2f}, falling very slowly")
print(f"{label:35s} | {p1:6.2f} | {p2:6.2f} | {rec}")
# Linear analysis: the 'together' mode a1 + a2 decays at rate 1/tau - c; it grows once c > 1/tau.
print(f"escalation threshold: c = 1/tau = {1 / TAU:.2f} per minute; co-regulation (k) never destabilises")
# coupling | peak 1 | peak 2 | partner 1 back below 10 % of peak
# independent | 3.94 | 0.00 | 23 min after the stressor ends
# co-regulation, k = 0.10/min | 3.26 | 0.93 | 18 min after the stressor ends
# mild mutual escalation, c = 0.05 | 3.97 | 0.96 | 35 min after the stressor ends
# strong mutual escalation, c = 0.09 | 4.05 | 2.01 | not within 2 hours; still 0.78, falling very slowly
# past the limit, c = 0.11 > 1/tau | 8.10 | 8.10 | not within 2 hours; still 8.02 and rising
# escalation threshold: c = 1/tau = 0.10 per minute; co-regulation (k) never destabilises模型给出三个结果。第一,共调()使伴侣 1 的峰值降低、回落加快(18 分钟对独自一人的 23 分钟),代价是伴侣 2 也短暂地被带动了一些:共调不是「我不受影响」,而是「我们一起把它消化掉」。第二,相互升级使回落变慢;耦合越强越慢。第三,存在一个清楚的阈值:当 超过 ,「两人一起」的模式不再衰减而是增长,压力源早已结束,唤醒却越来越高。这与莱文森与戈特曼观察到的「不满意的伴侣在冲突中生理紧密联动」在形式上是一致的,但模型本身不能证明这就是机制。
怎样测量联动,又怎样不被骗
测量联动有一个容易被忽略的陷阱:两个人在同一个房间里讨论同一个话题,话题本身的激烈程度会同时推高两个人的心率。这时两人的心率相关,并不说明一方在影响另一方,而只说明他们处在同一个处境中。这与 5D Library 第 18 本讨论的「共同驱动与相互耦合」是同一个问题。
推导
合成的心率数据,每秒一个值,15 分钟的冲突讨论。三种情形:伴侣 2 的心率以 5 秒的延迟跟随伴侣 1(真正的影响);两人都对同一段讨论的激烈程度作出反应,彼此没有影响(共同处境);互不相关。每条序列先去掉自身的可预测部分(「预白化」),再计算 −15 到 +15 秒各个延迟上的互相关;显著性用循环平移检验。
# Measuring "physiological linkage" (Levenson & Gottman 1983) and why a shared situation can mimic
# it. Synthetic heart rates, one value per second, for a 15-minute conflict discussion (900 s).
# influence : partner 2's heart rate follows partner 1's with a 5-second delay
# shared : no influence; both respond to the same moment-to-moment heat of the topic
# independent: neither
# Each series is first "pre-whitened" (its own AR(1) predictability removed), then cross-correlated
# at lags -15..+15 s. Significance: compare the largest correlation with the same statistic after
# circularly shifting partner 2's series by a random amount (500 shifts).
import math, random
def ar1(rng, n, phi, sd):
x, out = 0.0, []
for _ in range(n):
x = phi * x + rng.gauss(0, sd); out.append(x)
return out
def make(kind, rng, n=900):
topic = ar1(rng, n, 0.98, 0.6) # slowly varying heat of the discussion
h1 = [70 + v for v in ar1(rng, n, 0.9, 1.0)]
if kind == "shared": h1 = [a + 1.5 * t for a, t in zip(h1, topic)]
own2 = ar1(rng, n, 0.9, 1.0)
if kind == "influence": h2 = [75 + o + 0.6 * (h1[i - 5] - 70 if i >= 5 else 0) for i, o in enumerate(own2)]
elif kind == "shared": h2 = [75 + o + 1.5 * t for o, t in zip(own2, topic)]
else: h2 = [75 + o for o in own2]
return h1, h2
def whiten(x):
m = sum(x) / len(x); x = [v - m for v in x]
phi = sum(a * b for a, b in zip(x, x[1:])) / sum(a * a for a in x[:-1])
return [b - phi * a for a, b in zip(x, x[1:])]
def xcorr(a, b, lag):
if lag >= 0: a, b = a[:len(a) - lag], b[lag:]
else: a, b = a[-lag:], b[:len(b) + lag]
ma, mb = sum(a) / len(a), sum(b) / len(b)
s = sum((x - ma) * (y - mb) for x, y in zip(a, b))
return s / math.sqrt(sum((x - ma) ** 2 for x in a) * sum((y - mb) ** 2 for y in b))
def best(a, b):
return max(((xcorr(a, b, L), L) for L in range(-15, 16)), key=lambda t: abs(t[0]))
rng = random.Random(11)
print("situation | raw r at lag 0 | after pre-whitening: largest r, at lag | shift-test p")
for kind in ("influence", "shared", "independent"):
h1, h2 = make(kind, rng)
raw = xcorr(h1, h2, 0)
w1, w2 = whiten(h1), whiten(h2)
r, L = best(w1, w2)
null = []
for _ in range(500):
s = rng.randrange(60, len(w2) - 60); null.append(abs(best(w1, w2[s:] + w2[:s])[0]))
p = (1 + sum(v >= abs(r) for v in null)) / 501
print(f"{kind:12s} | {raw:14.2f} | {r:+.2f} at {L:+d} s{'':22s} | {p:.3f}")
print("positive lag = partner 2 follows partner 1")
# situation | raw r at lag 0 | after pre-whitening: largest r, at lag | shift-test p
# influence | 0.34 | +0.51 at +5 s | 0.002
# shared | 0.75 | +0.48 at +0 s | 0.002
# independent | 0.01 | +0.07 at +5 s | 0.685
# positive lag = partner 2 follows partner 1不做任何处理时,「共同处境」的相关(0.75)反而比「真正的影响」(0.34)高得多。预白化之后,两种情形都显著,但延迟不同:真正的影响在 +5 秒处达到峰值,共同处境在 0 秒处。这给了一个线索,但不是证明:如果影响发生得很快(一秒之内),它也会出现在 0 秒处。要真正区分,需要把讨论的激烈程度本身测量出来并加以控制,或者比较两人在不同场合分别经历同一刺激时的反应。
假说 · 尚未验证
共调可以被教会(尚未确立)。在一对伴侣的冲突讨论中,如果双方事先学会在一方心率明显升高时主动放慢语速、降低音量并作出一次认可性回应,那么在控制讨论激烈程度之后,两人心率之间的正向联动(一方升高带动另一方升高)会减弱,冲突后心率回到静息水平的时间会缩短。可以检验的预测与反驳条件:在随机分组的实验中,如果训练组与对照组的联动强度和恢复时间没有差别,这一假说就被削弱。
注
可穿戴设备不是裁判。 智能手表的心率读数在剧烈情绪中可能有延迟和误差,也会受身体活动、咖啡因和睡眠的影响。把它当作「我们俩需要暂停一下」的提示是一回事,把它当作「你激动了,所以你错了」的证据是另一回事。后者只会让冲突多一个武器。
本章小结
在冲突中,伴侣的生理信号紧密地互相跟随,与较差的关系满意度相关,早期的高唤醒还能预测满意度的下降。伴侣之间的情绪影响可以是稳定化的(共调),也可以是去稳定化的(升级)。一个两变量模型显示,共调加快恢复,升级减慢恢复,升级耦合超过一个阈值时唤醒会失控。测量联动时要小心共同处境造成的假相关。下一章转向时间更长的尺度:早期经验在多大程度上决定了这一切。
参考文献
Fan, Y. (2026). Computational Attachment Theory and Couple Interaction Dynamics: From Anxious-Avoidant Coupled Oscillators and Gottman's Nonlinear Difference Equations to Updating Early Relational Priors [依恋理论的计算模型与伴侣互动动力学] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23754715 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).