배열 모형 — 차수를 고정하고 남는 것
SNA 이론 · 단계별 학습 차례

단원 4-8The Configuration Model

배열 모형 — 차수를 고정하고 남는 것

SNA 이론 · 단계별 학습STAGED+ 스터디
오늘 배우는 것 한 줄 요약
4-7 §11에서 벽에 부딪혔다. 왓츠–스트로가츠는 68간선, BA는 65간선밖에 못 만드는데 가라테는 78간선이다. 간선 수도 다르고 차수 분포도 다른 모형끼리 군집계수를 비교하는 것은 공정하지 않다.
오늘 배우는 배열 모형(configuration model)은 이 문제를 원천적으로 없앤다. 각 사람의 친구 는 실제 그대로 두고 누구와 친구인지만 다시 섞는다. 그러면 남는 차이는 전부 "차수로는 설명 안 되는 것"이다.
덤으로 3-3에서 설명 없이 썼던 모듈러리티의 didj/2md_id_j/2m어디서 나온 식인지가 오늘 정확히 밝혀진다.

1. 오늘의 질문: 차수를 빼고 나면 무엇이 남는가 (What Remains After Degree?)

가라테의 군집계수는 0.2557이다. G(n,m)G(n,m)으로 무작위화하면 0.1348이 나온다(4-7 §12). "실제가 두 배 가까이 높으니 뭉쳐 있다"고 말하고 싶다. 그런데 반론이 하나 있다.

반론: "가라테에는 차수 17, 16, 12짜리 허브가 있다. 허브 하나가 이웃 17명을 갖고 있으면 그 이웃들끼리 우연히 이어질 기회도 많아진다. 군집계수가 높은 것은 허브가 있기 때문이지, 사람들이 뭉쳐 있어서가 아닐 수 있다."

이 반론은 정당하다. G(n,m)G(n,m)의 차수 분산은 3.9인데 가라테는 15.0이다(4-7 §11). 차수 분포부터가 다르다. 두 망은 애초에 비교 대상이 아니다.

해결책은 하나다. 차수를 실제와 똑같이 맞춘 무작위 망을 만들면 된다. 1번은 여전히 16명과, 34번은 여전히 17명과, 12번은 여전히 1명과 친구인 채로 누구와만 다시 뽑는 것이다. 그렇게 만든 망의 군집계수가 여전히 0.2557보다 낮다면, 그때는 "차수 때문이 아니다"라고 말할 수 있다.

영 모형의 사다리 (The Ladder of Null Models)
무작위화 모형은 "무엇을 고정하는가"로 정렬된다. 고정하는 것이 많을수록 엄격한 검정이다.
단계고정하는 것모형통과하면 하는 말
1nn, mmG(n,m)G(n,m) (4-1)"간선 수만으로는 설명 안 된다"
2nn, mm, 차수 하나하나배열 모형 (오늘)"차수로도 설명 안 된다"
3위 + 부분집단 크기블록 모형 (5단계)"집단 구성으로도 설명 안 된다"
오늘은 2단계를 배운다. 1단계에서 유의했던 것이 2단계에서 사라지는 경우가 많고, 그 사라짐 자체가 결과다 — "그건 차수 때문이었다"는 답이니까.

2. 정의 — 반쪽 간선을 짝짓는다 (Pairing Half-Edges)

차수를 정확히 보존하면서 무작위로 잇는 방법은 놀랄 만큼 단순하다.

배열 모형 (Configuration Model)
차수 수열 d1,d2,,dnd_1,d_2,\dots,d_n이 주어졌을 때,
  1. 정점 ii에게 반쪽 간선(half-edge, stub)did_i개 붙인다. 가위로 자르지 않은 실 끝이 did_i개 나와 있다고 생각하면 된다.
  2. 반쪽 간선은 전부 idi=2m\sum_i d_i=2m개다.
  3. 2m2m개를 완전히 무작위로 둘씩 묶는다. 묶인 두 반쪽 간선이 간선 하나가 된다.

3번 단계가 핵심이다. 반쪽 간선에는 이름표가 없다 — 1번의 첫째 실인지 셋째 실인지 구별하지 않는다. 그저 2m2m개를 무작위로 짝짓는다.

이 규칙에서 차수는 자동으로 보존된다. 1번에 실이 16개 붙어 있으면 어떻게 짝지어도 1번의 차수는 16이다. 간선 수도 자동으로 2m/2=m2m/2=m이다. 4-7 §11에서 WS·BA가 못 했던 것이 정의만으로 해결된다.

대가 — 단순 그래프가 아니다
무작위로 짝짓다 보면 같은 두 사람이 두 번 이어지거나(다중 간선), 같은 사람의 실 두 개가 서로 묶일(자기고리) 수 있다. 배열 모형은 이것을 허용한다. §5에서 자기고리 기대 수를 손으로 세고, §9에서 실무상 어떻게 처리하는지 본다.

3. 손 계산 ① 짝짓는 방법의 수 (Counting the Pairings)

작은 예로 끝까지 손으로 계산한다. 정점 4개, 차수 (d1,d2,d3,d4)=(3,2,2,1)(d_1,d_2,d_3,d_4)=(3,2,2,1).

idi=3+2+2+1=8=2m  m=4 \sum_i d_i=3+2+2+1=8=2m\ \Longrightarrow\ m=4

반쪽 간선 8개에 번호를 붙여 두자. 1번의 것을 a1,a2,a3a_1,a_2,a_3, 2번의 것을 b1,b2b_1,b_2, 3번의 것을 c1,c2c_1,c_2, 4번의 것을 e1e_1이라 하자.

3-1. 8개를 둘씩 묶는 방법은 몇 가지인가 (How Many Ways to Pair Up Eight Stubs)

순서대로 세어 나간다.

  • 아직 안 묶인 것 중 가장 앞의 것을 잡는다. 그 짝이 될 수 있는 것은 나머지 7개.
  • 그 둘을 빼면 6개 남는다. 다시 가장 앞의 것의 짝은 5가지.
  • 4개 남으면 3가지, 2개 남으면 1가지.
7×5×3×1=105 7\times5\times3\times1=105

이것을 이중 계승(double factorial)이라 하고 (2m1)!!(2m-1)!!로 쓴다.

(2m1)!!=(81)!!=7!!=7531=105 (2m-1)!!=(8-1)!!=7!!=7\cdot5\cdot3\cdot1=\mathbf{105}

3-2. 특정한 두 반쪽 간선이 서로 묶일 확률 (The Chance Two Given Stubs Pair Up)

a1a_1의 짝을 뽑는다고 생각하자. 후보는 a1a_1을 뺀 7개이고 전부 동등하다. 따라서 a1a_1이 하필 b1b_1과 묶일 확률은

P(a1b1)=12m1=17=0.1428571429 P(a_1\leftrightarrow b_1)=\frac1{2m-1}=\frac17=\mathbf{0.1428571429}
2m2m이 아니라 2m12m-1인가
반쪽 간선이 8개지만 자기 자신과는 묶일 수 없다. 후보는 7개다. 이 "1-1"이 오늘 노트에서 계속 따라다닌다. §6에서 이것이 모듈러리티 식과의 차이를 만드는 것을 본다.

4. 손 계산 ② 두 사람이 이어질 기대 횟수 (Expected Edges Between Two Nodes)

이제 진짜 궁금한 것을 계산한다. 1번과 2번 사이에 간선이 몇 개나 생기는가?

4-1. 지시함수로 분해한다 (Decomposing with Indicators)

1번의 실은 a1,a2,a3a_1,a_2,a_3, 2번의 실은 b1,b2b_1,b_2다. 1–2 간선이 생기는 사건은 "aa 중 하나와 bb 중 하나가 묶이는 것"이고, 그런 짝의 조합3×2=63\times2=6가지다. 하나하나 지시함수로 쓰면

X12=s=13t=121[asbt] X_{12}=\sum_{s=1}^{3}\sum_{t=1}^{2}\mathbf 1[a_s\leftrightarrow b_t]

기대값의 선형성으로 여섯 항을 전부 전개한다.

사건확률왜 그 값인가
1a1b1a_1\leftrightarrow b_11/71/7a1a_1의 후보 7개 중 b1b_1 하나
2a1b2a_1\leftrightarrow b_21/71/7같은 이유
3a2b1a_2\leftrightarrow b_11/71/7같은 이유
4a2b2a_2\leftrightarrow b_21/71/7같은 이유
5a3b1a_3\leftrightarrow b_11/71/7같은 이유
6a3b2a_3\leftrightarrow b_21/71/7같은 이유
6×17=676\times\dfrac17=\dfrac67=0.8571428571=0.8571428571

일반화하면 항이 didjd_i d_j개이고 각각 1/(2m1)1/(2m-1)이므로

  E[Xij]=didj2m1  (ij) \boxed{\;E[X_{ij}]=\frac{d_i\,d_j}{2m-1}\;}\qquad(i\ne j)
주의: 이건 확률이 아니라 기대 횟수
6/7=0.8576/7=0.857은 "1–2가 이어질 확률 85.7%"가 아니다. 다중 간선이 허용되므로 X12X_{12}는 0, 1, 2 중 하나이고 0.857은 그 평균이다. 실제로 didj/(2m1)d_id_j/(2m-1)이 1을 넘는 경우도 있다 — 가라테의 1–34 쌍은 1.755다(§8).

4-2. 여섯 쌍 전부 (All Six Pairs)

(i,j)(i,j)did_idjd_j항의 수 didjd_id_j기대 간선 didj/7d_id_j/7
(1, 2)3266/76/70.857143
(1, 3)3266/76/70.857143
(1, 4)3133/73/70.428571
(2, 3)2244/74/70.571429
(2, 4)2122/72/70.285714
(3, 4)2122/72/70.285714
2323/723/73.285714286

합이 맞는지 확인하는 항등식이 있다.

i<jdidj=(idi)2idi22=82(9+4+4+1)2=64182=462=23  \sum_{i\lt j}d_id_j=\frac{\left(\sum_i d_i\right)^2-\sum_i d_i^2}{2} =\frac{8^2-(9+4+4+1)}{2}=\frac{64-18}{2}=\frac{46}{2}=\mathbf{23}\ \checkmark

5. 손 계산 ③ 자기고리와 검산 (Self-Loops and the Checksum)

서로 다른 쌍의 기대 간선을 다 더했더니 3.2857인데, 간선은 m=4m=4개여야 한다. 0.7143개가 어디로 갔는가? 자기고리다.

5-1. 자기고리 기대 수 (Expected Number of Self-Loops)

정점 ii 안에서 실 두 개가 서로 묶이는 경우다. 고를 수 있는 쌍의 수는

(di2)=di(di1)2 \binom{d_i}{2}=\frac{d_i(d_i-1)}{2}

각 쌍이 실제로 묶일 확률은 역시 1/(2m1)1/(2m-1)이므로

E[자기고리i]=12m1(di2)=di(di1)2(2m1) E[\text{자기고리}_i]=\frac{1}{2m-1}\binom{d_i}{2}=\frac{d_i(d_i-1)}{2(2m-1)}
iidid_i(di2)=di(di1)2\binom{d_i}{2}=\dfrac{d_i(d_i-1)}{2}기대 자기고리왜 그 값인가
1332/2=33\cdot2/2=33/73/70.428571{a1a2},{a1a3},{a2a3}\{a_1a_2\},\{a_1a_3\},\{a_2a_3\} 세 가지
2221/2=12\cdot1/2=11/71/70.142857{b1b2}\{b_1b_2\} 하나
3221/2=12\cdot1/2=11/71/70.142857{c1c2}\{c_1c_2\} 하나
4110/2=01\cdot0/2=00/70/70.000000실이 하나뿐이라 짝지을 게 없다
55/75/70.714285714

5-2. 검산 — 전부 더하면 정확히 mm (Check: Everything Sums to Exactly m)

237서로 다른 쌍+57자기고리=287=4=m  \underbrace{\frac{23}{7}}_{\text{서로 다른 쌍}}+\underbrace{\frac57}_{\text{자기고리}} =\frac{28}{7}=\mathbf{4}=m\ \checkmark
왜 정확히 mm이어야 하는가
어떤 짝짓기든 간선은 정확히 mm개 생긴다. 그 mm개는 "서로 다른 두 정점을 잇는 것"과 "자기고리"로 빠짐없이 겹침없이 나뉜다. 그러므로 두 기대값의 합은 반드시 mm이다.
일반식으로도 확인된다. 12m1[i<jdidj+i(di2)]=12m1(2m)22m2=2m(2m1)2(2m1)=m \frac1{2m-1}\left[\sum_{i\lt j}d_id_j+\sum_i\binom{d_i}{2}\right] =\frac1{2m-1}\cdot\frac{(2m)^2-2m}{2}=\frac{2m(2m-1)}{2(2m-1)}=m

6. 3-3의 didj/2md_id_j/2m은 어디서 왔는가 (Where the Expected-Edge Term Comes From)

3-3에서 모듈러리티를 배울 때 이런 식을 썼다.

Q=12mi,j[A[i,j]didj2m]δ(ci,cj) Q=\frac1{2m}\sum_{i,j}\left[A[i,j]-\frac{d_id_j}{2m}\right]\delta(c_i,c_j)

그때는 "didj/2md_id_j/2m이 무작위였을 때 기대되는 간선 수"라고만 하고 넘어갔다. 오늘 그 출처가 배열 모형이라는 것이 밝혀진다. 다만 분모가 다르다.

출처
didj2m1\dfrac{d_id_j}{2m-1}오늘 §4의 정확한 유도배열 모형에서 iijj 간선의 기대 수
didj2m\dfrac{d_id_j}{2m}모듈러리티가 쓰는 근사위 식에서 2m12m2m-1\approx2m으로 둔 것

6-1. 근사의 오차는 정확히 얼마인가 (Exactly How Large Is the Approximation Error)

비율을 보면 오차가 mm에만 의존한다는 것이 바로 나온다.

didj/(2m1)didj/(2m)=2m2m1 \frac{d_id_j/(2m-1)}{d_id_j/(2m)}=\frac{2m}{2m-1}

모든 쌍에서 오차 비율이 똑같다. 가라테는 2m=1562m=156이므로

156155=1.006452  근사는 언제나 0.645% 작다 \frac{156}{155}=1.006452\ \Longrightarrow\ \text{근사는 언제나 }0.645\%\text{ 작다}

더 깔끔한 사실도 있다. §5-2의 합이 2m12m-1에서는 정확히 mm이었는데, 2m2m으로 바꾸면

12m(2m)22m2=2m12=m12 \frac1{2m}\cdot\frac{(2m)^2-2m}{2}=\frac{2m-1}{2}=m-\frac12

어떤 망에서든 정확히 0.5개만큼 모자란다. 가라테로 확인하면 2m12m-1일 때 74.593548+3.406452=78.000000=m74.593548+3.406452=78.000000=m, 2m2m일 때 77.5=780.577.5=78-0.5다.

그러면 모듈러리티는 틀린 식인가
아니다. 두 가지 이유로 실무상 문제가 없다.
① 오차가 모든 쌍에 공통인 상수배(0.645%)라서 쌍끼리의 순위를 바꾸지 않는다. 어느 모둠이 더 뭉쳐 있는지를 비교하는 데는 영향이 없다.
② 현실 자료는 mm이 크다. m=573m=573인 FMH에서는 오차가 0.087%다.
다만 mm이 아주 작을 때는 조심해야 한다. m=4m=4인 §4의 예에서 1–2 쌍의 정확값은 6/7=0.8571436/7=0.857143인데 근사는 6/8=0.756/8=0.7514.3% 차이다.

7. R 검증 ① 몬테카를로 (Monte Carlo Check)

손으로 구한 6/76/7, 3/73/7, 5/75/7이 정말 맞는지 2만 번 돌려 확인한다.

ds <- c(3,2,2,1)
g  <- sample_degseq(ds, method="configuration")   # 자기고리·다중간선 허용
# 20000회 반복하며 쌍별 간선 수와 자기고리 수를 누적
손 계산 didj/7d_id_j/7이론값관측 (20000회)차이
(1, 2)6/76/70.8571430.8590+0.0019
(1, 3)6/76/70.8571430.8610+0.0039
(1, 4)3/73/70.4285710.4254−0.0032
(2, 3)4/74/70.5714290.5661−0.0053
(2, 4)2/72/70.2857140.2915+0.0058
(3, 4)2/72/70.2857140.2832−0.0025
자기고리손 계산 (di2)/7\binom{d_i}{2}/7이론값관측 (20000회)
1번3/73/70.4285710.4273
2번1/71/70.1428570.1417
3번1/71/70.1428570.1449
4번0/70/70.0000000.0000

모든 칸이 소수 둘째 자리까지 맞는다. 특히 4번의 자기고리가 정확히 0인 것이 좋은 확인이다 — 차수 1이면 짝지을 실이 없다는 손 계산이 그대로 나타났다.

8. R 검증 ② 가라테의 기대 간선 (Expected Edges in Karate)

같은 식을 가라테(n=34n=34, m=78m=78, 2m=1562m=156)에 적용한다.

did_idjd_j정확 didj155\frac{d_id_j}{155}근사 didj156\frac{d_id_j}{156}실제 A[i,j]A[i,j]읽기
(1, 34)16171.75481.74360가장 이어질 법한 쌍인데 안 이어져 있다
(1, 2)1690.92900.92311기대대로
(33, 34)12171.31611.30771기대보다 적다 (1.32 예상, 1 관측)
(9, 31)540.12900.12821기대의 7.8배
(12, 34)1170.10970.10900기대대로
(12, 15)120.01290.01280거의 불가능
(1, 34)가 이 자료의 전부다
1번(사범)과 34번(관장)은 가라테 클럽 분열의 두 당사자다. 차수만 보면 이 둘은 1.75개의 간선으로 이어져 있어야 한다 — 34개 정점 중 가장 큰 값이다. 그런데 실제 A[1,34]=0A[1,34]=0이다.
차수로 설명되는 세계에서 가장 크게 어긋난 칸이 곧 이 망의 이야기다. 이것이 §10에서 모듈러리티 zz가 8을 넘는 이유이기도 하다.

1번 한 사람 안에서도 편차가 크다.

E[X1,12]=16×1155=0.1032,E[X1,34]=16×17155=1.7548 E[X_{1,12}]=\frac{16\times1}{155}=0.1032,\qquad E[X_{1,34}]=\frac{16\times17}{155}=1.7548

17배 차이다. 배열 모형이 G(n,m)G(n,m)과 근본적으로 다른 점이 여기 있다. G(n,m)G(n,m)에서는 모든 쌍의 기대값이 78/(342)=0.13978/\binom{34}{2}=0.139똑같았다. 배열 모형은 상대의 인기까지 반영한다.

9. 함정 — simplify는 표본을 망친다 (simplify vs the vl Method)

§2에서 배열 모형이 다중 간선과 자기고리를 만든다고 했다. 실무에서 흔히 하는 처리는 simplify()로 지우는 것이다. 이것이 표본을 심하게 왜곡한다.

g1 <- simplify(sample_degseq(dk, method="configuration"))  # 지우기
g2 <- sample_degseq(dk, method="vl")                       # 단순그래프만 뽑기
방법간선 수 (평균)차수동류성 rr군집계수
실제 가라테78−0.47560.2557
configuration + simplify66.09−0.16140.1650
method="vl"78.00−0.30110.2238

simplify는 평균 11.9개(78개 중 15%)의 간선을 버린다. 그리고 버려지는 간선은 무작위가 아니다. 다중 간선은 didjd_id_j가 큰 쌍, 즉 허브끼리에서 주로 생긴다. 자기고리도 (di2)\binom{d_i}{2}에 비례하니 허브에서 생긴다. 결국 허브의 차수만 골라서 깎는다.

결과가 두 방향으로 나타난다.

  • 차수동류성이 −0.1614로 올라간다(vl은 −0.3011). 허브의 차수가 깎이면 차수 격차가 줄어 이질성이 약해 보인다.
  • 군집계수가 0.1650으로 떨어진다(vl은 0.2238). 간선이 15% 없어졌으니 삼각형도 줄어든다.
이 왜곡이 결론을 바꾼다
군집계수를 simplify 표본과 비교하면 실제 0.2557 대 0.1650으로 "유의하게 뭉쳐 있다"는 결론이 나온다. vl 표본과 비교하면 0.2557 대 0.2238로 z=1.23z=1.23, 유의하지 않다(§10).
정반대 결론이다. 그리고 옳은 쪽은 vl이다 — simplify 표본은 애초에 차수가 보존되지 않았으므로 "차수를 고정한 영 모형"이 아니다.

9-1. vl은 정말 차수를 보존하는가 (Does vl Really Preserve Degrees)

500개 표본 전부 검사했다.

확인 항목결과
간선 수가 항상 78인가TRUE (500/500)
차수 벡터가 실제와 항상 일치하는가TRUE (500/500)
다중 간선이 있는 표본0개 / 500
자기고리가 있는 표본0개 / 500
실무 규칙
영 모형으로 쓸 때는 method="vl". 차수 하나하나와 간선 수가 정확히 보존되고 결과가 단순 그래프다.
method="configuration"은 §4~§5의 이론을 확인할 때 쓴다 (자기고리·다중 간선이 나와야 이론과 맞으니까).
둘을 바꿔 쓰면 안 된다. §7의 몬테카를로를 vl로 했다면 자기고리가 0으로 나와 이론 검증이 실패했을 것이다.

10. R 검증 ③ 차수를 고정해도 남는 것 (What Survives: Karate)

이제 §1의 질문에 답한다. vl로 500번 무작위화하고 채점한다.

지표실제무작위 평균표준편차zz무작위 범위판정
군집계수0.25570.22380.0260+1.230.142 ~ 0.290설명된다
삼각형 수4539.394.5672+1.2325 ~ 51설명된다
파벌 분할 QQ0.3715−0.02050.0468+8.38−0.141 ~ 0.115설명 안 됨
평균 거리2.40822.25070.0459+3.432.168 ~ 2.481설명 안 됨
차수동류성 rr−0.4756−0.30110.0492−3.55−0.462 ~ −0.185설명 안 됨
가라테 배열 모형 영 분포
배열 모형 500표본의 분포와 실제 값(빨간 선). 군집계수만 분포 안에 있다.

10-1. 군집계수 — §1의 반론이 맞았다 (Clustering: The Objection in §1 Was Right)

답: 가라테의 군집계수 0.2557은 차수만으로 설명된다.
z=+1.23z=+1.23(p=0.134p=0.134)이다. 무작위 범위 0.142~0.290 안에 0.2557이 편안히 들어간다.
G(n,m)G(n,m)과 비교했을 때는 0.2557 대 0.1348로 두 배 가까이 높아 보였는데, 차수까지 맞추자 그 차이가 거의 다 사라졌다(0.2238). §1의 반론이 옳았다 — 가라테가 뭉쳐 보이는 것은 허브가 있기 때문이다.
같은 이야기를 삼각형 수로 해도 결과가 같다(45 대 39.39, z=1.23z=1.23).

10-2. 모듈러리티 — 이것은 남는다 (Modularity: This One Survives)

반대로 파벌 분할의 QQ는 압도적이다. 무작위 평균이 −0.0205로 0 근처인데 실제는 0.3715, z=+8.38z=+8.38이다. 500개 표본 중 0.115를 넘은 것이 하나도 없다.

§8에서 본 A[1,34]=0A[1,34]=0이 여기서 값을 만든다. 차수만 보면 1번과 34번은 1.75개로 이어져 있어야 하는데 0이다. 두 허브가 서로를 피하고 각자 자기편을 데려간 구조 — 이건 차수 수열 어디에도 안 적힌 정보다.

Louvain으로 찾은 분할과 헷갈리지 말 것
Q=0.3715Q=0.3715실제 파벌 소속(누가 사범 편이고 누가 관장 편인지)으로 잰 값이라 결정적이다. Louvain으로 분할을 찾으면 QQ가 0.4198까지 올라가지만 알고리즘이 무작위라 실행마다 다르다(200회 돌리면 0.392~0.420, 최빈값 0.4198이 30%). 영 모형과 대조할 때는 결정적인 분할을 쓰는 것이 안전하다.

10-3. 차수동류성 — 무작위도 음수지만 실제는 더 음수다 (Assortativity: Random Is Negative, Observed Is More So)

실제 r=0.4756r=-0.4756, 무작위 평균 0.3011-0.3011, z=3.55z=-3.55. 읽을 점은 무작위조차 −0.30으로 꽤 음수라는 것이다.

이유는 §8에서 이미 나왔다. 차수 17짜리 34번이 이을 상대는 33명뿐인데 그중 차수가 큰 사람은 몇 없다. 허브가 많은 이웃을 가지려면 필연적으로 차수 낮은 사람들과 이어질 수밖에 없다. 이것은 구조적 제약이지 "인기 있는 애가 인기 없는 애와 친하다"는 사회적 사실이 아니다.

이것이 배열 모형의 진짜 쓸모다
r=0.4756r=-0.4756만 보고 "가라테는 강한 이질성을 보인다"고 하면 −0.30만큼은 과잉 해석이다. 차수 수열이 이미 −0.30을 강제하고 있다. 사회적으로 설명할 몫은 −0.4756에서 −0.3011을 뺀 나머지다.
G(n,m)G(n,m)만 썼다면 이 구분을 못 했을 것이다.

11. R 검증 ④ FMH — 차수로 전혀 설명 안 되는 망 (FMH)

가라테는 "군집계수가 설명됐다"는 온건한 결과였다. FMH 거대성분(n=439n=439, m=573m=573)은 정반대다. 300표본.

지표실제무작위 평균표준편차zz읽기
평균 거리16.87736.85670.0807+124.13실제가 2.5배 멀다
군집계수0.28400.00450.0030+91.84실제가 63배 높다
삼각형 수1312.081.4038+91.84무작위엔 삼각형이 거의 없다
E-I (학년)−0.7068+0.62540.0305−43.71부호가 뒤집힌다
Louvain QQ0.8960.72050.0057+31무작위도 높지만 실제가 더 높다
지름4016.531.4032+16.73실제가 훨씬 길쭉하다
E-I (성별)−0.3403−0.02030.0423−7.57동성 선호가 진짜다
차수동류성 rr+0.2020−0.04680.0398+6.25비슷한 차수끼리 이어진다
FMH 배열 모형 z 점수
여덟 지표의 zz 점수. 유의 기준선 ±2\pm2가 눈에 안 보일 정도다.

여덟 지표 전부 z>6\lvert z\rvert\gt6이다. 가라테에서 군집계수가 z=1.23z=1.23으로 "설명됐다"던 것과 대조하면 FMH는 차수 수열이 거의 아무것도 설명하지 못한다.

11-1. E-I 지수의 부호가 뒤집히는 것 (The Sign Flip)

가장 극적인 칸이다. E-I 지수는 3단계에서 배운 대로

E-I=(외부 간선)(내부 간선)(외부)+(내부) \text{E-I}=\frac{(\text{외부 간선})-(\text{내부 간선})}{(\text{외부})+(\text{내부})}

−1이면 완전 동종, +1이면 완전 이종이다.

E-I (학년)
실제 FMH−0.7068간선의 85%가 같은 학년끼리
배열 모형 (차수 고정)+0.6254간선의 81%가 다른 학년끼리

부호만 뒤집힌 게 아니라 크기도 비슷하게 대칭이다. 왜 무작위가 +0.63인지는 간단하다. 학년이 4개면 무작위로 이었을 때 상대가 다른 학년일 확률이 약 3/4다. 이종이 기본값이고, 실제는 그 기본값에서 정반대로 가 있다.

교실 해석 — 이 한 칸이 개입 설계를 바꾼다
"우리 학교는 학년끼리만 논다"는 말은 인상이지만, z=43.7z=-43.7은 측정이다. 그리고 차수를 고정해도 남았다는 것이 중요하다 — "인기 많은 애들이 몇몇 있어서 그렇게 보이는 것"이라는 반론이 배제된다.
개입 지점도 명확해진다. 학년 간 연결을 늘리고 싶다면 인기 학생을 통하는 방법은 안 통한다(차수를 고정해도 학년 벽이 남으니까). 학년을 섞는 활동 구조 자체를 만들어야 한다.

11-2. 거리와 군집계수가 동시에 크다 (Both Long and Clustered)

FMH는 평균 거리 z=+124z=+124무작위보다 멀고, 군집계수 z=+92z=+92무작위보다 뭉쳐 있다. 이 조합이 4-4에서 배운 왓츠–스트로가츠의 격자 쪽 끝이다 — 그래서 4-7 §11에서 WS만이 FMH의 거리·지름을 자릿수라도 맞혔던 것이다.

동시에 4-7에서 WS가 군집계수를 0.0022로 완전히 실패했다는 것도 기억하자. 오늘의 결론은 그때보다 강하다. 4-7에서는 "여섯 모형 중 아무도 못 맞혔다"였는데, 오늘은 실제 차수 수열을 그대로 주었는데도 못 맞혔다. FMH의 구조는 차수에도, 지금까지 배운 어떤 생성 규칙에도 담기지 않는다.

12. 네 모형 최종 대조 (Final Comparison of Four Models)

4단계에서 배운 것을 한 표로 닫는다. 가라테, 각 300회.

모형고정하는 것간선평균 거리군집계수최대 차수파벌 QQ
실제 가라테782.40820.2557170.3715
G(n,m)G(n,m) (4-1)n,mn,m782.39230.13488.9−0.0189
왓츠–스트로가츠 (4-4)nn, 이웃 수682.71610.17696.70.0982
바라바시–알버트 (4-6)nn, mm당 간선652.42870.137714.4−0.0070
배열 모형 vl (4-8)n,mn,m, 차수 전부782.24910.225117.0−0.0209

배열 모형만이 간선 78개와 최대 차수 17을 정확히 재현한다. 그러면서 군집계수도 실제에 가장 가깝다(0.2251 대 0.2557).

네 모형의 역할이 다르다 — 어느 것도 다른 것을 대체하지 않는다
모형쓰임
G(n,p)G(n,p), G(n,m)G(n,m)가장 느슨한 기준선. "간선 수만으로 설명되나?"
왓츠–스트로가츠설명 장치. "높은 군집 + 짧은 거리"가 어떻게 공존하는지 보여 주는 모형
바라바시–알버트메커니즘 가설. "허브가 생기는가"에 대한 답 (성장 + 선호적 연결)
배열 모형검정 도구. 설명하지 않는다. 오직 "차수를 빼면 남는가"만 판정한다
BA는 를 묻고, 배열 모형은 얼마나 놀라운가를 묻는다.

13. 교실 적용 (Classroom Application)

13-1. 교우관계 조사에 그대로 쓰는 절차 (A Procedure You Can Run on Friendship Data)

학급 교우관계 분석 표준 절차 (Standard Procedure)
  1. 지명 자료로 망을 만든다. 각 학생의 차수 did_i를 기록한다.
  2. 관심 지표를 잰다 (모둠 QQ, 성별 E-I, 군집계수, 고립 학생 수 등).
  3. sample_degseq(d, method="vl")500번 무작위화한다.
  4. 각 지표의 zz를 구한다.
  5. z<2\lvert z\rvert\lt2인 지표는 보고하지 않는다. "차수 때문"이니까.

5번이 실무적으로 가장 중요하다. 지표를 열 개 재서 열 개를 다 보고하면 어느 것이 진짜 발견인지 알 수 없다. 가라테에서 군집계수 0.2557은 숫자만 보면 인상적이지만 z=1.23z=1.23이므로 보고할 것이 없다.

13-2. "인기 많은 애가 있어서 그런 것 아닌가?"에 답하는 법 (Answering "Isn't It Just the Popular Kids?")

교사·관리자와 이야기할 때 가장 자주 나오는 반론이 이것이다. 그리고 정당한 반론이다 — 가라테에서는 실제로 맞았다(§10-1).

관찰반론배열 모형의 답
"모둠이 잘 뭉쳐 있다""인기 학생 몇이 각 모둠에 있어서 아닌가"차수 고정해도 QQ가 남는지 본다 (가라테: z=8.4z=8.4, 남는다)
"삼각관계가 많다""허브의 이웃끼리 우연히 만난 것 아닌가"가라테: z=1.23z=1.23, 실제로 그렇다
"같은 성별끼리만 논다""성비가 안 맞아서 아닌가"FMH: z=7.6z=-7.6, 성비로 설명 안 됨
"인기 학생이 소외 학생과 친하다""친구가 많으면 당연히 그렇지 않나"무작위도 r=0.30r=-0.30. 반론이 대체로 옳다 (§10-3)

13-3. 차수를 고정한다는 것의 교실적 의미 (What Fixing Degrees Means in a Classroom)

배열 모형이 하는 일을 교실 언어로 옮기면 이렇다.

"친구 수는 그대로 두고, 누구와 친구인지만 제비뽑기로 다시 정한다면?"
민수가 친구 8명, 지혜가 친구 2명이라는 사실은 그대로다. 민수가 여전히 8명과, 지혜가 여전히 2명과 친구다. 다만 그 8명과 2명이 누구인지를 완전히 우연에 맡긴다.

그렇게 다시 뽑은 교실 500개를 만들어 놓고 실제 교실과 비교하는 것이다. 실제 교실에만 있고 500개 어디에도 없는 것 — 그게 아이들이 선택한 것이다.

이 관점에서 §10~§11의 결과를 다시 읽으면 문장이 아주 단순해진다.

  • 가라테의 삼각형은 선택이 아니다. 친구 수만 그대로 두고 제비뽑기해도 39개가 나온다(실제 45개).
  • 가라테의 파벌 분열은 선택이다. 제비뽑기 500번 중 한 번도 이 정도로 갈리지 않았다.
  • FMH의 학년 벽은 선택이다. 제비뽑기하면 오히려 학년을 넘나드는 쪽이 기본값이다(+0.63).

13-4. 한계 — 배열 모형이 답하지 못하는 것 (Limits: What the Configuration Model Cannot Answer)

세 가지 한계
zz는 원인을 말하지 않는다. FMH의 학년 E-I가 z=43.7z=-43.7이라는 것은 "학년이 관계를 결정한다"가 아니라 "학년으로 정렬된 패턴이 우연이 아니다"까지만 말한다. 같은 교실에서 수업을 듣고 같은 층을 쓰는 것이 원인일 수도 있다.
차수 자체는 검정되지 않는다. 차수를 고정해 버렸으니 "왜 민수는 친구가 8명인가"는 이 틀 밖의 질문이다. 그건 BA(4-6)가 다루는 영역이다.
작은 학급에서는 표본이 부족할 수 있다. nn이 20~30이면 차수를 고정한 순간 가능한 망의 수가 크게 줄어 zz가 불안정해진다. 학급(20~30명)보다 학년·학교(수백 명) 규모에서 신뢰도가 높다.

14. 연습문제 (Exercises)

연습문제 1. 5명으로 이루어진 작은 모둠의 차수가 (d1,d2,d3,d4,d5)=(4,3,2,2,1)(d_1,d_2,d_3,d_4,d_5)=(4,3,2,2,1)이다.

(가) 2m2mmm을 구하고, 반쪽 간선을 짝짓는 방법의 수 (2m1)!!(2m-1)!!곱셈을 전부 쓰며 계산하라. 특정 두 반쪽 간선이 서로 묶일 확률은?

(나) 서로 다른 쌍 10개 전부에 대해 기대 간선 수 didj/(2m1)d_id_j/(2m-1)을 구하고 합을 내라. 항등식 i<jdidj=(d)2d22\sum_{i\lt j}d_id_j=\frac{(\sum d)^2-\sum d^2}{2}로 검산하라.

(다) 자기고리 기대 수를 다섯 정점 전부에 대해 구하고 합을 내라. (나)의 합과 더하면 mm이 되는가?

(라) 1–2 쌍에 대해 모듈러리티가 쓰는 근사 didj/(2m)d_id_j/(2m)을 구하고 정확값과 비교하라. 오차는 몇 %인가?

→ 먼저 풀고 §15 해설과 맞춰 볼 것

연습문제 2. 어느 6학년 학급(30명)을 조사해 다음을 얻었다. 배열 모형 500표본으로 무작위화한 결과가 함께 있다.
지표실제무작위 평균표준편차
군집계수0.3310.2980.041
모둠 분할 QQ0.4020.1150.038
E-I (성별)−0.556−0.0480.062
차수동류성 rr−0.221−0.1840.075

(가) 네 지표의 zz를 각각 계산하라.

(나) 담임에게 보고할 것과 보고하지 않을 것을 나누고, 그 이유를 쓰라.

(다) 담임이 "우리 반 애들이 잘 뭉쳐 있다는 거네요?"라고 물었다. 군집계수 0.331이라는 숫자에 근거해 정확히 뭐라고 답해야 하는가?

→ 먼저 풀고 §15 해설과 맞춰 볼 것

15. 해설과 답 (Solutions)

15-1. 연습문제 1 해설 (Solution to Exercise 1)

(가) 짝짓는 방법의 수.

idi=4+3+2+2+1=12=2m  m=6 \sum_i d_i=4+3+2+2+1=12=2m\ \Longrightarrow\ m=6

반쪽 간선 12개를 둘씩 묶는다. 남은 것 중 가장 앞의 것을 잡아 짝을 정해 나가면 후보 수가 11, 9, 7, 5, 3, 1로 줄어든다.

(2m1)!!=11!!=11×9×7×5×3×1 (2m-1)!!=11!!=11\times9\times7\times5\times3\times1

차례대로 곱하면

11×9=99,99×7=693,693×5=3465,3465×3=10395,10395×1=10395 11\times9=99,\quad 99\times7=693,\quad 693\times5=3465,\quad 3465\times3=10395,\quad 10395\times1=\mathbf{10395}

특정 두 반쪽 간선이 묶일 확률은 후보가 2m1=112m-1=11개이므로

111=0.090909091 \frac1{11}=0.090909091
답 (가): 2m=122m=12, m=6m=6, 11!!=1039511!!=\mathbf{10395}가지, 확률 =1/11=0.0909=1/11=0.0909.

(나) 열 쌍 전부. E[Xij]=didj/11E[X_{ij}]=d_id_j/11.

(i,j)(i,j)did_idjd_jdidjd_id_j기대 간선왜 그 값인가
(1, 2)431212/1112/111.0909094×3=124\times3=12개 항, 각 1/111/11
(1, 3)4288/118/110.7272734×2=84\times2=8개 항
(1, 4)4288/118/110.7272734×2=84\times2=8개 항
(1, 5)4144/114/110.3636364×1=44\times1=4개 항
(2, 3)3266/116/110.5454553×2=63\times2=6개 항
(2, 4)3266/116/110.5454553×2=63\times2=6개 항
(2, 5)3133/113/110.2727273×1=33\times1=3개 항
(3, 4)2244/114/110.3636362×2=42\times2=4개 항
(3, 5)2122/112/110.1818182×1=22\times1=2개 항
(4, 5)2122/112/110.1818182×1=22\times1=2개 항
5555/1155/115.000000

검산:

idi=12,idi2=16+9+4+4+1=34 \sum_i d_i=12,\qquad \sum_i d_i^2=16+9+4+4+1=34 i<jdidj=122342=144342=1102=55  \sum_{i\lt j}d_id_j=\frac{12^2-34}{2}=\frac{144-34}{2}=\frac{110}{2}=\mathbf{55}\ \checkmark
답 (나): 열 쌍의 기대 간선은 위 표와 같고 합은 55/11=5.055/11=\mathbf{5.0}개. 항등식 검산 (14434)/2=55(144-34)/2=55

(다) 자기고리. E[자기고리i]=(di2)/11E[\text{자기고리}_i]=\binom{d_i}{2}/11.

iidid_i(di2)=di(di1)2\binom{d_i}{2}=\dfrac{d_i(d_i-1)}{2}기대 자기고리왜 그 값인가
1443/2=64\cdot3/2=66/116/110.545455실 4개 중 2개를 고르는 6가지
2332/2=33\cdot2/2=33/113/110.272727실 3개 중 2개를 고르는 3가지
3221/2=12\cdot1/2=11/111/110.090909실 2개를 묶는 1가지
4221/2=12\cdot1/2=11/111/110.090909실 2개를 묶는 1가지
5110/2=01\cdot0/2=00/110/110.000000실이 하나뿐이라 짝지을 게 없다
1111/1111/111.000000
5.0서로 다른 쌍+1.0자기고리=6=m  \underbrace{5.0}_{\text{서로 다른 쌍}}+\underbrace{1.0}_{\text{자기고리}}=\mathbf{6}=m\ \checkmark
답 (다): 자기고리 기대 수는 0.5455 / 0.2727 / 0.0909 / 0.0909 / 0, 합 =11/11=1.0=11/11=\mathbf{1.0}개. 쌍 합계 5.0과 더하면 정확히 m=6m=6 ✓ (몬테카를로 20000회 관측: 0.5495 / 0.2732 / 0.0909 / 0.0940 / 0 — 이론과 일치)

(라) 근사와의 비교.

정확=4×32m1=1211=1.090909,근사=4×32m=1212=1.000000 \text{정확}=\frac{4\times3}{2m-1}=\frac{12}{11}=1.090909,\qquad \text{근사}=\frac{4\times3}{2m}=\frac{12}{12}=1.000000 오차=1.0909091.0000001.000000=0.090909=9.09% \text{오차}=\frac{1.090909-1.000000}{1.000000}=0.090909=\mathbf{9.09\%}

§6에서 유도한 대로 오차 비율은 2m2m11=12m1=111=9.09%\frac{2m}{2m-1}-1=\frac1{2m-1}=\frac1{11}=9.09\%쌍과 무관하게 일정하다.

답 (라): 정확 12/11=1.090912/11=1.0909, 근사 12/12=1.000012/12=1.0000, 오차 9.09%. m=6m=6으로 아주 작기 때문이며, 가라테(m=78m=78)에서는 0.645%, FMH(m=573m=573)에서는 0.087%로 줄어든다.
교실 해석
차수 (4,3,2,2,1)(4,3,2,2,1)은 5명짜리 모둠에서 한 명이 나머지 전원과 이어진 형태다. 기대 간선 표를 보면 1–2 쌍이 1.09로 가장 크고 3–5, 4–5 쌍이 0.18로 가장 작다 — 6배 차이다. 우연에 맡겨도 활발한 두 아이는 이어지고 조용한 두 아이는 안 이어진다.
따라서 "지혜와 민호가 서로 이야기를 안 한다"는 관찰은 발견이 아니다. 기대값이 0.18인데 관측이 0인 것은 놀랍지 않다. 반대로 차수가 낮은 두 아이가 서로 이어져 있다면 그것이 기대의 5배가 넘는 사건이므로 눈여겨볼 만하다.

15-2. 연습문제 2 해설 (Solution to Exercise 2)

(가) zz 계산. z=(X실제Xˉ)/sz=(X_{\text{실제}}-\bar X)/s를 네 번 적용한다.

지표계산zz판정
군집계수0.3310.2980.041=0.0330.041\dfrac{0.331-0.298}{0.041}=\dfrac{0.033}{0.041}+0.80z<2\lvert z\rvert\lt2 — 차수로 설명됨
모둠 분할 QQ0.4020.1150.038=0.2870.038\dfrac{0.402-0.115}{0.038}=\dfrac{0.287}{0.038}+7.55강하게 유의
E-I (성별)0.556(0.048)0.062=0.5080.062\dfrac{-0.556-(-0.048)}{0.062}=\dfrac{-0.508}{0.062}−8.19강하게 유의
차수동류성 rr0.221(0.184)0.075=0.0370.075\dfrac{-0.221-(-0.184)}{0.075}=\dfrac{-0.037}{0.075}−0.49z<2\lvert z\rvert\lt2 — 차수로 설명됨
답 (가): 군집계수 z=+0.80z=+0.80, 모둠 QQ z=+7.55z=+7.55, E-I(성별) z=8.19z=-8.19, 차수동류성 z=0.49z=-0.49.

(나) 보고할 것과 안 할 것.

보고할 것 (2개):
① 모둠 분할 Q=0.402Q=0.402 (z=+7.55z=+7.55) — 모둠 경계를 따라 관계가 뚜렷이 갈린다. 친구 수를 그대로 두고 500번 다시 뽑아도 이 정도로 갈리는 경우가 없었다.
② 성별 E-I =0.556=-0.556 (z=8.19z=-8.19) — 동성끼리 몰리는 정도가 성비나 친구 수로는 설명되지 않는다.

보고하지 않을 것 (2개):
③ 군집계수 0.331 (z=+0.80z=+0.80) — 무작위 평균 0.298과 사실상 같다. 0.331이라는 값 자체는 커 보이지만 이 학급의 친구 수 분포가 이미 그만큼을 만든다.
④ 차수동류성 −0.221 (z=0.49z=-0.49) — 무작위도 −0.184다. §10-3에서 본 구조적 제약(친구 많은 아이는 필연적으로 친구 적은 아이와 이어진다) 때문이며 사회적 현상이 아니다.

(다) 담임에게 할 답.

답 (다): "뭉쳐 있는 정도는 맞습니다. 다만 그건 이 반의 친구 수 분포에서 자연히 나오는 값이라 특별히 말씀드릴 것이 없습니다."

근거를 붙이면 이렇다. 군집계수 0.331은 무작위 기대 0.298과 z=0.80z=0.80밖에 차이가 안 난다. 친구 수는 그대로 두고 누구와 친한지만 제비뽑기로 다시 정해도 0.298이 나온다. 즉 삼각관계가 많은 것은 아이들이 그렇게 선택해서가 아니라 친구가 많은 아이가 몇 있으면 그 이웃들끼리 겹칠 수밖에 없어서다.

이어서 진짜 결과로 넘어가야 한다: "그보다 중요한 것은 두 가지입니다. 모둠 경계가 예상보다 훨씬 뚜렷하고(z=7.6z=7.6), 남녀가 갈리는 정도도 우연으로는 설명이 안 됩니다(z=8.2z=-8.2)."
교실 해석 — 왜 이 구분이 중요한가
군집계수 0.331을 "우리 반은 응집력이 높다"로 보고하면 담임은 있지도 않은 강점을 근거로 판단하게 된다. 반대로 성별 E-I 0.556-0.556은 실제로 개입이 필요한 지점인데 네 지표를 나란히 늘어놓으면 묻힌다.
zz로 걸러내는 것은 통계적 엄밀성의 문제가 아니라 무엇을 말할지 고르는 문제다.