nodefactor · nodecov · absdiff — 활동성과 차이 효과
SNA 이론 · 단계별 학습 차례

단원 5-5Activity and Difference Effects

nodefactor · nodecov · absdiff — 활동성과 차이 효과

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

1. 오늘의 질문 (The Question)

5-4의 nodematch는 강력했지만 이분법 하나밖에 몰랐다. 두 학생이 같은가 다른가. 그 하나만 물었다. 그런데 교실에서 실제로 나오는 질문은 대개 이 두 가지다.

질문 A — “우리 반 여학생이 남학생보다 전반적으로 친구가 많은가?”
질문 B — “학업 성취도가 비슷한 학생끼리 친한가? 얼마나 비슷해야 하는가?”

nodematch로는 둘 다 답할 수 없다. 질문 A는 같고 다름이 아니라 누구인가를 묻고, 질문 B는 같고 다름이 아니라 얼마나 차이 나는가를 묻기 때문이다. 7학년과 8학년, 7학년과 12학년 — nodematch에게는 둘 다 똑같은 “다름”이다.

오늘 배울 세 항이 각각 이 빈틈을 메운다.

속성 종류재는 것변화 통계량 δij\delta_{ij}
nodefactor범주형집단별 활동성1{xi=k}+1{xj=k}{0,1,2}\mathbb 1\{x_i=k\}+\mathbb 1\{x_j=k\}\in\{0,1,2\}
nodecov연속형값이 클수록 활동적인가xi+xjx_i+x_j
absdiff연속형거리에 따른 선택성xixj|x_i-x_j|
nodematch (5-4)범주형같고 다름에 따른 선택성1{xi=xj}\mathbb 1\{x_i=x_j\}

그리고 셋 다 망을 보지 않는다. δij\delta_{ij}를 계산할 때 다른 간선을 하나도 참조하지 않으므로 쌍 독립이 유지되고, 따라서 5-4에서 얻은 모든 좋은 성질(κ\kappa가 닫힘, MPLE = MLE)이 그대로 살아 있다. 쌍 독립이 깨지는 것은 5-6의 gwesp부터다.

2. 활동성과 선택성 — 서로 다른 두 질문 (Activity vs. Selectivity)

오늘 배울 세 항은 두 종류로 갈린다. 이 구분이 오늘의 뼈대다.

활동성 (activity)정점 수준의 질문. “이 학생이 누구든 상관없이 간선을 잘 만드는가?”
δij\delta_{ij}ii의 속성과 jj의 속성을 따로따로 보고 더한다. \Rightarrow nodefactor, nodecov

선택성 (selectivity)쌍 수준의 질문. “이 학생이 어떤 상대를 고르는가?”
δij\delta_{ij}iijj의 속성을 맞대어 비교한다. \Rightarrow nodematch, absdiff

수식으로 보면 차이가 선명하다. 어떤 함수 ff에 대해

δij활동성=f(xi)+f(xj),δij선택성=g(xi,xj) (분해되지 않음) \delta^{\text{활동성}}_{ij} = f(x_i) + f(x_j), \qquad \delta^{\text{선택성}}_{ij} = g(x_i,\,x_j)\ \text{(분해되지 않음)}

활동성 항은 ii의 몫과 jj의 몫으로 쪼개진다. 그래서 간선 전체에 대해 합하면 자연스럽게 차수의 합이 된다(§3에서 확인). 선택성 항은 쪼개지지 않는다 — 1{xi=xj}\mathbb 1\{x_i=x_j\}xixj|x_i-x_j|는 한쪽만 봐서는 값을 알 수 없다.

왜 이 구분이 중요한가 — 둘은 서로를 교란한다.
5-4에서 우리는 10명 학급의 동질성 오즈비를 5.5배라고 읽었다. 그런데 그 모형에는 활동성 항이 없었다. 만약 여학생이 남학생보다 활동적이라면, “여여 쌍에 간선이 많다”는 사실 중 일부는 동질성이 아니라 활동성 때문일 수 있다. §7에서 이 5.5배가 실제로 얼마나 움직이는지 손으로 확인한다.

3. 정의 ① nodefactor — 집단의 차수 합 (Definition I: nodefactor)

범주형 속성 xx와 그 한 수준 kk에 대해

gkfactor(y)  =  i<jA[i,j](1{xi=k}+1{xj=k}) g^{\text{factor}}_k(y)\;=\;\sum_{i<j} A[i,j]\,\bigl(\mathbb 1\{x_i=k\}+\mathbb 1\{x_j=k\}\bigr)

각 간선마다, 그 간선의 두 끝점 중 수준 kk인 것이 몇 개인지 세어 더한다. 변화 통계량은 정의상 바로 읽힌다.

δkfactor(i,j)  =  1{xi=k}+1{xj=k}  =  {2둘 다 k1한쪽만 k0둘 다 k 아님 \delta^{\text{factor}}_k(i,j)\;=\;\mathbb 1\{x_i=k\}+\mathbb 1\{x_j=k\} \;=\;\begin{cases} 2 & \text{둘 다 } k\\ 1 & \text{한쪽만 } k\\ 0 & \text{둘 다 } k \text{ 아님} \end{cases}

왜 이것이 “활동성”인가 — 차수 합과 같다 (Why This Is Activity: It Equals the Degree Sum)

합의 순서를 바꾸면 정체가 드러난다. 간선 {i,j}\{i,j\} 하나는 자기 끝점 중 kk인 것마다 1씩 기여한다. 그러니 간선을 기준으로 세는 대신 정점을 기준으로 세면, 수준 kk인 정점 하나가 자기에게 붙은 간선 개수(= 차수)만큼 기여한다.

gkfactor(y)  =  i:xi=kdi g^{\text{factor}}_k(y)\;=\;\sum_{i\,:\,x_i=k} d_i
읽는 법nodefactor 통계량은 그 집단의 차수 합이다. 집단 크기로 나누면 그 집단의 평균 차수다. 그래서 “이 집단이 친구를 많이 만드는가”를 그대로 재는 통계량이 된다.

10명 학급에서 두 경로로 확인 (Two Routes, Same Number)

3-7·5-4에서 계속 쓴 10명 학급을 그대로 쓴다. 남학생 1~6번, 여학생 7~10번, 간선 15개.

10명 학급의 세 종류 쌍과 세 계수의 분해
그림 62. 왼쪽 — 10명 학급. 쌍은 남남·여여·교차 세 종류뿐이다. 오른쪽 — §5에서 손으로 풀 세 계수를 쌓아 올리면 관측 로짓에 정확히 닿는다(포화 모형).

경로 ① 간선을 기준으로 — 간선 15개를 종류별로 분류한다.

간선(1,2)(1,3)(2,3)(3,4)(4,5)(4,6)(5,6)(3,7)(3,8)(3,9)(6,10)(7,8)(7,10)(8,9)(9,10)
종류남남 7개교차 4개여여 4개15
δfactor\delta^{\text{factor}}_{\text{여}}00000001111222212
δfactor\delta^{\text{factor}}_{\text{남}}22222221111000018
δmatch\delta^{\text{match}}11111110000111111
gfactor=07남남+14교차+24여여=0+4+8=12 g^{\text{factor}}_{\text{여}} = \underbrace{0\cdot 7}_{\text{남남}} + \underbrace{1\cdot 4}_{\text{교차}} + \underbrace{2\cdot 4}_{\text{여여}} = 0+4+8 = 12

경로 ② 정점을 기준으로 — 여학생 4명의 차수를 더한다. 차수 벡터는 d=(2,2,6,3,2,3,  3,3,3,3)d=(2,2,6,3,2,3,\;3,3,3,3)이므로

i:xi=di  =  d7+d8+d9+d10  =  3+3+3+3  =  12 \sum_{i\,:\,x_i=\text{여}} d_i \;=\; d_7+d_8+d_9+d_{10} \;=\; 3+3+3+3 \;=\; 12 \quad\checkmark

남학생 쪽도 마찬가지다. d1++d6=2+2+6+3+2+3=18d_1+\cdots+d_6 = 2+2+6+3+2+3 = 18이고, 간선 기준으로도 27+14+04=14+4=182\cdot 7 + 1\cdot 4 + 0\cdot 4 = 14+4 = 18이다.

4. 완전 공선성 — 왜 한 수준을 버려야 하는가 (Perfect Collinearity)

위 표에서 이상한 점을 눈치챘을 것이다. 12+18=30=2×1512 + 18 = 30 = 2\times 15. 우연이 아니다. 모든 간선은 끝점이 정확히 2개이고, 각 끝점은 남 아니면 여이므로

δfactor(i,j)+δfactor(i,j)=1{xi=}+1{xj=}+1{xi=}+1{xj=}=1+1=2 \delta^{\text{factor}}_{\text{남}}(i,j) + \delta^{\text{factor}}_{\text{여}}(i,j) = \mathbb 1\{x_i=\text{남}\}+\mathbb 1\{x_j=\text{남}\}+\mathbb 1\{x_i=\text{여}\}+\mathbb 1\{x_j=\text{여}\} = 1+1 = 2

모든 쌍에서 항상 2다. 따라서 간선 전체에 대해 합하면

gfactor(y)+gfactor(y)  =  2gedges(y)(어떤 y 에서도 성립) g^{\text{factor}}_{\text{남}}(y) + g^{\text{factor}}_{\text{여}}(y) \;=\; 2\,g^{\text{edges}}(y) \qquad\text{(어떤 } y \text{ 에서도 성립)}
이것은 완전 공선성이다. 세 통계량 gedgesg^{\text{edges}}, gfactorg^{\text{factor}}_{\text{남}}, gfactorg^{\text{factor}}_{\text{여}}가 항등식으로 묶여 있으므로, 셋을 다 넣으면 계수가 하나로 정해지지 않는다. (θe,θ,θ)(\theta_e,\theta_{\text{남}},\theta_{\text{여}})에서 (θe+2c, θc, θc)(\theta_e+2c,\ \theta_{\text{남}}-c,\ \theta_{\text{여}}-c)로 옮겨도 모든 쌍의 로그오즈가 완전히 똑같다. 최대가능도가 유일하지 않다.

그래서 ergm한 수준을 자동으로 버린다(기준 수준, baseline). 기본값은 정렬 순서로 첫 번째 수준이다. 남/여에서는 “남”이 버려지고 nodefactor.sex.여 하나만 추정된다. FMH의 Sex(F, M)에서는 F가 버려지고 nodefactor.Sex.M이 남는다.

summary(nw ~ edges + nodefactor("sex", levels=TRUE))   # 통계량만 볼 때는 전부 볼 수 있다
#             edges nodefactor.sex.남 nodefactor.sex.여
#                15                18                12          18 + 12 = 30 = 2 x 15
버려진 수준의 계수는 0이 아니라 “기준”이다. θ\theta_{\text{남}}이 없는 것이 아니라 θ=0\theta_{\text{남}}=0으로 고정된 것이고, 남은 θ\theta_{\text{여}}는 “남학생 대비 여학생의 추가 활동성”으로 읽는다. 어느 수준을 기준으로 삼느냐에 따라 θe\theta_e와 남은 계수의 값은 달라지지만, 각 쌍의 확률 예측은 완전히 같다.

5. 손 계산 ① — 10명 학급, 세 칸 포화 모형 (A Saturated Three-Cell Model)

이제 모형을 세운다.

logitP(A[i,j]=1나머지)=θe1+θm1{xi=xj}+θfδfactor(i,j) \operatorname{logit}P(A[i,j]=1 \mid \text{나머지}) = \theta_e\cdot 1 + \theta_m\,\mathbb 1\{x_i=x_j\} + \theta_f\,\delta^{\text{factor}}_{\text{여}}(i,j)

5-1. 쌍은 세 종류뿐이다 (Only Three Kinds of Dyads)

10명이므로 쌍은 (102)=45\binom{10}{2}=45개. 이 45개를 (δmatch,δfactor)(\delta^{\text{match}},\delta^{\text{factor}}_{\text{여}}) 값으로 분류하면 세 가지밖에 나오지 않는다.

쌍 개수 NN간선 수 mmδmatch\delta^{\text{match}}δfactor\delta^{\text{factor}}_{\text{여}}조건부 로그오즈
남남(62)=15\binom{6}{2}=15710θe+θm\theta_e+\theta_m
여여(42)=6\binom{4}{2}=6412θe+θm+2θf\theta_e+\theta_m+2\theta_f
교차6×4=246\times 4=24401θe+θf\theta_e+\theta_f
4515

충분통계량 세 개를 이 표에서 다시 확인한다.

gedges=7+4+4=15,gmatch=71+41+40=11,gfactor=70+42+41=12 g^{\text{edges}}=7+4+4=15,\qquad g^{\text{match}}=7\cdot 1+4\cdot 1+4\cdot 0=11,\qquad g^{\text{factor}}_{\text{여}}=7\cdot 0+4\cdot 2+4\cdot 1=12
미지수 3개, 칸 3개 — 포화 모형이다. 모수 개수와 칸 개수가 같으므로, 모형은 관측된 세 칸의 비율을 정확히 재현할 수 있다. 그러니 각 칸의 적합 확률은 관측 비율 그 자체다. 5-4에서 2×2 표가 그랬듯이, 연립방정식만 풀면 정확한 MLE가 손으로 나온다.

5-2. 세 칸의 관측 로짓 (Three Observed Logits)

각 칸에서 오즈 = (간선 있는 쌍)/(간선 없는 쌍)이다.

L남남=log7157=log78=log7log8=1.94591012.0794415=0.1335314L여여=log464=log42=log2=0.6931472L교차=log4244=log420=log15=log5=1.6094379 \begin{aligned} L_{\text{남남}} &= \log\frac{7}{15-7} = \log\frac{7}{8} = \log 7 - \log 8 = 1.9459101 - 2.0794415 = -0.1335314\\[.3em] L_{\text{여여}} &= \log\frac{4}{6-4} = \log\frac{4}{2} = \log 2 = 0.6931472\\[.3em] L_{\text{교차}} &= \log\frac{4}{24-4} = \log\frac{4}{20} = \log\frac{1}{5} = -\log 5 = -1.6094379 \end{aligned}

5-3. 연립방정식을 푼다 (Solving the 3×3 System)

(i)θe+θm=0.1335314(ii)θe+θm+θf=1.6094379(iii)θe+θm+2θf=0.6931472 \begin{aligned} \text{(i)}\quad & \theta_e + \theta_m &&= -0.1335314\\ \text{(ii)}\quad & \theta_e \phantom{{}+\theta_m} + \theta_f &&= -1.6094379\\ \text{(iii)}\quad & \theta_e + \theta_m + 2\theta_f &&= \phantom{-}0.6931472 \end{aligned}

1단계 — (iii) - (i). θe\theta_eθm\theta_m이 함께 지워지고 2θf2\theta_f만 남는다.

2θf=0.6931472(0.1335314)=0.8266786θf=0.4133393 2\theta_f = 0.6931472 - (-0.1335314) = 0.8266786 \qquad\Longrightarrow\qquad \boxed{\theta_f = 0.4133393}

2단계 — (ii)에 대입.

θe=1.60943790.4133393=2.0227772 \theta_e = -1.6094379 - 0.4133393 = \boxed{-2.0227772}

3단계 — (i)에 대입.

θm=0.1335314(2.0227772)=1.8892458 \theta_m = -0.1335314 - (-2.0227772) = \boxed{1.8892458}

5-4. 정확한 닫힌 식 (Exact Closed Forms)

소수점 대신 분수로 끝까지 밀면 놀랍도록 깨끗하다.

e2θf=4/27/8=287=167eθf=167=47=1.5118579 e^{2\theta_f} = \frac{4/2}{7/8} = 2\cdot\frac{8}{7} = \frac{16}{7} \qquad\Longrightarrow\qquad e^{\theta_f} = \sqrt{\tfrac{16}{7}} = \frac{4}{\sqrt 7} = 1.5118579 eθe=1/54/7=720=0.1322876,eθm=7/87/20=72087=572=6.6143783 e^{\theta_e} = \frac{1/5}{4/\sqrt 7} = \frac{\sqrt 7}{20} = 0.1322876, \qquad e^{\theta_m} = \frac{7/8}{\sqrt 7/20} = \frac{7\cdot 20}{8\sqrt 7} = \frac{5\sqrt 7}{2} = 6.6143783

검산 — 세 칸의 오즈를 계수로 되조립해 본다.

계수 조합계산결과관측 오즈
남남eθeeθme^{\theta_e}e^{\theta_m}720572=5740\dfrac{\sqrt 7}{20}\cdot\dfrac{5\sqrt 7}{2}=\dfrac{5\cdot 7}{40}7/87/87/87/8
여여eθeeθme2θfe^{\theta_e}e^{\theta_m}e^{2\theta_f}78167\dfrac{7}{8}\cdot\dfrac{16}{7}224/2=24/2=2
교차eθeeθfe^{\theta_e}e^{\theta_f}72047=420\dfrac{\sqrt 7}{20}\cdot\dfrac{4}{\sqrt 7}=\dfrac{4}{20}1/51/54/20=1/54/20=1/5

6. R 검증 ① — 10명 학급 (Verification I)

library(ergm); library(network)
mkA <- function(n,E){A <- matrix(0,n,n); for(e in E){A[e[1],e[2]] <- 1; A[e[2],e[1]] <- 1}; A}
E10 <- list(c(1,2),c(1,3),c(2,3),c(3,4),c(3,7),c(3,8),c(3,9),
            c(4,5),c(4,6),c(5,6),c(6,10),c(7,8),c(7,10),c(8,9),c(9,10))
nw <- network(mkA(10,E10), directed=FALSE)
nw %v% "sex" <- c(rep("남",6), rep("여",4))

summary(nw ~ edges + nodematch("sex") + nodefactor("sex"))
#             edges     nodematch.sex nodefactor.sex.여
#                15                11                12          <- §3, §5 손 계산과 일치

summary(ergm(nw ~ edges + nodematch("sex") + nodefactor("sex")))$coefficients
#                     Estimate  Std. Error  z value  Pr(>|z|)
# edges             -2.0227772   0.7446236   -2.717   0.00660
# nodematch.sex      1.8892458   0.7446236    2.537   0.01117
# nodefactor.sex.여  0.4133393   0.5044445    0.819   0.41256
손 계산과 소수점 일곱 자리까지 일치2.0227772, 1.8892458, 0.4133393-2.0227772,\ 1.8892458,\ 0.4133393. 5-4에서 그랬듯이 estimate="MPLE"로 돌려도 같은 값이 나온다. δ\delta가 망을 보지 않으므로 쌍 독립이고, 쌍 독립이면 유사가능도 = 가능도이기 때문이다.

계수를 읽는 문장 (Reading the Coefficients)

계수eθe^{\theta}읽는 문장
θe\theta_e2.0228-2.02280.13230.1323남남 교차도 아니고 여학생도 안 낀 가상의 기준 쌍의 오즈 (해석하지 말 것 — 기준점일 뿐)
θm\theta_m+1.8892+1.88926.61446.6144활동성을 통제한 뒤, 같은 성별이면 친구일 오즈가 6.61배
θf\theta_f+0.4133+0.41331.51191.5119끝점 중 여학생이 하나 늘 때마다 오즈가 1.51배. 여여 쌍이면 e2θf=16/7=2.286e^{2\theta_f}=16/7=2.286
이 학급에서 θf\theta_f는 유의하지 않다. z=0.819z=0.819, p=0.413p=0.413, 95% 신뢰구간 (0.575, 1.402)(-0.575,\ 1.402)로 0을 포함한다. 10명·45쌍은 활동성 효과를 잡아내기에 표본이 너무 작다. 아래 §7은 “여학생이 더 활동적이다”를 주장하는 절이 아니라, 활동성 항이 동질성 계수를 어떻게 움직이는지 그 구조를 보이는 절이다. 유의한 실제 사례는 §13의 FMH에서 본다.

7. 교란 — 5-4의 5.5배는 어디로 갔는가 (Confounding: Where Did the 5.5 Go?)

같은 학급, 같은 데이터에 네 모형을 얹어 본다.

모형θe\theta_eθm\theta_mθf\theta_feθme^{\theta_m}logLikAIC
edges0.6931-0.693128.6431-28.643159.29
edges+nodematch (5-4)1.6094-1.60941.70471.70475.50025.3457-25.345754.69
edges+nodefactor0.6931-0.69310.00000.000028.6431-28.643161.29
edges+nodematch+nodefactor (5-5)2.0228-2.02281.88921.88920.41330.41336.61424.9964-24.996455.99

7-1. 왜 nodefactor 단독은 정확히 0인가 (Why nodefactor Alone Is Exactly Zero)

세 번째 줄의 0.00000.0000은 반올림이 아니다. R이 돌려준 값은 9.16×10109.16\times 10^{-10}, 즉 수치 오차 범위의 진짜 0이다. 손으로 이유를 확인할 수 있다.

간선만 있는 모형에서 모든 쌍의 확률은 밀도 p=15/45=1/3p=15/45=1/3이다. 학생 하나당 짝지을 상대는 9명이므로 기대 차수는 9×13=39\times\frac13 = 3이고, 여학생 4명의 기대 차수 합은

E[gfactor]=4×9×13=12 \mathbb E\bigl[g^{\text{factor}}_{\text{여}}\bigr] = 4 \times 9 \times \tfrac13 = 12

그런데 관측값도 정확히 12다. 지수족의 MLE는 “충분통계량의 기댓값 = 관측값”을 푸는 것인데, θf=0\theta_f=0에서 이미 두 통계량(간선 15, 활동성 12)이 모두 맞아떨어진다. 그러니 움직일 이유가 없다. 그래서 AIC도 정확히 59.29+2=61.2959.29+2=61.29 — 모수 하나가 아무 일도 하지 않고 벌점만 먹었다.

7-2. 그런데 nodematch를 넣으면 θf\theta_f가 살아난다 (Adding nodematch Revives It)

기회 구조와 활동성 통계량의 어긋남
그림 63. 왼쪽 — 여학생이 4명뿐이라 “같은 성별 짝”이 3명밖에 없다(남학생은 5명). 오른쪽 — 동질성만 넣은 모형(m2)은 여학생 차수 합을 10.29로 예측하는데 관측은 12다. 그 부족분 12/7=1.71412/7=1.714를 메우려고 θf\theta_f+0.4133+0.4133으로 밀려난다.

동질성만 넣은 모형(m2)에서 적합 확률은 p=11/21p_{\text{같}}=11/21, p=4/24=1/6p_{\text{다}}=4/24=1/6이다. 이 모형이 예측하는 기대 차수를 손으로 계산해 보자. 핵심은 기회 구조가 성별마다 다르다는 것이다.

같은 성별 짝다른 성별 짝기대 차수
남학생 1명5명4명51121+416=5521+23=237=3.28575\cdot\frac{11}{21}+4\cdot\frac16=\frac{55}{21}+\frac23=\frac{23}{7}=3.2857
여학생 1명3명6명31121+616=3321+1=187=2.57143\cdot\frac{11}{21}+6\cdot\frac16=\frac{33}{21}+1=\frac{18}{7}=2.5714
E[gfactor]m2=4×187=727=10.2857그런데 관측은12=847 \mathbb E\bigl[g^{\text{factor}}_{\text{여}}\bigr]_{m2} = 4\times\frac{18}{7} = \frac{72}{7} = 10.2857 \qquad\text{그런데 관측은}\quad 12 = \frac{84}{7} 부족분=847727=127=1.7143 \text{부족분} = \frac{84}{7}-\frac{72}{7} = \frac{12}{7} = 1.7143
여기가 오늘의 핵심 문장이다.
남학생과 여학생의 평균 차수는 3으로 똑같다(18/6 = 3, 12/4 = 3). 그런데도 θf\theta_f가 0이 아닌 이유는, 동질성 모형이 여학생에게 같은 성별 짝을 3명밖에 주지 않기 때문이다. 같은 기회로는 차수 3이 나올 수 없는데 실제로는 3이 나왔다 — 즉 주어진 기회 대비 여학생 쪽이 더 활발했다는 뜻이다. nodefactor는 “차수가 많다”가 아니라 “기회 구조를 감안했을 때 간선이 더 잘 붙는다”를 잰다.

7-3. 그래서 동질성 계수가 움직인다 (And So the Homophily Coefficient Moves)

θm: 1.70471.8892eθm: 5.5006.614 \theta_m:\ 1.7047 \longrightarrow 1.8892 \qquad e^{\theta_m}:\ 5.500 \longrightarrow 6.614

활동성을 통제하자 동질성이 더 강해졌다. 여학생의 높은 활동성이 교차 간선도 함께 늘려 놓았기 때문에, 그 몫을 θf\theta_f가 가져가고 나면 “같은 성별이라서” 붙은 몫은 더 커진다.

솔직한 유보 — 이 학급에서는 통계적으로 결론 낼 수 없다. AIC는 오히려 활동성 없는 m2(54.69)가 m4(55.99)보다 낫다고 말한다. θf\theta_f의 신뢰구간이 0을 넉넉히 포함하므로(§6), 여기서 배울 것은 “여학생이 활동적이다”가 아니라 “활동성과 선택성은 서로의 계수를 끌어당긴다”는 구조적 사실이다. 실제 데이터에서 이 교란이 얼마나 되는지는 §13에서 잰다.

8. 정의 ② nodecov — 연속 속성의 활동성 (Definition II: nodecov)

연속형(또는 수치형) 속성 xx에 대해

gcov(y)=i<jA[i,j](xi+xj),δcov(i,j)=xi+xj g^{\text{cov}}(y)=\sum_{i<j}A[i,j]\,(x_i+x_j), \qquad \delta^{\text{cov}}(i,j)=x_i+x_j

nodefactor와 완전히 같은 모양이다. 실제로 f(x)=1{x=k}f(x)=\mathbb 1\{x=k\}로 두면 δcov\delta^{\text{cov}}δkfactor\delta^{\text{factor}}_k가 된다.

nodefactornodecov의 특수한 경우다. “속성값이 0/1인 더미변수에 nodecov를 건 것” = “그 수준에 nodefactor를 건 것”. 그래서 §3의 차수 합 항등식도 그대로 일반화된다.
gcov(y)=idixi g^{\text{cov}}(y)=\sum_{i} d_i\,x_i

증명은 §3과 똑같다 — 간선 {i,j}\{i,j\}xix_ixjx_j를 하나씩 내놓고, 정점 ii는 자기 간선 did_i개에 xix_i를 하나씩 내놓는다. 같은 것을 두 번 세는 방식이 다를 뿐이다.

계수 θcov\theta_{\text{cov}}의 뜻: 속성값이 1 늘어난 학생은 끝점 하나마다 오즈가 eθcove^{\theta_{\text{cov}}}배가 된다. 양수면 “값이 큰 학생이 친구가 많다”.

9. 정의 ③ absdiff — 연속 속성의 거리 (Definition III: absdiff)

gabs(y)=i<jA[i,j]xixj,δabs(i,j)=xixj g^{\text{abs}}(y)=\sum_{i<j}A[i,j]\,|x_i-x_j|, \qquad \delta^{\text{abs}}(i,j)=|x_i-x_j|

이번엔 쪼개지지 않는다. xixj|x_i-x_j|f(xi)+f(xj)f(x_i)+f(x_j) 꼴로 쓸 수 없다. 그래서 이것은 활동성이 아니라 선택성 항이다 — nodematch의 연속형 사촌이다.

부호가 nodematch와 반대다.
nodematch: 계수가 양수면 동질성(같으면 붙는다).
absdiff: 계수가 음수면 동질성(멀수록 안 붙는다).
δ\delta가 “같음의 지표”에서 “다름의 크기”로 바뀌었으니 부호도 뒤집힌다. 3-7의 E-I 지수와 5-4의 θ2\theta_2가 부호 규약이 달랐던 것과 같은 종류의 함정이다.

계수 θabs\theta_{\text{abs}}의 뜻: 속성이 1단위 더 벌어질 때마다 오즈에 eθabse^{\theta_{\text{abs}}}. 이것은 로그오즈가 거리에 선형이라는 강한 가정이다. “1학년 차이”의 벌점과 “5학년 차이 중 마지막 1학년”의 벌점이 같다고 보는 것이다. §13에서 이 가정이 실제 데이터에서 얼마나 맞는지 검사한다.

10. 손 계산 ② — 6명 미니 학급, 15쌍 전부 (All 15 Dyads by Hand)

5-4에서 쓴 6명 미니 학급을 그대로 쓰되, 이번엔 성별이 아니라 연속 속성을 얹는다. 간선은 (1,2), (1,3), (2,3), (3,4), (4,5), (5,6) 여섯 개이고, 속성 xx는 “지난 학기 읽은 책 수”로 x=(12,10,9,8,6,4)x=(12,\,10,\,9,\,8,\,6,\,4)라 하자.

세로축을 속성으로 둔 6명 학급과 절대차이 로지스틱
그림 64. 왼쪽 — 세로축을 속성값으로 두면 absdiff는 간선의 세로 길이가 된다. 오른쪽 — 15쌍을 xixj|x_i-x_j|에 대해 늘어놓으면 간선(파랑)이 왼쪽에, 비간선(빨강)이 오른쪽에 몰린다.

10-1. 15쌍 전부 (The Full Enumeration)

#(i,j)(i,j)xix_ixjx_jδcov=xi+xj\delta^{\text{cov}}=x_i+x_jδabs=xixj\delta^{\text{abs}}=|x_i-x_j|A[i,j]A[i,j]AδcovA\cdot\delta^{\text{cov}}AδabsA\cdot\delta^{\text{abs}}
1(1,2)12102221222
2(1,3)1292131213
3(1,4)128204000
4(1,5)126186000
5(1,6)124168000
6(2,3)1091911191
7(2,4)108182000
8(2,5)106164000
9(2,6)104146000
10(3,4)981711171
11(3,5)96153000
12(3,6)94135000
13(4,5)861421142
14(4,6)84124000
15(5,6)641021102
53610311

초록 줄이 간선 6개, 빨간 줄이 비간선 9개다. 0인 항도 모두 적었다 — 비간선 9개는 A[i,j]=0A[i,j]=0이므로 곱이 전부 0이고, 이것이 “간선만 세는” 통계량의 정의 그대로다.

gcov=22+21+0+0+0+19+0+0+0+17+0+0+14+0+10=103 g^{\text{cov}} = 22+21+0+0+0+19+0+0+0+17+0+0+14+0+10 = 103 gabs=2+3+0+0+0+1+0+0+0+1+0+0+2+0+2=11 g^{\text{abs}} = 2+3+0+0+0+1+0+0+0+1+0+0+2+0+2 = 11

10-2. 두 번째 경로 — 차수 합으로 다시 세기 (A Second Route: Recounting by Degree Sums)

차수는 d=(2,2,3,2,2,1)d=(2,2,3,2,2,1)이다(합 12 = 2×6 ✓). idixi\sum_i d_i x_i를 전개하면

idixi=212+210+39+28+26+14=24+20+27+16+12+4=103 \begin{aligned} \sum_i d_i x_i &= 2\cdot 12 + 2\cdot 10 + 3\cdot 9 + 2\cdot 8 + 2\cdot 6 + 1\cdot 4\\ &= 24 + 20 + 27 + 16 + 12 + 4 = 103 \quad\checkmark \end{aligned}

전혀 다른 순서로 더했는데 같은 103이 나왔다. §8의 항등식이 손에서 확인된다.

10-3. 값의 의미 (What the Numbers Say)

쌍 수xixj\sum|x_i-x_j|평균 xixj|x_i-x_j|
간선61111/6=1.833311/6=1.8333
비간선95311=4253-11=4242/9=4.666742/9=4.6667
전체155353/15=3.533353/15=3.5333

친구인 쌍의 독서량 차이(1.83권)가 아닌 쌍(4.67권)의 절반도 안 된다. 이것이 연속 속성에서의 동질성이다 — “같은 값”이 아니라 “가까운 값”끼리 붙는다.

11. R 검증 ② — 6명 미니 학급 (Verification II)

E6 <- list(c(1,2),c(1,3),c(2,3),c(4,5),c(5,6),c(3,4))
nw6 <- network(mkA(6,E6), directed=FALSE); nw6 %v% "book" <- c(12,10,9,8,6,4)

summary(nw6 ~ edges + nodecov("book") + absdiff("book"))
#     edges nodecov.book absdiff.book
#         6          103           11          <- §10 손 계산과 일치

summary(ergm(nw6 ~ edges + absdiff("book")))$coefficients
#                Estimate  Std. Error  z value  Pr(>|z|)
# edges         5.9312083   3.1419532    1.888    0.0591
# absdiff.book -2.2277591   1.1776170   -1.892    0.0585

# 쌍 독립이므로 평범한 로지스틱 회귀와 같은 문제다
coef(glm(y ~ d_abs, data=tb6, family=binomial))
#  (Intercept)        d_abs
#    5.9312083   -2.2277591          <- ergm 과 자리 하나까지 동일
θabs=2.2278\theta_{\text{abs}}=-2.2278을 읽는 문장
e2.2278=0.10777e^{-2.2278}=0.10777. 독서량이 1권 더 벌어질 때마다 친구일 오즈가 0.108배 (약 9.3분의 1)로 줄어든다. 부호가 음수이므로 동질성이다.
6명·15쌍이라 표준오차가 크고 p=0.0585p=0.0585로 아슬아슬하다. 손 계산용 예제이지 결론용 예제가 아니다.

11-1. 활동성도 같이 넣으면 (Adding Activity as Well)

summary(ergm(nw6 ~ edges + nodecov("book") + absdiff("book")))$coefficients
#                 Estimate  Std. Error  z value  Pr(>|z|)
# edges          4.5295294   4.4403538    1.020    0.3077
# nodecov.book   0.0965267   0.2308907    0.418    0.6759
# absdiff.book  -2.3057380   1.2767873   -1.806    0.0709

θcov=+0.0965 (eθ=1.101)\theta_{\text{cov}}=+0.0965\ (e^{\theta}=1.101)은 “책을 1권 더 읽은 학생은 끝점 하나마다 오즈가 1.10배”라는 뜻이지만 p=0.676p=0.676으로 전혀 유의하지 않다. 활동성을 넣어도 θabs\theta_{\text{abs}}2.22782.3057-2.2278\to-2.3057로 거의 움직이지 않았다 — 이 자료에서는 교란이 작다는 뜻이다.

12. κ\kappa는 여전히 닫히는가 (Does the Normalizing Constant Still Close?)

5-4에서 κ\kappa가 닫힌 식이 된 이유는 딱 하나였다 — δij\delta_{ij}yy에 의존하지 않는다. 오늘의 세 항도 마찬가지이므로, 증명은 글자 하나 바꾸지 않고 그대로 굴러간다.

κ(θ)=yexp(i<jA[i,j]  θ ⁣δij)=y i<jexp(A[i,j]θ ⁣δij) \kappa(\theta)=\sum_{y}\exp\Bigl(\sum_{i<j}A[i,j]\;\theta^{\!\top}\delta_{ij}\Bigr) =\sum_{y}\ \prod_{i<j}\exp\bigl(A[i,j]\,\theta^{\!\top}\delta_{ij}\bigr)

여기서 분배법칙이 통한다. 각 쌍의 A[i,j]A[i,j]가 0/1을 독립적으로 고를 수 있고 어느 쌍의 항도 다른 쌍의 값을 참조하지 않으므로, 합과 곱의 순서를 바꿀 수 있다.

 κ(θ)=i<j(1+eθ ⁣δij) logκ(θ)=i<jlog(1+eθ ⁣δij) \boxed{\ \kappa(\theta)=\prod_{i<j}\Bigl(1+e^{\theta^{\!\top}\delta_{ij}}\Bigr)\ } \qquad\Longrightarrow\qquad \log\kappa(\theta)=\sum_{i<j}\log\Bigl(1+e^{\theta^{\!\top}\delta_{ij}}\Bigr)

12-1. 전수 검증 (Brute-Force Check)

6명 학급은 쌍이 15개이므로 가능한 망이 215=32,7682^{15}=32{,}768개다. 전부 더해서 대조할 수 있다.

th <- c(-0.41, 0.07, -0.33)          # edges, nodecov, absdiff — 아무 값
lin <- numeric(2^15)
for (cd in 0:(2^15-1)) {
  b <- as.integer(intToBits(cd))[1:15]
  lin[cd+1] <- th[1]*sum(b) + th[2]*sum(b*dcov) + th[3]*sum(b*dabs)
}
M <- max(lin); brute <- M + log(sum(exp(lin - M)))       # 32768개 전부 더하기
closed <- sum(log(1 + exp(th[1] + th[2]*dcov + th[3]*dabs)))   # 닫힌 식
# 전수    log kappa = 8.387615706
# 닫힌식  log kappa = 8.387615706
# 차이              = -2.4869e-14        <- 부동소수 오차

12-2. 5-4와 달라진 점 — 2×2 표는 사라졌다 (What Changed from 5-4: The 2×2 Table Is Gone)

5-4에서는 δ\delta가 0/1 둘뿐이라 쌍이 두 칸으로 뭉쳤고, 그래서 κ\kappa(1+eθ1+θ2)N(1+eθ1)N(1+e^{\theta_1+\theta_2})^{N_{\text{같}}}(1+e^{\theta_1})^{N_{\text{다}}}거듭제곱 두 개가 되었다. MLE도 2×2 표의 로그 오즈비라는 공식으로 나왔다.

오늘은 δabs\delta^{\text{abs}}xixj|x_i-x_j|라서 값이 여러 가지다. 6명 학급에서는 1,2,3,4,5,6,81,2,3,4,5,6,8 일곱 종류. 뭉치는 칸이 늘어난 만큼 2×2 표 공식은 더 이상 없다. 대신 남는 것이 정확히 이것이다 — 쌍을 관측 단위로 하는 평범한 로지스틱 회귀. N=(n2)N=\binom n2개의 0/1 응답을 δij\delta_{ij}로 설명하는 glm(..., family=binomial)과 완전히 같은 문제다(§11에서 확인).

바뀌지 않은 것: 쌍 독립 · κ\kappa가 닫힘 · MPLE = MLE. 바뀐 것은 “손으로 푸는 공식이 있느냐”뿐이고, §5처럼 칸 수와 모수 수가 같으면(포화) 그때는 다시 손으로 풀린다.

13. R 검증 ③ — FMH 1461명 실전 (Verification III: Real Data)

이제 진짜 자료다. faux.magnolia.high — 학생 1461명, 간선 974개.

FMH 학년 차이별 로짓 적합과 성별 활동성
그림 65. 왼쪽 — 학년 차이 d=0,,5d=0,\dots,5의 관측 로짓(검은 점)과 세 모형의 예측. nodematch만(주황 점선)은 d1d\ge 1에서 평평하고, absdiff만(하늘 파선)은 d=01d=0\to1의 큰 낙차를 못 만들어 뒤로 갈수록 과대하게 떨어진다. 둘 다 넣은 mC(초록)만 관측을 따라간다. 오른쪽 — 여학생 평균 차수가 남학생보다 높고, nodefactor가 그것을 잡아낸다.

13-1. 성별 활동성 — nodefactor가 유의하다 (Activity by Sex: nodefactor Is Significant)

인원차수 합평균 차수
여학생 F76811451.4909
남학생 M6938031.1587
14611948 =2×974=2\times 9741.3333
summary(ergm(fmh ~ edges + nodematch("Sex") + nodefactor("Sex")))$coefficients
#                      Estimate  Std. Error   z value    Pr(>|z|)
# edges              -7.3809565  0.07112797  -103.770   0.00e+00
# nodematch.Sex       0.8530734  0.07112797    11.994   3.84e-33
# nodefactor.Sex.M   -0.1508384  0.03935149    -3.833   1.27e-04

# 5-4의 모형(활동성 없음)과 비교
# edges          -7.5317949      nodematch.Sex  0.8796026      AIC 15412.89
# 위 모형                                        0.8530734      AIC 15399.88
e0.1508=0.860e^{-0.1508}=0.860 — 끝점 중 남학생이 하나 늘 때마다 오즈가 0.860배. 남남 쌍이면 e2×(0.1508)=0.740e^{2\times(-0.1508)}=0.740배. 남학생이 여학생보다 덜 활동적이고, p=1.3×104p=1.3\times 10^{-4}로 뚜렷하다. AIC도 13 떨어졌다.

그런데 동질성 계수는 0.87960.85310.8796\to0.8531로 거의 안 움직였다(오즈비 2.410 → 2.347). §7의 10명 학급에서는 5.50 → 6.61로 크게 움직였는데 왜 다를까? 두 집단의 크기가 비슷하기 때문이다(768 대 693). 기회 구조가 거의 대칭이면 활동성과 선택성이 서로 잘 분리된다. 10명 학급은 6 대 4로 치우쳐 있었다.

13-2. 학년 — nodematchabsdiff둘 다 필요하다 (Grade: You Need Both nodematch and absdiff)

학년은 7~12의 순서 있는 수치다. 여기서 오늘의 두 도구가 정면으로 부딪힌다.

모형θe\theta_enodematchabsdiffAIC
mA같다/다르다만8.6523-8.6523+3.2378+3.2378
(오즈비 25.48)
13500.36
mB몇 학년 차인가만5.4545-5.45452.1153-2.1153
(0.1206배/학년)
13448.01
mC둘 다6.9163-6.9163+1.5018+1.5018
(오즈비 4.49)
1.0484-1.0484
(0.3505배/학년)
13397.54

왜 둘 다 필요한지는 관측 로짓을 학년 차이별로 늘어놓으면 즉시 보인다.

학년 차이 dd쌍 수간선 수관측 로짓직전과의 낙차mC 예측 로짓mC 기대 간선 수
0185,0268205.4145-5.41455.4145-5.4145820.00
1326,6471147.9601-7.96012.5456-2.54567.9647-7.9647113.48
2260,611319.0367-9.03671.0766-1.07669.0131-9.013131.74
3170,466710.1003-10.10031.0637-1.063710.0614-10.06147.28
488,075210.6928-10.69280.5924-0.592411.1098-11.10981.32
535,7050-\infty12.1581-12.15810.19
낙차 열이 이야기를 다 한다.
d=01d=0\to1의 낙차는 2.5456-2.5456으로 유독 크고, 그 뒤로는 1.08, 1.06-1.08,\ -1.06으로 거의 일정하다. 즉 학년에는 “같은 학년이라는 계단”“학년당 일정한 기울기”둘 다 있다.
absdiff만으로는 계단을 못 만들고, nodematch만으로는 기울기를 못 만든다.

mC의 예측 낙차를 손으로 확인해 보자. d=0d=0의 로짓은 θe+θmatch\theta_e+\theta_{\text{match}}, d=1d=1θe+θabs1\theta_e+\theta_{\text{abs}}\cdot 1이므로 낙차=θabsθmatch=1.04841.5018=2.5502 \text{낙차} = \theta_{\text{abs}}-\theta_{\text{match}} = -1.0484-1.5018 = -2.5502 관측 2.5456-2.5456과 거의 같다. 그리고 d1d\ge1 구간의 낙차는 θabs=1.0484\theta_{\text{abs}}=-1.0484로, 관측 1.0766, 1.0637-1.0766,\ -1.0637과 잘 맞는다.

기대 간선 수 열을 보면 mC의 적합이 얼마나 좋은지 더 분명하다 — 820 대 820.00, 114 대 113.48, 31 대 31.74, 7 대 7.28. d=4d=4에서 2 대 1.32로 살짝 벌어지지만 기대 간선이 한두 개인 칸이라 우연의 폭 안이다.

13-3. nodecov는 여기서 실패한다 (Where nodecov Fails)

summary(ergm(fmh ~ edges + nodecov("Grade")))$coefficients
#                  Estimate  Std. Error  z value  Pr(>|z|)
# nodecov.Grade  -0.0159449  0.01451214   -1.099     0.272        <- 유의하지 않음

# AIC 비교
# edges 만                15582.21
# + nodecov("Grade")      15583.00    <- 더 나빠졌다
# + nodefactor("Grade")   15550.98    <- 크게 좋아졌다

학년별 평균 차수를 보면 이유가 명백하다.

학년789101112
인원185210317299257193
평균 차수1.28111.70951.11671.28761.49421.1865
단조롭지 않다. 8학년이 가장 높고 9학년이 가장 낮다. nodecov는 “학년이 1 오를 때마다 활동성이 θ\theta만큼”이라는 직선만 그릴 수 있으므로 이 오르내림을 표현할 방법이 없고, 결국 “기울기 거의 0”으로 주저앉는다.
nodefactor는 학년을 범주로 보고 학년마다 따로 계수를 주므로 이 패턴을 잡아낸다 (8학년 +0.2890+0.2890, 오즈 1.335배 / 9학년 0.1375-0.1375, 0.872배).

교훈 — 수치형 속성이라고 자동으로 nodecov가 아니다. 선형인지 먼저 확인하고, 아니면 nodefactor로 범주 취급할 것.

13-4. 종합 모형 (Putting It Together)

ergm(fmh ~ edges + nodematch("Grade") + absdiff("Grade") +
           nodematch("Sex") + nodefactor("Sex") + nodematch("Race"))
#                     Estimate   Std. Error   z value   exp(계수)
# edges             -8.1426308   0.21215186   -38.381     0.000291
# nodematch.Grade    1.5130565   0.19436694     7.785     4.541
# absdiff.Grade     -1.0399630   0.13025175    -7.984     0.353
# nodematch.Sex      0.8583060   0.07123142    12.050     2.359
# nodefactor.Sex.M  -0.1476605   0.03945048    -3.743     0.863
# nodematch.Race     1.1908515   0.08146466    14.618     3.290
#                                                   AIC 12952.30

5-4의 세 nodematch 모형(AIC 13034 부근)에서 크게 개선됐고, 여섯 계수가 모두 유의하다. 5-4에서 “같은 학년 오즈비 25.5배”라고 읽었던 값이 여기서는 4.54배로 줄었다 — 나머지 20배쯤은 “같은 학년”이 아니라 “학년이 가깝다”가 설명하고 있었던 것이다.

14. 교실 적용 (Classroom Application)

14-1. 두 질문을 분리해서 물어라 (Ask the Two Questions Separately)

교우관계 조사 결과를 놓고 “여학생이 더 친한 것 같다”는 말이 나오면, 그 말이 둘 중 무엇인지 먼저 물어야 한다.
① “여학생이 친구가 많다” → 활동성 → nodefactor
② “여학생이 여학생끼리 뭉친다” → 선택성 → nodematch
①과 ②는 다른 현상이고, 대응도 다르다. ①이면 남학생 쪽 관계 형성을 도와야 하고, ②면 성별 혼합 모둠을 늘려야 한다. 둘을 한 모형에 같이 넣어야 어느 쪽인지 갈린다.

14-2. 집단 크기가 작은 쪽을 조심하라 (Beware the Smaller Group)

§7에서 본 것처럼, 작은 집단은 “같은 집단 짝”이 구조적으로 적다. 전학생 3명, 특수교육 대상 학생 2명, 다문화 배경 학생 4명 — 이런 소수 집단은 같은 집단 안에서 친구를 만들 기회 자체가 거의 없다. E-I 지수만 보면 “이 아이들은 반 전체와 잘 어울린다”로 보이지만, 사실은 어울릴 수밖에 없었던 것일 수 있다. 활동성 항을 넣어 기회 구조를 통제한 뒤에 판단할 것.

14-3. nodefactor집단의 지표이지 개인의 지표가 아니다 (nodefactor Measures Groups, Not Individuals)

θf\theta_f가 유의하게 음수라고 해서 그 집단의 모든 학생이 소외된 것은 아니다. 차수 합/평균의 이야기이므로, 소외 학생을 찾으려면 여전히 개인 차수·연결중심성(2단원)과 고립점 확인을 따로 해야 한다. 모형은 “집단 수준의 경향”, 명단은 “개인 수준의 개입 대상”이다.

14-4. 연속 속성엔 absdiff를 — 다만 선형성을 확인하고 (Use absdiff for Continuous Attributes, but Check Linearity)

성적, 키, 통학 거리, 스마트폰 사용 시간, 독서량 — 교실의 많은 변수가 연속형이다. 이때 “같은 점수인 학생끼리 친한가”(nodematch)는 거의 의미가 없다. “가까운 점수끼리 친한가”가 옳은 질문이고 그것이 absdiff다.
단, §13-2처럼 차이별로 로짓을 실제로 찍어 보고 직선인지 확인할 것. 계단(같음 특권)이 따로 있으면 nodematch도 같이 넣어야 한다.

14-5. 학년·학기처럼 순서 있는 범주는 두 항을 함께 (Ordered Categories Need Both Terms)

학년, 반 번호, 모둠 순번 — 순서가 있는 변수는 §13-2의 학년과 같은 구조를 갖기 쉽다. “같은 칸”이라는 계단“멀수록 멀어진다”는 기울기가 공존한다. nodematch(v) + absdiff(v) 두 줄이 기본이라고 생각하면 된다.

14-6. 동료·학부모에게 설명하는 문장 (Sentences for Colleagues and Parents)

계수를 그대로 읽어 주면 아무도 못 알아듣는다. 항상 오즈비 + 통제 문구로 바꿔 말한다.

❌ “nodematch 계수가 1.89입니다”
⭕ “학생마다 친구를 만드는 정도가 다른 것을 감안하고 나서도, 같은 성별인 두 학생이 친구일 가능성이 다른 성별인 두 학생의 약 6.6배였습니다.”

❌ “absdiff.Grade가 −1.04입니다”
⭕ “학년이 한 학년 벌어질 때마다 친구가 될 가능성이 약 3분의 1로 줄었습니다. 같은 학년이면 거기에 더해 4.5배의 추가 이점이 있었고요.”

15. 연습문제 (Exercises)

연습 1. nodefactor와 포화 모형 (Exercise 1)

5-4 연습 1에서 쓴 8명 학급을 그대로 쓴다. A집단 = {1,2,3,4,5}, B집단 = {6,7,8}, 간선 8개는 다음과 같다.
1–2 1–3 2–3 3–4 4–5 6–7 7–8 5–6 (마지막 하나만 교차 간선)
(a) 각 학생의 차수를 구하고, gAfactorg^{\text{factor}}_{\text{A}}gBfactorg^{\text{factor}}_{\text{B}}간선 기준차수 합 기준 두 경로로 각각 구하라. 두 값의 합이 2×8=162\times 8=16인지 확인하라.
(b) 세 칸(AA, BB, 교차)의 쌍 수 NN과 간선 수 mm을 구하고, 각 칸의 관측 로짓을 계산하라.
(c) 모형 edges + nodematch + nodefactor(B)의 세 계수를 §5처럼 연립방정식으로 손으로 풀어라.
(d) 5-4에서 활동성 없이 구한 θm=2.7932\theta_m=2.7932와 비교하라. 어느 방향으로 움직였는가?
먼저 풀고 §16 해설과 맞춰 볼 것.
연습 2. absdiff의 부호 (Exercise 2)

§10의 6명 미니 학급을 그대로(간선도 그대로) 두고, 속성만 바꾼다. 이번엔 “하루 스마트폰 사용 시간(시간)”이 x=(1,5,2,6,3,7)x=(1,\,5,\,2,\,6,\,3,\,7)이라 하자. 간선은 여전히 (1,2), (1,3), (2,3), (3,4), (4,5), (5,6)이다.

(a) 15쌍을 전부 적어 gcovg^{\text{cov}}gabsg^{\text{abs}}를 구하라. gcovg^{\text{cov}}idixi\sum_i d_i x_i로도 검산할 것.
(b) 간선 6개의 평균 xixj|x_i-x_j|와 비간선 9개의 평균 xixj|x_i-x_j|를 비교하라. §10의 독서량 자료(1.833 대 4.667)와 방향이 같은가, 반대인가?
(c) 그렇다면 edges + absdiff를 적합했을 때 θabs\theta_{\text{abs}}부호는 양수인가 음수인가? 그 부호를 교실 문장으로 옮겨 쓰라.
먼저 풀고 §16 해설과 맞춰 볼 것.

16. 해설과 답 (Solutions)

문제 1 해설 (Solution to Problem 1)

(a) 차수와 두 경로

먼저 각 학생에게 붙은 간선을 세어 차수를 구한다.

학생12345678
집단AAAAABBB
붙은 간선1-2,1-31-2,2-31-3,2-3,3-43-4,4-54-5,5-65-6,6-76-7,7-87-8
차수 did_i2232222116

차수 합 경로:

gAfactor=d1+d2+d3+d4+d5=2+2+3+2+2=11 g^{\text{factor}}_{\text{A}} = d_1+d_2+d_3+d_4+d_5 = 2+2+3+2+2 = 11 gBfactor=d6+d7+d8=2+2+1=5 g^{\text{factor}}_{\text{B}} = d_6+d_7+d_8 = 2+2+1 = 5

간선 경로 — 간선 8개를 종류별로 분류하고 δ\delta를 붙인다. 0인 항도 모두 적는다.

간선1–21–32–33–44–56–77–85–6
종류AA 5개BB 2개교차 1개8
δAfactor\delta^{\text{factor}}_{\text{A}}2222200111
δBfactor\delta^{\text{factor}}_{\text{B}}000002215
δmatch\delta^{\text{match}}111111107
gAfactor=25+02+11=11gBfactor=05+22+11=5 g^{\text{factor}}_{\text{A}} = 2\cdot 5 + 0\cdot 2 + 1\cdot 1 = 11 \quad\checkmark \qquad g^{\text{factor}}_{\text{B}} = 0\cdot 5 + 2\cdot 2 + 1\cdot 1 = 5 \quad\checkmark
답 (a) d=(2,2,3,2,2,2,2,1)d=(2,2,3,2,2,2,2,1), gAfactor=11g^{\text{factor}}_{\text{A}}=11, gBfactor=5g^{\text{factor}}_{\text{B}}=5. 두 경로가 일치하고, 11+5=16=2×811+5=16=2\times 8 ✓ (§4의 공선성 항등식).

(b) 세 칸

A 5명, B 3명이므로 쌍은 (82)=28\binom 82 = 28개이고 세 칸으로 갈린다.

쌍 수 NN간선 수 mm간선 없는 쌍왜 그 값인가관측 로짓
AA(52)=10\binom 52=10551-2,1-3,2-3,3-4,4-5log55=log1=0\log\frac{5}{5}=\log 1 = 0
BB(32)=3\binom 32=3216-7,7-8 (6-8은 없음)log21=log2=0.6931472\log\frac{2}{1}=\log 2 = 0.6931472
교차5×3=155\times 3=151145-6 하나뿐log114=2.6390573\log\frac{1}{14}=-2.6390573
28820
답 (b) LAA=0L_{\text{AA}}=0, LBB=log2=0.6931472L_{\text{BB}}=\log 2 = 0.6931472, L교차=log114=2.6390573L_{\text{교차}}=\log\frac1{14}=-2.6390573.

(c) 연립방정식

B를 활동성 수준으로 잡으면 δBfactor\delta^{\text{factor}}_{\text{B}}는 AA에서 0, 교차에서 1, BB에서 2다.

(i)θe+θm=0(ii)θe+θm+θf=2.6390573(iii)θe+θm+2θf=0.6931472 \begin{aligned} \text{(i)}\quad & \theta_e + \theta_m &&= 0\\ \text{(ii)}\quad & \theta_e \phantom{{}+\theta_m} + \theta_f &&= -2.6390573\\ \text{(iii)}\quad & \theta_e + \theta_m + 2\theta_f &&= \phantom{-}0.6931472 \end{aligned}

1단계 (iii) - (i):

2θf=0.69314720=0.6931472=log2θf=12log2=0.3465736,eθf=2=1.4142136 2\theta_f = 0.6931472 - 0 = 0.6931472 = \log 2 \quad\Longrightarrow\quad \theta_f = \tfrac12\log 2 = 0.3465736,\quad e^{\theta_f}=\sqrt 2 = 1.4142136

2단계 (ii)에 대입:

θe=2.63905730.3465736=2.9856309,eθe=1142=0.0505076 \theta_e = -2.6390573 - 0.3465736 = -2.9856309, \qquad e^{\theta_e}=\frac{1}{14\sqrt 2}=0.0505076

3단계 (i)에 대입:

θm=0(2.9856309)=2.9856309,eθm=142=19.7989899 \theta_m = 0 - (-2.9856309) = 2.9856309, \qquad e^{\theta_m}=14\sqrt 2 = 19.7989899

검산 — 세 칸의 오즈를 되조립한다.

계수 조합계산관측 오즈
AAeθe+θme^{\theta_e+\theta_m}1142142=1\frac{1}{14\sqrt2}\cdot 14\sqrt2 = 15/5=15/5=1
BBeθe+θm+2θfe^{\theta_e+\theta_m+2\theta_f}12=21\cdot 2 = 22/1=22/1=2
교차eθe+θfe^{\theta_e+\theta_f}11422=114\frac{1}{14\sqrt2}\cdot\sqrt2 = \frac1{14}1/141/14
summary(ergm(nw8 ~ edges + nodematch("g") + nodefactor("g")))$coefficients
#                   Estimate  Std. Error
# edges           -2.9856309   1.2434667
# nodematch.g      2.9856309   1.2434667
# nodefactor.g.B   0.3465736   0.6892024      <- 손 계산과 완전 일치
답 (c) θe=2.9856309\theta_e=-2.9856309, θm=+2.9856309\theta_m=+2.9856309, θf(B)=+0.3465736\theta_f(\text{B})=+0.3465736.
θe\theta_eθm\theta_m부호만 다르고 크기가 같은 것은 우연이 아니다 — AA 칸의 간선 수와 비간선 수가 5개로 같아서 LAA=log1=0L_{\text{AA}}=\log 1 = 0이 되었고, (i)이 θm=θe\theta_m=-\theta_e를 강제하기 때문이다.
값의 의미eθm=19.80e^{\theta_m}=19.80. 활동성을 통제한 뒤에도 같은 집단이면 오즈가 약 20배다. eθf=1.414e^{\theta_f}=1.414는 “끝점에 B집단 학생이 하나 늘 때마다 오즈 1.41배”, BB 쌍이면 2배다. 다만 N=28N=28쌍에 BB 칸이 3쌍뿐이라 표준오차가 크다(θf\theta_fz=0.503z=0.503). 교실 해석: 3명짜리 소집단은 “안에서 뭉친다/안 뭉친다”를 통계로 판정하기엔 쌍이 3개뿐이다. 소수 집단은 여러 학급을 합쳐야 판단할 수 있다.

(d) 5-4와 비교

모형θe\theta_eθm\theta_meθme^{\theta_m}θf\theta_f
5-4 edges+nodematch2.6390573-2.63905732.79320802.793208016.333
5-5 +nodefactor(B)2.9856309-2.98563092.98563092.985630919.7990.34657360.3465736
답 (d) θm\theta_m2.79322.98562.7932\to2.9856으로 커졌다 (오즈비 16.33 → 19.80). §7의 10명 학급과 같은 방향이다.
이유도 같다. B집단은 3명뿐이라 같은 집단 짝이 2명밖에 없는데(A는 4명), 그런 불리한 기회 구조에서도 BB 간선이 2개나 나왔다. 그 “기회 대비 초과분”을 θf\theta_f가 가져가고 나면, 남은 동질성 몫이 더 커진다.
일반 규칙: 작은 집단이 상대적으로 활발하면, 활동성을 통제할 때 동질성 계수는 커진다.

문제 2 해설 (Solution to Problem 2)

(a) 15쌍 전부

x=(1,5,2,6,3,7)x=(1,5,2,6,3,7), 간선은 (1,2), (1,3), (2,3), (3,4), (4,5), (5,6).

#xix_ixjx_jδcov\delta^{\text{cov}}δabs\delta^{\text{abs}}A[i,j]A[i,j]AδcovA\cdot\delta^{\text{cov}}AδabsA\cdot\delta^{\text{abs}}
1(1,2)1564164
2(1,3)1231131
3(1,4)1675000
4(1,5)1342000
5(1,6)1786000
6(2,3)5273173
7(2,4)56111000
8(2,5)5382000
9(2,6)57122000
10(3,4)2684184
11(3,5)2351000
12(3,6)2795000
13(4,5)6393193
14(4,6)67131000
15(5,6)371041104
4464319
gcov=6+3+0+0+0+7+0+0+0+8+0+0+9+0+10=43 g^{\text{cov}} = 6+3+0+0+0+7+0+0+0+8+0+0+9+0+10 = 43 gabs=4+1+0+0+0+3+0+0+0+4+0+0+3+0+4=19 g^{\text{abs}} = 4+1+0+0+0+3+0+0+0+4+0+0+3+0+4 = 19

검산 — 차수는 d=(2,2,3,2,2,1)d=(2,2,3,2,2,1)로 §10과 같다(망을 안 바꿨으니까).

idixi=21+25+32+26+23+17=2+10+6+12+6+7=43 \sum_i d_i x_i = 2\cdot 1 + 2\cdot 5 + 3\cdot 2 + 2\cdot 6 + 2\cdot 3 + 1\cdot 7 = 2+10+6+12+6+7 = 43 \quad\checkmark
답 (a) gcov=43g^{\text{cov}}=43, gabs=19g^{\text{abs}}=19. 두 경로가 일치한다. (참고: 15쌍 전체의 xixj=44\sum|x_i-x_j|=44)

(b) 두 평균 비교

쌍 수xixj\sum|x_i-x_j|평균§10 독서량 자료
간선61919/6=3.166719/6=3.16671.8333
비간선94419=2544-19=2525/9=2.777825/9=2.77784.6667
답 (b) 방향이 반대다. 독서량에서는 간선 쪽 차이가 훨씬 작았는데(1.833 < 4.667), 스마트폰 시간에서는 간선 쪽 차이가 오히려 크다(3.167 > 2.778).

(c) 부호

간선인 쌍이 더 벌어진 값을 갖고 있으므로, xixj|x_i-x_j|가 커질수록 간선일 확률이 높아지는 쪽으로 적합된다. 따라서 θabs\theta_{\text{abs}}양수다.

nw6 %v% "ph" <- c(1,5,2,6,3,7)
summary(nw6 ~ edges + nodecov("ph") + absdiff("ph"))
#      edges nodecov.ph absdiff.ph
#          6         43         19          <- (a) 손 계산과 일치

summary(ergm(nw6 ~ edges + absdiff("ph")))$coefficients
#              Estimate  Std. Error  z value  Pr(>|z|)
# edges      -0.8513248   1.1227243   -0.758     0.448
# absdiff.ph  0.1501150   0.3292684    0.456     0.648        <- 양수, 그러나 유의하지 않음
답 (c) θabs=+0.1501\theta_{\text{abs}}=+0.1501양수이고, e0.1501=1.1620e^{0.1501}=1.1620이다.
교실 문장: “스마트폰 사용 시간이 1시간 더 벌어질 때마다 두 학생이 친구일 오즈가 약 1.16배 늘었다 — 즉 사용 시간이 비슷한 학생끼리가 아니라 다른 학생끼리 친한 경향(이질성)이 나타났다.”
단, p=0.648p=0.648로 전혀 유의하지 않다. 6명 학급에서는 어떤 결론도 내릴 수 없다.
이 문제의 진짜 교훈망은 한 글자도 안 바꿨는데 부호가 뒤집혔다. 같은 6명, 같은 6개 간선인데 속성만 갈아 끼웠더니 §10의 동질성이 이질성이 되었다.
그러니 θabs\theta_{\text{abs}}의 부호는 망의 성질이 아니라 “그 속성이 망과 어떻게 맞물리는가”를 잰다. 한 학급의 교우관계를 놓고도 성적으로는 동질성, 성격으로는 이질성이 동시에 나올 수 있다는 뜻이다. 속성을 바꿔 가며 여러 번 물어봐야 교실이 보인다.