실전 — QAP 로지스틱과 5단계 종합
SNA 이론 · 단계별 학습 차례

단원 5-8QAP Logistic Regression and Putting It Together

실전 — QAP 로지스틱과 5단계 종합

SNA 이론 · 단계별 학습STAGED+ 스터디

1. 오늘의 질문 (The Question)

5단계 내내 우리는 ergm() 하나만 썼다. 그런데 사회network 문헌에는 훨씬 오래된 도구가 하나 더 있다 — QAP 로지스틱 회귀(sna::netlogit). 쓰는 법도 훨씬 간단하다. 쌍 하나를 관측치 하나로 보고 그냥 로지스틱 회귀를 돌린 뒤, p값만 순열 검정으로 바꾼다.

오늘의 질문.
같은 자료에 netlogit()ergm()을 돌리면 무엇이 같고 무엇이 다른가?
둘이 다르면 어느 쪽을 믿어야 하는가?
그리고 5-4~5-7에서 배운 것을 전부 합치면, 우리 반 자료로 무엇을 어떻게 해야 하는가?

결론부터 말하면 답이 재미있다. 계수는 소수점 여섯째 자리까지 똑같이 나온다. 다른 것은 p값이고, 그리고 ERGM만 할 수 있는 일이 따로 있다.

2. QAP 로지스틱이란 무엇인가 (What QAP Logistic Regression Is)

발상은 단순하다. 무향 망에서 쌍은 (n2)\binom{n}{2}개다. 쌍 하나를 자료 한 줄로 놓는다.

결과 yy설명변수 x1x_1설명변수 x2x_2
1(1,2)A[1,2]A[1,2]성별 같으면 1학년 차이
2(1,3)A[1,3]A[1,3]
(n2)\binom{n}{2}(n1,n)(n-1,n)A[n1,n]A[n-1,n]

그리고 보통의 로지스틱 회귀를 돌린다.

logP(A[i,j]=1)P(A[i,j]=0)  =  β0+β1x1[i,j]++βpxp[i,j] \log\frac{P(A[i,j]=1)}{P(A[i,j]=0)} \;=\; \beta_0 + \beta_1 x_1[i,j] + \cdots + \beta_p x_p[i,j]
어디서 본 식이다. 5-3에서 우리는 ERGM의 조건부 로그오즈가 θ ⁣δij\boldsymbol\theta^{\!\top}\boldsymbol\delta_{ij}라는 것을 손으로 유도했다. 쌍 독립 모형에서는 δij\boldsymbol\delta_{ij}망을 전혀 안 본다edges의 변화 통계량은 언제나 1, nodematch("Sex")의 변화 통계량은 두 사람 성별이 같으면 1 아니면 0. 즉 위의 xk[i,j]x_k[i,j]글자 그대로 같은 것이다.

그러면 QAP는 어디에 붙는가 (Where QAP Comes In)

QAP는 Quadratic Assignment Procedure, 계수를 구하는 방법이 아니라 p값을 구하는 방법이다. 절차는 이렇다.

  1. 원자료로 계수 β^1\hat\beta_1을 구한다.
  2. 사람들의 이름표를 무작위로 섞는다.AA는 그대로 두고 속성만 섞거나, 속성을 두고 AA의 행·열을 같은 순열로 섞는다 (둘은 수학적으로 같다).
  3. 섞은 자료로 계수를 다시 구한다. 이것을 수천 번 반복한다.
  4. 이렇게 얻은 영 분포에서 β^1\hat\beta_1이 얼마나 극단적인지를 센다.

"이름표를 섞는다"가 핵심이다. 이 조작은 망의 구조는 하나도 건드리지 않는다. 차수 분포도, 삼각형 수도, 덩어리 모양도 그대로다. 오직 누가 누구인지만 지운다.

3. 손 계산 ① — 6명 학급의 2×2 표 (Hand Calculation I: A 2×2 Table)

여학생 1·2·3, 남학생 4·5·6인 6명 학급을 놓자. 친구 관계는 6개다.

6명 학급과 두 영 분포
그림 74. (가) 6명 학급 — 동성 간선 5개, 이성 간선 1개. (나) 같은 TT를 재는 두 영 분포.

쌍은 (62)=15\binom{6}{2}=15개다. 15줄을 전부 쓰자. 설명변수는 x=1x=1(동성) 하나뿐이다.

#성별xx 동성yy 간선#성별xx 동성yy 간선
1(1,2)여·여119(2,6)여·남00
2(1,3)여·여1110(3,4)여·남01
3(1,4)여·남0011(3,5)여·남00
4(1,5)여·남0012(3,6)여·남00
5(1,6)여·남0013(4,5)남·남11
6(2,3)여·여1114(4,6)남·남10
7(2,4)여·남0015(5,6)남·남11
8(2,5)여·남00— (표는 두 단으로 접었다)

세어 보면 2×2 표가 나온다.

간선 없음간선 있음
이성 쌍d=8d=8c=1c=19
동성 쌍b=1b=1a=5a=56
9615

닫힌 형태 최대가능도 추정 (Closed-Form MLE)

설명변수가 이진 하나뿐이면 모형이 포화(saturated)된다 — 모수 2개로 확률 2개 (π,π\pi_{\text{동}},\pi_{\text{이}})를 자유롭게 맞출 수 있다. 그래서 답이 손으로 나온다. 로그가능도는

(β0,β1)  =  alogπ+blog(1π)+clogπ+dlog(1π) \ell(\beta_0,\beta_1) \;=\; a\log\pi_{\text{동}} + b\log(1-\pi_{\text{동}}) + c\log\pi_{\text{이}} + d\log(1-\pi_{\text{이}})

이고 π\pi에 대해 미분해 0으로 놓으면 각각

π^=aa+b=56,π^=cc+d=19 \hat\pi_{\text{동}}=\frac{a}{a+b}=\frac{5}{6},\qquad \hat\pi_{\text{이}}=\frac{c}{c+d}=\frac{1}{9}

이다. 로그오즈로 바꾸면 — 여기가 이 절의 전부다.

정의값의 전개결과
이성 쌍 오즈c/dc/d1/81/80.125
동성 쌍 오즈a/ba/b5/15/15
오즈비 (OR)a/bc/d=adbc\dfrac{a/b}{c/d}=\dfrac{ad}{bc}5×81×1=401\dfrac{5\times 8}{1\times 1}=\dfrac{40}{1}40
β^0\hat\beta_0 (절편)log(c/d)\log(c/d)log0.125=log1log8=2.0794415\log 0.125=\log 1-\log 8=-2.07944152.079442-2.079442
β^1\hat\beta_1 (동성)logOR\log\mathrm{OR}log40=log5+log8=1.6094379+2.0794415\log 40=\log 5+\log 8=1.6094379+2.07944153.6888793.688879
SE(β^1)\mathrm{SE}(\hat\beta_1)1a+1b+1c+1d\sqrt{\tfrac1a+\tfrac1b+\tfrac1c+\tfrac1d}0.2+1+1+0.125=2.325\sqrt{0.2+1+1+0.125}=\sqrt{2.325}1.524795
SE(β^0)\mathrm{SE}(\hat\beta_0)1c+1d\sqrt{\tfrac1c+\tfrac1d}1+0.125=1.125\sqrt{1+0.125}=\sqrt{1.125}1.060660
Wald zzβ^1/SE\hat\beta_1/\mathrm{SE}3.688879/1.5247953.688879/1.5247952.4193
Wald pp (양측)2Φ(z)2\Phi(-\lvert z\rvert)2×0.0077752\times 0.0077750.01555
읽는 법은 5-4와 똑같다. 같은 성별이면 친구가 될 오즈가 40배다. 그리고 Wald 검정은 p=0.0156p=0.0156으로 "유의하다"고 말한다. 이 말을 기억해 두자 — §5에서 뒤집힌다.

4. 세 도구가 같은 계수를 낸다 (Three Tools, One Estimate)

y <- A[upper.tri(A)]; x <- M[upper.tri(M)]          # M = 동성이면 1
glm(y ~ x, family = binomial)
netlogit(A, M, mode = "graph", nullhyp = "qapy", reps = 2000)
ergm(nw ~ edges + nodematch("sex"), estimate = "MPLE")
ergm(nw ~ edges + nodematch("sex"))                  # MLE
도구β^0\hat\beta_0 (edges)β^1\hat\beta_1 (nodematch)SE(β^1)\mathrm{SE}(\hat\beta_1)
손 계산 (닫힌 형태)2.0794415-2.07944153.68887953.68887951.5247951
glm2.0794415-2.07944153.68887953.68887951.5247773
netlogit2.0794415-2.07944153.68887953.68887951.5247773
ergm MPLE2.0794415-2.07944153.68887953.68887951.5247891
ergm MLE2.0794415-2.07944153.68887953.68887951.5247891

MPLE와 MLE의 계수 차이는 1.33×1015-1.33\times10^{-15} — 부동소수점 잡음이다. 우연이 아니라 정리다.

왜 전부 같은가.
① 5-6에서 본 대로 MPLE는 i<jlogP(Yij=yij나머지)\sum_{i<j}\log P(Y_{ij}=y_{ij}\mid \text{나머지})를 최대화한다. 쌍 독립 모형에서는 조건부가 조건에 안 걸린다 — 나머지를 알든 모르든 확률이 같다. 그러면 유사가능도 == 진짜 가능도이므로 MPLE == MLE다.
② 그 가능도는 각 쌍이 logit1(θ ⁣δij)\mathrm{logit}^{-1}(\boldsymbol\theta^{\!\top}\boldsymbol\delta_{ij})로 독립인 베르누이 곱이다. 이것은 설계행렬이 δ\boldsymbol\delta인 로지스틱 회귀의 가능도와 글자 그대로 같은 식이다.
nodematch의 변화 통계량은 "같으면 1"이므로 QAP가 쓰는 xx와 같은 열이다.
→ 세 도구는 같은 함수를 최대화하고 있다. 다를 수가 없다.
단, 의존성 항이 하나라도 들어가면 ①이 깨진다. gwesp가 있으면 MPLE ≠ MLE이고(5-6에서 확인), QAP는 아예 그런 항을 넣을 수조차 없다(§8). "세 도구가 같다"는 것은 쌍 독립 모형에서만 성립하는 이야기다.

5. 손 계산 ② — 순열 20가지를 전부 (Hand Calculation II: All 20 Permutations)

이제 p값을 QAP 방식으로 구해 보자. 이름표를 섞는다는 것은 6명 중 누가 "여"인지를 다시 뽑는다는 뜻이다. 3명을 고르는 방법은 (63)=20\binom{6}{3}=20가지뿐이다. 손으로 다 셀 수 있다.

먼저 중요한 관찰 하나. 어느 분할을 쓰든 여 3명·남 3명이므로 동성 쌍의 수는 항상

(32)+(32)=3+3=6 \binom{3}{2}+\binom{3}{2} = 3+3 = 6

이고, 간선 수도 항상 6개다. 그러면 2×2 표가 TT(동성 간선 수) 하나로 완전히 결정된다: a=T,  b=6T,  c=6T,  d=9(6T)=3+Ta=T,\; b=6-T,\; c=6-T,\; d=9-(6-T)=3+T. 따라서 β^1\hat\beta_1TT의 증가함수이고, β^1\hat\beta_1에 대한 순열 검정은 그냥 TT에 대한 순열 검정이다.

간선 6개는 (1,2)(1,3)(2,3)(3,4)(4,5)(5,6)이다. 각 분할마다 양 끝이 같은 조에 들어간 간선을 센다. 스무 줄 전부:

#"여"로 지정(1,2)(1,3)(2,3)(3,4)(4,5)(5,6)TT
11,2,3·5
21,2,4····2
31,2,5····2
41,2,6···3
51,3,4···3
61,3,5·····1
71,3,6····2
81,4,5····2
91,4,6·····1
101,5,6···3
112,3,4···3
122,3,5·····1
132,3,6····2
142,4,5····2
152,4,6·····1
162,5,6···3
173,4,5···3
183,4,6····2
193,5,6····2
204,5,6·5

분포를 세면 T=1T=1이 4가지, T=2T=2가 8가지, T=3T=3이 6가지, T=5T=5가 2가지다 (합 20 ✓). 관측값은 T=5T=5이므로

pQAP  =  #{T5}20  =  220  =  0.10 p_{\text{QAP}} \;=\; \frac{\#\{T \ge 5\}}{20} \;=\; \frac{2}{20} \;=\; \boxed{0.10}
Wald는 0.0156, QAP는 0.10. 여섯 배 넘게 벌어졌고, 유의수준 5%에서 결론이 정반대다. 같은 계수 β^1=3.6889\hat\beta_1=3.6889를 놓고 두 자가 다른 눈금을 매긴 것이다.
왜 20가지 중 2가지인가 — 순열 검정의 해상도.
3명/3명 분할은 "누가 여자냐"를 뒤집어도 같은 분할이다. 그래서 20가지 중 서로 다른 분할은 10가지뿐이고, 그중 하나가 관측된 분할 자신이다. 순열 검정은 관측값을 항상 포함하므로 pp는 아무리 작아도 2/20=0.12/20=0.1 밑으로 못 내려간다.
nn이 작으면 QAP는 5% 유의를 구조적으로 낼 수 없다. 20명 학급이면 (2010)=184756\binom{20}{10}=184\,756가지라 이 문제는 사라진다.

720개 순열로 확인 (Checking All 720 Permutations)

P <- allp(1:6)                        # 6! = 720
tt <- apply(P, 1, function(p) { s <- sex[p]; sum(y * (outer(s,s,"==")*1)[up]) })
table(tt)
#   1   2   3   5
#  144 288 216  72        ← 20가지 × (3!·3! = 36) = 720 ✓
mean(tt >= 5)
# [1] 0.1

6. 같은 수를 재는 두 개의 자 (Two Rulers for the Same Number)

둘의 차이가 어디서 오는지 정확히 짚자. 두 검정 모두 같은 통계량 TT를 본다. 다른 것은 "TT가 우연히 얼마나 흔들리는가"를 재는 방식이다.

고전 로지스틱QAP
우연이란간선 6개를 15쌍에 무작위로 흩뿌리는망은 그대로 두고 이름표를 섞는
보존되는 것간선 수, 동성 쌍 수간선 수, 동성 쌍 수, + 차수 분포·삼각형·덩어리 모양 전부
TT의 분포초기하 Hyper(15,6,6)\mathrm{Hyper}(15,6,6)20가지 분할의 분포

초기하 쪽은 공식이 있다. m=15m=15쌍, 간선 e=6e=6, 동성 쌍 s=6s=6일 때

E[T]=esm=6×615=2.4 E[T] = \frac{es}{m} = \frac{6\times 6}{15} = 2.4 Var(T)=esmmsmmem1=6×0.4×0.6×914=1.44×0.6428571=0.9257143 \mathrm{Var}(T) = e\cdot\frac{s}{m}\cdot\frac{m-s}{m}\cdot\frac{m-e}{m-1} = 6\times 0.4\times 0.6\times \frac{9}{14} = 1.44\times 0.6428571 = 0.9257143

순열 쪽은 §5의 720개 값에서 직접 구한다.

E[T]=144(1)+288(2)+216(3)+72(5)720=1728720=2.4 E[T]=\frac{144(1)+288(2)+216(3)+72(5)}{720}=\frac{1728}{720}=2.4 E[T2]=144(1)+288(4)+216(9)+72(25)720=5040720=7 E[T^2]=\frac{144(1)+288(4)+216(9)+72(25)}{720}=\frac{5040}{720}=7 Var(T)=72.42=75.76=1.24 \mathrm{Var}(T)=7-2.4^2=7-5.76=1.24
평균은 정확히 같고(둘 다 2.4), 분산만 다르다.
sdQAP=1.24=1.1136\mathrm{sd}_{\text{QAP}}=\sqrt{1.24}=1.1136, sd고전=0.9257=0.9621\mathrm{sd}_{\text{고전}}=\sqrt{0.9257}=0.96211.157배.
같은 T=5T=5를 재는데 z고전=52.40.9621=2.7023z_{\text{고전}}=\dfrac{5-2.4}{0.9621}=2.7023, zQAP=52.41.1136=2.3349z_{\text{QAP}}=\dfrac{5-2.4}{1.1136}=2.3349.
고전은 자를 짧게 잡아서 같은 거리를 더 멀다고 읽는다.

여기서는 순열 쪽 분산이 더 컸다. 하지만 이것이 언제나 그런 것은 아니다 — 그게 §7의 주제다.

7. R 검증 ① — 효과가 0인데 몇 번이나 유의하다고 하는가 (Verification I: Type I Error Rate)

"어느 쪽이 옳으냐"는 말로 정할 문제가 아니다. 참 효과가 0인 자료를 일부러 만들어서 검정을 돌려 보면 된다. α=5%\alpha=5\%로 검정했으면 100번 중 5번만 "유의"가 나와야 한다.

설계 (Design)

yy는 가라테(34명, 78간선)로 고정한다. 설명변수 xx으로 놓는다 ("이 두 사람이 다른 관계로도 이어져 있는가"). 참 효과를 0으로 만들려면 xxyy와 아무 상관이 없어야 한다.

gx <- sample_degseq(d, method = "vl")     # 가라테와 차수가 같은 무작위 망
B  <- as.matrix(as_adjacency_matrix(gx))
p  <- sample(34); B <- B[p, p]            # ★ 이름표까지 섞는다
마지막 줄이 없으면 실험이 무효다. sample_degseq각 사람의 차수를 그대로 유지한다. 그러면 가라테에서 차수 17인 34번은 xx에서도 차수 17이고, 두 망은 "허브가 같은 자리에 있다"는 진짜 관계를 갖는다. 실제로 이름표를 안 섞으면 겹침 TT의 평균이 10.84가 아니라 26.95가 나오고 두 검정 모두 100% 가까이 기각한다 — 1종 오류가 아니라 옳은 기각이다. 이 실험을 처음 짤 때 여기서 한 번 틀렸다.

결과 (Results)

1종 오류율 실험
그림 75. (가) 참 효과가 0일 때 겹침 TT의 실제 분포와 고전이 가정하는 분포. (나) 명목 5%로 검정했을 때의 실제 기각률.
xx의 종류TT 실제 sd고전 가정 sd고전 기각률QAP 기각률
허브 있는 망
(차수 보존 + 이름표 섞음)
3.60592.83781.27112.6%3.6%
허브 없는 망
G(34,78)G(34,78)
2.76492.83780.9744.0%2.6%
허브가 있으면 고전 검정이 무너진다. 명목 5%인데 실제로는 12.6% — 두 배 반이다. α=1%\alpha=1\%에서도 2.8%로 세 배 가까이 뜬다. 원인은 그림 75(가)에 그대로 보인다: TT의 실제 분포가 고전이 가정하는 것보다 1.27배 넓다. 평균은 둘 다 10.84로 정확히 같은데 꼬리가 더 두껍다.
반대로 허브가 없는 G(34,78)G(34,78)끼리는 sd 비가 0.974로 거의 1이고, 고전 기각률도 4.0%로 정상이다.

왜 허브가 문제인가? 고전 로지스틱은 561개 쌍을 독립 관측치로 센다. 하지만 사람 34명이 561개 쌍을 만든다 — 한 사람이 33개 쌍에 등장한다. 차수가 큰 사람 하나가 있으면 그 사람이 걸린 33개 쌍이 한꺼번에 움직인다. 자유도가 561이 아니라 훨씬 작은 셈이고, 그래서 분산이 커진다. 가라테의 2-경로 수 i(di2)=528\sum_i\binom{d_i}{2}=528이 그 의존의 크기다.

정직하게 — 반대 방향으로 틀리는 경우도 있다 (In Fairness: It Can Err the Other Way)

같은 실험을 노드 속성(§3처럼 "같은 조인가")으로 하면 이야기가 달라진다. 가라테 망은 그대로 두고 16/18 무작위 분할을 4000번 뽑았다.

설명변수TT 실제 sd고전 가정 sd고전 기각률QAP 기각률
노드 속성 (16/18 분할)3.79264.09960.9252.6%3.8%
여기서는 고전이 오히려 보수적이다(5%여야 하는데 2.6%). 즉 "QAP는 언제나 고전보다 큰 p값을 준다"는 말은 틀렸다. §5의 6명 예제에서는 QAP가 컸고(0.10 vs 0.0156), 여기서는 고전이 크다.
어느 쪽으로 틀릴지는 자료 구조에 달려 있고 미리 알 수 없다. 그래서 짐작하지 말고 순열로 직접 재는 것이다.

덤 — netlogit()pp를 그대로 믿지 말 것 (Aside: Don't Trust the Printed p-Value)

netlogit()pgreq는 작은 망에서 정확한 순열 pp와 어긋난다. 연습 1의 7명 자료(§15)로 reps=20000을 돌리면 pgreq = 0.0337이 나오는데 전수 계산으로 얻는 정확한 값은 2/35=0.05712/35 = 0.0571이다.
원인을 추적해 보면: nl$dist에는 계수가 아니라 zz 통계량이 들어 있고, 관측값과 똑같은 2×2 표를 주는 순열이 20000번 중 1161번(=0.058, 정확값 0.0571과 일치) 나오는데, glm의 반복 계산이 자료 순서에 따라 마지막 3비트를 다르게 내는 바람에 그 1161개가 10개의 서로 다른 값으로 갈라지고 674개만 관측 zz 이상으로 셈된다 (674/20000=0.0337674/20000=0.0337). 즉 동점 처리가 부동소수점에 맡겨져 있다.
→ 망이 작아 같은 표가 반복되는 상황(학급 자료가 딱 그렇다)에서는 순열을 직접 세라. §5처럼 열 줄이면 된다.

8. QAP가 못 하는 일 (What QAP Cannot Do)

p값 이야기만 하면 QAP가 더 나아 보인다. 하지만 QAP에는 구조적인 한계가 있다.

QAP 로지스틱은 쌍 독립을 가정하는 것이 아니라 쌍 독립 위에 세워져 있다.
회귀식 logitπij=β0+βkxk[i,j]\mathrm{logit}\,\pi_{ij}=\beta_0+\sum\beta_k x_k[i,j]의 오른쪽에는 yy 자신이 등장할 수 없다. xxyy를 넣으면 자기 자신을 설명하는 꼴이 된다.
그런데 5-6~5-7에서 배운 triangle·gwesp는 바로 그런 항이다 — "이 쌍에 공통 친구가 몇 명인가"는 yy를 봐야 안다.
→ QAP로는 전이성을 모형에 넣을 수 없다. 통제할 수도, 추정할 수도 없다.
할 수 있는 일QAP 로지스틱ERGM
속성 효과(동질성·활동성) 추정가능가능
전이성·뭉침을 모형에 넣기불가가능
망을 모의 생성(simulate)불가가능
gof()로 채점없음가능
의존 구조를 자료에서 지우지 않고 다루기지운다(잡음 취급)모형에 넣는다
철학의 차이. QAP는 의존 구조를 귀찮은 잡음으로 보고 순열로 상쇄한다. ERGM은 의존 구조를 설명해야 할 현상으로 보고 모수를 붙인다.
"우리 반 아이들이 끼리끼리 뭉치는가"가 연구 질문 자체인 교실 연구에서는 QAP가 그 질문을 아예 물을 수 없다.

9. R 검증 ② — FMH에서 두 도구 맞대기 (Verification II: Both Tools on FMH)

이제 실제 크기의 자료로. FMH(Faux Magnolia High)는 1461명, 974간선, 쌍 1,066,530개다. 5-5에서 만든 종합 모형을 두 도구로 각각 적합했다.

## ERGM (쌍 독립 항만)
f5 <- ergm(fmh ~ edges + nodematch("Grade") + absdiff("Grade") +
                 nodematch("Sex") + nodefactor("Sex") + nodematch("Race"))

## QAP 로지스틱 — 같은 설계행렬을 손으로 만들어서
X <- list(sameGrade = outer(gr,gr,"==")*1,  absGrade = abs(outer(gr,gr,"-")),
          sameSex   = outer(sx,sx,"==")*1,  maleCnt  = outer((sx=="M")*1,(sx=="M")*1,"+"),
          sameRace  = outer(rc,rc,"==")*1)
netlogit(Y, xa, mode = "graph", nullhyp = "classical")
ergm 계수netlogit 계수차이ergm SEnetlogit SE
edges (절편)8.1426308-8.14263088.1426319-8.14263191.2×106-1.2\times10^{-6}0.21215190.2121396
nodematch.Grade1.51305651.51305651.51305761.51305761.1×1061.1\times10^{-6}0.19436690.1943508
absdiff.Grade1.0399630-1.03996301.0399623-1.03996237.4×1077.4\times10^{-7}0.13025170.1301841
nodematch.Sex0.85830600.85830600.85830600.85830602.8×1082.8\times10^{-8}0.07123140.0712376
nodefactor.Sex.M0.1476605-0.14766050.1476605-0.14766058.0×1010-8.0\times10^{-10}0.03945050.0394517
nodematch.Race1.19085151.19085151.19085151.19085155.0×109-5.0\times10^{-9}0.08146470.0814680
1461명 자료에서도 계수가 소수점 여섯째 자리까지 같다. 남은 차이는 최대 1.2×1061.2\times10^{-6}로, glmergm의 수렴 허용오차 차이일 뿐이다. SE도 10510^{-5} 수준에서 일치한다.
→ §4에서 손으로 증명한 "세 도구는 같은 함수를 최대화한다"가 실물 자료에서 그대로 확인됐다. 쌍 독립 모형만 쓸 것이라면 어느 도구를 쓰든 계수는 같다.

10. 뭉침을 넣으면 동질성이 줄어든다 (Adding Clustering Shrinks Homophily)

여기서부터가 ERGM만 할 수 있는 일이다. 같은 모형에 gwesp(0.25) 하나를 더한다.

f6 <- ergm(fmh ~ edges + nodematch("Grade") + absdiff("Grade") +
                 nodematch("Sex") + nodefactor("Sex") + nodematch("Race") +
                 gwesp(0.25, fixed = TRUE),
           control = control.ergm(MCMLE.maxit = 40, seed = 1))

28.5초 만에 수렴했다(수렴 p=0.0070p=0.0070, 5-7 기준대로 작아야 좋다). MCMC 표본 2870개, 번인 65536, 간격 2048, ESS 215~1704, Geweke z\lvert z\rvert 최대 1.44 — 5-7의 네 조건을 모두 통과한다.

쌍 독립 θ^\hat\theta+gwesp θ^\hat\theta크기 변화쌍 독립 pp+gwesp pp
학년 일치1.513061.1466324%-24\%7.0×10157.0\times10^{-15}8.5×10108.5\times10^{-10}
학년 차이1.03996-1.039960.98736-0.987365%-5\%1.4×10151.4\times10^{-15}4.0×10154.0\times10^{-15}
성별 일치0.858310.7482113%-13\%2.0×10332.0\times10^{-33}1.4×10321.4\times10^{-32}
남학생 수0.14766-0.147660.06580-0.0658055%-55\%0.000180.023
인종 일치1.190850.9035024%-24\%2.2×10482.2\times10^{-48}1.7×10361.7\times10^{-36}
gwesp(0.25)1.773616.3×102756.3\times10^{-275}
AIC12952.3012049.92902.38-902.38BIC 13023.58 → 12133.08
FMH 계수 비교
그림 76. 뭉침 항을 넣기 전후의 계수(막대는 95% 구간). 다섯 개가 모두 0 쪽으로 줄었다.
왜 줄어드는가. 같은 학년 친구끼리는 삼각형을 이루기 쉽다. 뭉침 항이 없는 모형은 "삼각형 때문에 생긴 간선"을 설명할 방법이 없으니 학년 일치 계수로 떠넘긴다. gwesp가 들어와 그 몫을 가져가면 학년의 몫이 줄어든다.
회귀에서 빠뜨린 변수 편향과 똑같은 구조다. 다만 여기서 빠진 변수는 다른 속성이 아니라 망 자신의 구조다.
실무적으로 가장 중요한 줄은 "남학생 수"다. 계수가 0.1480.066-0.148 \to -0.066으로 55% 줄고 pp가 0.00018 → 0.023이 됐다. 즉 "남학생이 여학생보다 친구가 적다"는 결론의 절반 이상이 사실은 뭉침 때문이었다. 쌍 독립 모형만 돌리고 이 결과를 보고했다면 효과 크기를 두 배로 부풀려 말한 셈이다.

11. R 검증 ③ — gof()로 채점 (Verification III: Grading with GOF)

5-7에서 배운 규칙대로 모형에 안 넣은 특성으로 채점한다. (모형 통계량은 두 모형 모두 p=0.36p=0.36~0.96으로 통과한다 — 적률 방정식이 강제하므로 당연하고, 아무 의미도 없다.)

FMH gof
그림 77. FMH 두 모형의 gof. 세로 막대는 100회 모의의 최소~최대, 점은 평균, 검은 동그라미는 관측값.

ESP — 쌍 독립의 참패 (ESP: Where Dyadic Independence Collapses)

ESP관측쌍 독립 모형+gwesp 모형
평균최소~최대pp평균최소~최대pp
0626943.52885~10080.00606.64533~6600.54
12326.220~180.00310.68208~3900.06
2830.040~10.0031.6411~650.00
3240.000~00.002.540~90.00
480.000~00.000.110~20.00

공통 친구가 한 명이라도 있는 간선이 관측 348개인데, 쌍 독립 모형은 100번 모의해서 최대 19개를 만들었다. 삼각형으로 보면 더 극적이다 — 관측 169개, 쌍 독립 모의 평균 1.89개(범위 0~7), z=119.4z=119.4. gwesp를 넣으면 평균 139.4(114~172), z=2.37z=2.37로 내려온다.

차수 — gwesp가 거의 다 고쳤다 (Degree: GWESP Nearly Fixes It)

차수관측쌍 독립 평균pp+gwesp 평균pp
0 (외톨이)524434.420.00553.620.24
1403492.970.00404.531.00
2271310.370.00246.480.12
3128142.540.22130.370.80
48555.370.0065.460.02
53017.640.0232.480.80
6135.680.0015.490.66
751.650.027.260.56
차수를 모형에 넣은 적이 없는데 차수가 맞게 됐다. 쌍 독립 모형은 여덟 칸 중 일곱 칸이 어긋났고(특히 외톨이가 524명인데 434명밖에 못 만든다), gwesp를 넣으니 차수 4 한 칸(p=0.02p=0.02)만 남는다.
5-7 가라테에서는 gwesp가 차수를 전혀 못 고쳤다(차수 2 칸이 p=0.00p=0.00). 같은 항이 자료에 따라 다르게 작동한다 — 그래서 매번 채점해야 한다.
남은 실패도 정직하게. ① ESP 2 이상은 gwesp를 넣어도 여전히 p=0.00p=0.00이다 (관측 83/24/8 vs 모의 31.6/2.5/0.1). 뭉침의 은 맞췄지만 진한 뭉침은 못 만든다. ② 거리 분포는 3~14가 p=0.02p=0.02~0.04로 여전히 어긋난다. ③ 연결되지 않은 쌍이 관측 969,152개인데 쌍 독립 모의는 851,835개 — 모형이 망을 너무 많이 잇는다.
FMH는 아직 "잘 맞는 모형"이 아니다. AIC가 902 줄었다는 것은 "더 나아졌다"이지 "이제 맞다"가 아니다.

12. 세 도구를 언제 쓰는가 (Which Tool When)

QAP 로지스틱ERGM (쌍 독립)ERGM (+의존 항)
계수완전히 같다 (10610^{-6} 이내)다르다 (동질성 5-5~55%-55\%)
pp값의 근거이름표 순열모형 기반 WaldMCMC 기반 Wald
허브가 많을 때안전1종 오류 12.6%의존을 모형화
작은 학급(n10n\le 10)pp의 해상도 한계가능퇴화 위험
뭉침·소외 재현불가불가가능
모의·gof없음가능가능
계산 시간(FMH)QAP 100회 수십 분수 초28.5초
쓸 자리망↔망 회귀
("친한 사이가 같은 모둠인가")
속성 효과만 빠르게
(탐색·초기 확인)
보고서에 실을 최종 모형
실전 권고. 둘 중 하나를 고르는 문제가 아니다. 순서다.
① 쌍 독립 ERGM으로 빠르게 계수를 본다(= QAP와 같은 값이다).
gof()를 돌려 ESP·차수·거리를 채점한다. 여기서 거의 반드시 실패한다.
③ 실패한 칸에 맞는 의존 항(gwesp, gwdegree, isolates)을 넣고 다시 적합한다.
④ 계수가 얼마나 움직였는지 확인한다 — 많이 움직였다면 ①의 결론은 폐기다.
⑤ 망↔망 회귀처럼 ERGM으로 표현하기 어려운 질문이 남으면 그때 QAP를 쓴다.

13. 교실 데이터 적용 설계 (Designing a Classroom Study)

① 무엇을 모으는가
· 관계: "요즘 가장 자주 어울리는 친구를 3~5명 적어 주세요"(지명 상한을 두면 차수 분포가 잘려서 gwdegree 해석이 왜곡된다 — 상한을 적어 둘 것).
· 속성: 성별, 이전 학년 반, 통학 구역, 방과후 프로그램, 학업 수준대 등 동질성 후보. 5-4·5-5에서 본 대로 nodematch(끼리끼리)와 nodefactor(활동성)를 반드시 같이 넣어야 서로의 계수를 오염시키지 않는다.
· 반이 25명이면 쌍은 300개다. 계수 5~6개까지가 무리 없는 한계다.
② 어떤 순서로 모형을 세우는가
1. edges만 → 밀도 확인
2. + nodematch류 → 동질성 (5-4)
3. + nodefactor·absdiff → 활동성·거리 (5-5)
4. gof() → 무엇이 안 맞는지 본다 (5-7)
5. + gwesp(0.25~0.5, fixed=TRUE) → 뭉침 (5-6). triangle은 절대 쓰지 않는다 — 25명 학급에서 임계값은 θt=3θe/(n2)=3θe/23\theta_t^{*}=3\lvert\theta_e\rvert/(n-2)=3\lvert\theta_e\rvert/23로 아주 낮다.
6. 외톨이가 안 맞으면 + isolates 또는 gwdegree
7. 4번으로 돌아가 재채점 — 고치다 통과했던 칸이 깨지지 않았는지
③ 보고 전 점검(5-7 여섯 항목 + 오늘 두 항목)
did not mix / constant 경고가 없었는가
□ 궤적이 0 주변에서 진동하는가 · ESS ≥ 100 · Geweke z<2\lvert z\rvert < 2
안 넣은 특성의 gof를 봤는가 (모형 통계량 pp는 무시)
□ 차수 0 칸을 확인했는가 (소외 학생 이야기의 근거)
seed를 기록했는가 · 계수는 소수 둘째 자리까지만
[오늘] 의존 항을 넣기 전후로 동질성 계수가 얼마나 움직였는가
[오늘] 허브(인기 학생)가 뚜렷하면 쌍 독립 pp값을 믿지 말 것
④ 협의회에서 하는 말
· 계수 대신 오즈비로: "같은 이전 반 출신끼리는 친구가 될 오즈가 3.1배입니다."
· gof가 통과한 영역 안에서만: "뭉치는 정도와 친구 수 분포는 잘 재현하지만, 공통 친구가 셋 이상인 진한 무리는 못 만듭니다. 그 부분 해석은 조심해야 합니다."
· 의존 항 전후 비교를 밝힌다: "뭉침을 함께 고려하면 성별 효과가 절반으로 줄어듭니다. 즉 '남학생이 친구가 적다'기보다 '남학생 무리가 덜 뭉친다'에 가깝습니다."
· 모형은 사람 이름을 말하지 않는다: 외톨이가 몇 명인지는 재현해도 "누가 외톨이가 될지"는 예측하지 않는다. 개별 학생 판단은 관찰과 상담의 몫이다.

14. 5단계 정리 (Stage 5 Wrap-up)

단원한 문장
5-1만드는 일(4단계)에서 추정하는 일로 — 자료가 먼저 있고 모형을 맞춘다.
5-2P(y)=κ1eθg(y)P(y)=\kappa^{-1}e^{\boldsymbol\theta^{\top}\mathbf g(y)}. κ\kappa는 거의 언제나 계산 불가.
5-3계수를 읽는 유일한 올바른 방법은 변화 통계량 δij\boldsymbol\delta_{ij}와 조건부 로그오즈.
5-4nodematch — 동질성. 계수 → 오즈비. 3-7의 E-I 지수를 회수한다.
5-5nodefactor·absdiff — 활동성과 선택성은 서로의 계수를 오염시킨다.
5-6triangle퇴화한다. θt=3θe/(n2)\theta_t^{*}=3\lvert\theta_e\rvert/(n-2)를 넘으면 완전망. 대안은 gwesp.
5-7κ\kappa를 못 더해도 비(比)는 계산된다(MCMC). gof의 절반(모형 통계량)은 읽을 가치가 없다.
5-8쌍 독립이면 QAP=ERGM. 다른 건 pp값. 의존 항을 넣으면 동질성이 24~55% 줄어든다.
5단계를 한 문장으로.
망 자료에서 "무엇이 무엇에 영향을 주는가"를 말하려면, 사람의 속성망 자신의 구조동시에 모형에 넣어야 한다. 둘 중 하나를 빼면 빠진 쪽의 몫이 남은 쪽 계수로 흘러들어 간다 — 그리고 그 크기는 오늘 본 대로 결론을 바꿀 만큼 크다.

15. 연습문제 (Exercises)

연습 1. 7명 학급을 손으로 (§3·§5·§6의 절차를 그대로)
여학생 1·2·3·4, 남학생 5·6·7. 친구 관계 7개: (1,2) (1,3) (2,3) (2,4) (5,6) (5,7) (4,5).
(가) 쌍은 몇 개인가? 그중 동성 쌍은 몇 개인가? 2×2 표를 만들어라.
(나) β^0\hat\beta_0, β^1\hat\beta_1, 오즈비, SE(β^1)\mathrm{SE}(\hat\beta_1), Wald pp를 닫힌 형태로 구하라.
(다) 이름표를 섞는 방법은 몇 가지인가? TT(동성 간선 수)의 순열 분포를 구해 정확한 QAP pp를 내라. (힌트: §5처럼 동성 쌍 수가 항상 같은지 먼저 확인할 것.)
(라) 초기하 분포로 E[T]E[T]Var(T)\mathrm{Var}(T)를 구하고, z고전z_{\text{고전}}zQAPz_{\text{QAP}}를 비교하라. 6명 예제(§6)와 어느 쪽이 더 큰가가 같은가?
§16 해설
연습 2. FMH 계수를 협의회 언어로 (5-4의 오즈비 + 오늘의 §10)
(가) 학년 일치 계수 1.513061.146631.51306 \to 1.14663, 인종 일치 1.190850.903501.19085 \to 0.90350오즈비로 바꾸고, 오즈비가 몇 % 줄었는지 구하라. 계수의 감소율(24%-24\%)과 오즈비의 감소율이 왜 다른가?
(나) 남학생 수 계수가 0.147660.06580-0.14766 \to -0.06580이다. 남·남 쌍이 여·여 쌍에 비해 갖는 오즈의 배수를 두 모형에서 각각 구하라(힌트: nodefactor의 변화 통계량은 그 쌍의 남학생 수이므로 남·남이면 2다).
(다) 학부모 협의회에 어느 모형의 숫자를 보고할 것인가. 한 문단으로 근거를 쓰되, §11의 gof 결과에서 말하면 안 되는 것도 한 가지 지적하라.
§16 해설 먼저 풀고 나서 §16 해설과 맞춰 볼 것.
연습 3. 실험 설계의 함정 찾기 (§7)
어떤 연구자가 "QAP가 정말 필요한가"를 확인하려고 이런 실험을 했다.
① 우리 반 친구망 yy를 관측한다. ② 같은 반 아이들의 같은 모둠 여부 행렬을 xx로 만든다. ③ xx의 행·열을 무작위 순열로 섞어 xx^{*}를 만든다. ④ yyxx^{*}에 회귀하면 참 효과가 0이므로, 고전 pp가 5%보다 크게 나오면 "고전 검정도 괜찮다"고 결론짓는다. (가) 이 설계는 §7에서 내가 처음에 저지른 실수를 피했는가? 이유는?
(나) 그런데도 이 실험으로는 "고전 검정이 괜찮다"를 일반적으로 결론지을 수 없다. 왜인가? §7의 두 줄짜리 표를 근거로 답하라.
(다) 이 연구자가 실제로 확인해야 할 것은 무엇인가? 한 줄로 절차를 고쳐 써라.
§16 해설 먼저 풀고 나서 §16 해설과 맞춰 볼 것.

16. 해설과 답 (Solutions)

연습 1 해설 (Exercise 1)

(가) 21쌍을 전부 쓴다. (72)=21\binom{7}{2}=21. 동성 쌍은 (42)+(32)=6+3=9\binom{4}{2}+\binom{3}{2}=6+3=9개, 이성 쌍은 4×3=124\times 3=12개다(합 21 ✓).

#성별xxyy#성별xxyy#성별xxyy
1(1,2)여여118(2,5)여남0015(5,6)남남11
2(1,3)여여119(3,5)여남0016(1,7)여남00
3(2,3)여여1110(4,5)여남0117(2,7)여남00
4(1,4)여여1011(1,6)여남0018(3,7)여남00
5(2,4)여여1112(2,6)여남0019(4,7)여남00
6(3,4)여여1013(3,6)여남0020(5,7)남남11
7(1,5)여남0014(4,6)여남0021(6,7)남남10
간선 없음간선 있음
이성 쌍d=11d=11c=1c=112
동성 쌍b=3b=3a=6a=69
14721

(나) 닫힌 형태. 전개를 전부 쓰면:

전개왜 그 값인가
이성 오즈c/d=1/11c/d = 1/110.0909091이성 12쌍 중 친구가 1쌍뿐
동성 오즈a/b=6/3a/b = 6/32동성 9쌍 중 6쌍이 친구
오즈비adbc=6×113×1=663\dfrac{ad}{bc}=\dfrac{6\times 11}{3\times 1}=\dfrac{66}{3}222 ÷ 0.0909091 = 22
β^0\hat\beta_0log(1/11)=log11\log(1/11)=-\log 112.3978953-2.3978953이성 쌍의 기준 로그오즈
β^1\hat\beta_1log22=log2+log11=0.6931472+2.3978953\log 22=\log 2+\log 11=0.6931472+2.39789533.09104253.0910425동성이면 더해지는 양
SE(β^1)\mathrm{SE}(\hat\beta_1)16+13+11+111=1.5909091\sqrt{\tfrac16+\tfrac13+\tfrac11+\tfrac1{11}}=\sqrt{1.5909091}1.2613124네 항 중 1/c=11/c=1
혼자 63%를 차지한다
Wald zz3.0910425/1.26131243.0910425/1.26131242.450656
Wald pp2Φ(2.450656)2\Phi(-2.450656)0.014260"유의하다"고 말한다
(나) 답: β^0=2.3979\hat\beta_0=-2.3979, β^1=3.0910\hat\beta_1=3.0910(오즈비 22배), SE=1.2613\mathrm{SE}=1.2613, Wald p=0.0143p=0.0143.
glm·ergm MPLE 모두 같은 값을 낸다(넷째 자리까지 일치).

(다) 순열. 여 4명을 고르는 방법은 (74)=35\binom{7}{4}=35가지. 어느 분할이든 동성 쌍 수는 (42)+(32)=9\binom{4}{2}+\binom{3}{2}=9항상 같다(§5의 확인 절차). 간선도 7개 고정이므로 2×2 표가 TT 하나로 결정되고, β^1\hat\beta_1TT의 증가함수다. 35가지를 세면:

TT123456
가짓수2101542235
(다) 답: pQAP=#{T6}35=235=0.0571p_{\text{QAP}}=\dfrac{\#\{T\ge 6\}}{35}=\dfrac{2}{35}=\boxed{0.0571}.
Wald p=0.0143p=0.01434배다. 6명 예제와 방향이 같다 — 고전이 더 유의하다고 말한다.
그리고 여기서도 가능한 최소 pp2/35=0.05712/35=0.0571이다(관측 분할과 그 여집합). 7명 학급에서는 QAP로 5% 유의를 낼 수 없다.

(라) 두 자의 비교. m=21m=21, e=7e=7, s=9s=9:

E[T]=esm=7×921=3 E[T]=\frac{es}{m}=\frac{7\times 9}{21}=3 Var고전(T)=7×921×1221×217211=7×0.4285714×0.5714286×0.7=1.2 \mathrm{Var}_{\text{고전}}(T)=7\times\frac{9}{21}\times\frac{12}{21}\times\frac{21-7}{21-1} =7\times0.4285714\times0.5714286\times0.7=1.2

순열 쪽은 (다)의 분포에서:

E[T]=2(1)+10(2)+15(3)+4(4)+2(5)+2(6)35=2+20+45+16+10+1235=10535=3 E[T]=\frac{2(1)+10(2)+15(3)+4(4)+2(5)+2(6)}{35}=\frac{2+20+45+16+10+12}{35}=\frac{105}{35}=3 E[T2]=2(1)+10(4)+15(9)+4(16)+2(25)+2(36)35=2+40+135+64+50+7235=36335=10.371429 E[T^2]=\frac{2(1)+10(4)+15(9)+4(16)+2(25)+2(36)}{35}=\frac{2+40+135+64+50+72}{35}=\frac{363}{35}=10.371429 VarQAP(T)=10.3714299=1.371429 \mathrm{Var}_{\text{QAP}}(T)=10.371429-9=1.371429
(라) 답: 평균은 둘 다 정확히 3.
sdQAP=1.371429=1.17108\mathrm{sd}_{\text{QAP}}=\sqrt{1.371429}=1.17108, sd고전=1.2=1.09545\mathrm{sd}_{\text{고전}}=\sqrt{1.2}=1.095451.069배.
z고전=631.09545=2.7386z_{\text{고전}}=\dfrac{6-3}{1.09545}=2.7386, zQAP=631.17108=2.5617z_{\text{QAP}}=\dfrac{6-3}{1.17108}=2.5617.
방향은 6명 예제와 같다(순열 쪽이 더 넓다). 다만 배수는 1.157 → 1.069로 줄었다 — 사람이 늘수록 쌍 사이의 의존이 상대적으로 옅어지기 때문이다.
교실 해석. 7명 모둠에서 "여자끼리만 논다"가 눈에 확 보여도(오즈 22배!), 통계적으로는 아직 아무 말도 못 한다(p=0.057p=0.057, 그리고 이보다 작은 값은 애초에 불가능). 아이가 7명이면 "우연히 그렇게 갈릴" 방법이 35가지뿐이라서다. 모둠 단위 자료로 유의성을 논하지 말고, 학급 전체(25~30명)로 모을 것.

연습 2 해설 (Exercise 2)

(가) 오즈비. 계수는 로그오즈비이므로 exp\exp를 씌운다.

쌍 독립+gwesp계수 감소율오즈비 감소율
학년 일치e1.51306=4.5406e^{1.51306}=4.5406e1.14663=3.1476e^{1.14663}=3.147624.2%-24.2\%30.7%-30.7\%
인종 일치e1.19085=3.2899e^{1.19085}=3.2899e0.90350=2.4682e^{0.90350}=2.468224.1%-24.1\%25.0%-25.0\%
(가) 답: 학년 일치 오즈비 4.54배 → 3.15배(30.7%-30.7\%), 인종 일치 3.29배 → 2.47배(25.0%-25.0\%).
왜 감소율이 다른가: exp\exp는 비선형이다. 오즈비의 비는 eθ6/eθ5=eθ6θ5e^{\theta_6}/e^{\theta_5}=e^{\theta_6-\theta_5}계수의 차가 지배하지 계수의 비가 지배하지 않는다. 학년은 차가 0.3664-0.3664e0.3664=0.693e^{-0.3664}=0.693(30.7%-30.7\%), 인종은 차가 0.2874-0.2874e0.2874=0.750e^{-0.2874}=0.750(25.0%-25.0\%). 계수 감소율이 둘 다 24%-24\%로 같았던 것은 우연이다.

(나) 남·남 쌍. nodefactor("Sex")는 기준(여)을 빼고 그 쌍의 남학생 수를 변화 통계량으로 갖는다. 여·여면 0, 여·남이면 1, 남·남이면 2다. 따라서 여·여 쌍 대비 로그오즈 차이는 2θ2\theta다.

변화 통계량쌍 독립: eδθe^{\delta\theta}+gwesp: eδθe^{\delta\theta}
여·여 (기준)011
여·남1e0.14766=0.8628e^{-0.14766}=0.8628e0.06580=0.9363e^{-0.06580}=0.9363
남·남2e0.29532=0.7443e^{-0.29532}=0.7443e0.13159=0.8767e^{-0.13159}=0.8767
(나) 답: 남·남 쌍의 오즈는 여·여 쌍의 0.744배(쌍 독립) → 0.877배(+gwesp).
말로 바꾸면 "남학생끼리는 친구가 될 오즈가 25.6% 낮다" → "12.3% 낮다"로 효과가 반토막이다. 그리고 pp도 0.00018 → 0.023으로 올라가, 흔한 보정(예: 항 7개에 대한 Bonferroni 0.05/7=0.00710.05/7=0.0071)을 적용하면 유의하지 않게 된다.

(다) 무엇을 보고할 것인가.

(다) 답: +gwesp 모형의 숫자를 보고한다. 근거는 세 가지다.
gof: 쌍 독립 모형은 관측 삼각형 169개에 대해 평균 1.89개(z=119z=119)를 만들고 차수 여덟 칸 중 일곱 칸이 어긋난다. 이 학교를 닮지 않은 모형의 계수다.
AIC 12952 → 12050(902-902).
계수가 크게 움직였다는 사실 자체가 쌍 독립 모형이 뭉침의 몫을 속성 계수로 떠넘기고 있었다는 증거다(§10).
다만 보고할 때 "우리 모형이 이 학교를 잘 재현한다"고 말하면 안 된다. §11에서 확인했듯 +gwesp 모형도 ESP 2 이상(관측 83/24/8 vs 모의 31.6/2.5/0.1)과 거리 3~14를 여전히 못 맞춘다. 정확히는 "친구 수 분포와 뭉침의 총량은 재현하지만, 공통 친구가 셋 이상인 진한 무리와 전체 도달 거리는 재현하지 못한다"까지 말해야 한다.
교실 해석. "남학생이 여학생보다 친구가 적습니다"는 두 모형이 같은 방향으로 말하지만 크기가 두 배 다르다. 교사가 실제로 결정을 내리는 지점은 크기다 — 25.6% 차이면 개입을 설계하고, 12.3% 차이면 관찰을 더 한다. 모형을 바꾸면 결론의 강도가 바뀐다는 것을 협의회에 먼저 말하는 것이 정직하다.

연습 3 해설 (Exercise 3)

(가) 답: 피했다. §7에서 처음 저지른 실수는 sample_degseq각 사람의 차수를 그대로 두는 바람에 xxyy가 "허브가 같은 자리에 있다"는 진짜 관계를 갖게 된 것이었다 (겹침 TT의 평균이 10.84가 아니라 26.95로 나왔다).
이 연구자는 ③에서 행·열을 무작위 순열로 섞었으므로 사람 이름표가 지워졌고, xx^{*}yy의 참 연관은 정확히 0이다. 설계 자체는 옳다.
(나) 답: 한 가지 자료 구조에서만 확인했기 때문이다. §7의 표는 정확히 이 점을 보여 준다 — 같은 검정이
· 허브 있는 망끼리: 기각률 12.6% (고전이 무너짐)
· 허브 없는 G(34,78)G(34,78)끼리: 기각률 4.0% (고전이 멀쩡함)
정반대 결론을 낸다. 게다가 노드 속성(16/18 분할)에서는 2.6%로 오히려 보수적이었다.
"우리 반 모둠 행렬"은 대개 블록 구조(모둠 안은 전부 1, 밖은 전부 0)라 차수가 균질하다 — §7의 두 번째 줄에 가까운 조건이다. 그래서 이 실험은 "고전이 괜찮다"가 나올 가능성이 높은 쪽만 골라 본 것이고, 인기 학생이 뚜렷한 친구망끼리의 회귀에는 그 결론을 옮길 수 없다.
(다) 답: 확인해야 할 것은 "고전이 괜찮은가"가 아니라 "내 자료의 TT가 고전이 가정하는 것보다 넓게 흔들리는가"다. 절차는 한 줄이다:
실제 xxyy를 그대로 두고 이름표만 수천 번 섞어 순열 분포를 만든 뒤, 그 sd를 고전 SE와 비교한다 — 비가 1에서 멀면 고전 pp를 버리고 순열 pp를 쓴다. 이것은 실험이 아니라 그 자료에 대한 QAP 그 자체다. 즉 "QAP가 필요한가"를 미리 시험할 필요가 없다 — QAP를 돌리면 답이 같이 나온다. §7 그림 75(가)가 바로 그 비교이고, 6명 예제에서는 1.157배, 7명에서는 1.069배, 가라테 망끼리에서는 1.271배였다.
교실 해석. 교사가 "이 방법이 우리 반에 맞나"를 확인하려고 모의실험을 설계할 필요는 없다. 우리 반 자료로 이름표를 섞어 보면 된다. 25명이면 순열 5000번이 몇 초다. 섞은 분포의 폭이 공식이 주는 폭과 비슷하면 어느 쪽을 써도 되고, 많이 넓으면 공식 쪽 pp헛발견을 만드는 자다.