← SNA 이론 · 단계별 학습 차례
들어가기Adjacency Matrix & Basic Measures
인접행렬과 기본 지표 개관
SNA 이론 · 단계별 학습STAGED+ 스터디
이 문서의 위치. 1단계 첫 세션에서 교재
simple example 1.r을 통째로 실행하며
기본 지표를 한 바퀴 둘러본 개관(오리엔테이션) 노트다.
여기 나오는 개념 하나하나는 미시 단원(1-1 ~ 1-9)에서 손 계산으로 다시 파고든다.
행렬 곱셈 는 이미 단원 1-2 노트에서 완전 전개했다.
차례
- 오늘의 네트워크 (Today's Network)
- 인접행렬 (Adjacency Matrix) → 단원 1-1
- 연결정도 (Degree) → 단원 1-4
- 밀도 (Density) → 단원 1-5
- 측지거리 (Geodesic Distance) → 단원 1-6
- 도달가능성과 컴포넌트 (Reachability & Components) → 단원 1-7
- 행렬 거듭제곱 (Matrix Powers) → 단원 1-2 (완료)
- sna ↔ igraph 문법 대조 (Syntax Comparison)
- 교실 적용 체크리스트 (Classroom Application Checklist)
- 세션 전체 R 코드 (Full R Code)
1. 오늘의 네트워크 (Today's Network)
학생 5명()에게 "친하게 지내는 친구"를 지명하게 한 방향 네트워크. 지명 7건:
M1→M2 M1→M3 M1→M5 M2→M3 M3→M1 M3→M4 M5→M1
2. 인접행렬 (Adjacency Matrix) → 단원 1-1
행 = 지명하는 사람, 열 = 지명받는 사람. 가 를 지명. 자기 지명 없음().
방향 네트워크는 비대칭일 수 있다: 이지만 — 이 어긋남(일방 지명) 자체가 관계 인식의 불일치라는 정보다.
3. 연결정도 (Degree) → 단원 1-4
indegree = 인기(선택받는 정도), outdegree = 사교적 적극성(선택하는 정도).
| M1 | M2 | M3 | M4 | M5 | |
|---|---|---|---|---|---|
| outdegree (지명함) | 3 | 1 | 2 | 0 | 1 |
| indegree (지명받음) | 2 | 1 | 2 | 1 | 1 |
| 합계 | 5 | 2 | 4 | 1 | 2 |
M1은 관계의 허브(out 3, in 2). M4는 out 0 — 스스로 관계를 만들지 않는 학생. 위축인지 만족인지는 수치가 아니라 관찰로 판단할 문제다.
4. 밀도 (Density) → 단원 1-5
방향 네트워크에서 가능한 지명 수는 이므로
학급 크기가 다르면 밀도를 직접 비교하면 안 된다. 한 사람이 유지할 수 있는 관계 수에는 한계가 있어
이 클수록 분모 만 커지고 밀도는 자연히 낮아진다.
같은 반의 학기 초 vs 학기 말 비교처럼 같은 크기끼리 쓰는 지표.
5. 측지거리 (Geodesic Distance) → 단원 1-6
= 에서 로 가는 최단 경로의 길이(지명 방향을 따라감). 도달 불가면 .
- : M2→M3→M1→M5 — M2의 소식이 M5까지 가려면 세 다리.
- M4의 행이 전부 : M4가 지명한 사람이 없으니 M4에게서 출발하는 정보는 아무에게도 못 간다. 반대로 M4의 열은 유한 — 남들은 M4에게 닿을 수 있다.
6. 도달가능성과 컴포넌트 (Reachability & Components) → 단원 1-7
도달가능성 행렬: .
| 기준 | 정의 | 이 네트워크의 결과 |
|---|---|---|
| 약한 연결 | 방향 무시하고 이어져 있으면 같은 덩어리 | 전원 1개 컴포넌트 |
| 강한 연결 | 서로 오갈 수 있어야 같은 덩어리 | + |
개관 세션에서 가장 중요한 발견: 소시오그램이 겉보기에 다 이어져 있어도(약한 연결 1덩어리),
방향을 존중하면 관계의 '흐름'에서 빠져 있는 학생(M4)이 드러난다.
그림만 보지 않고 분석을 하는 이유가 여기에 있다.
7. 행렬 거듭제곱 (Matrix Powers) → 단원 1-2 (완료)
= 에서 로 가는 2단계 경로의 수. 대각선 는 각자의 상호 지명 수가 된다:
항별 완전 전개와 모든 경로 목록은 단원 1-2 노트 참고.
8. sna ↔ igraph 문법 대조 (Syntax Comparison)
교재(2010)는 sna 중심이지만 현재 표준은 igraph라 둘을 병행한다. 두 패키지의 결과가 일치함을 확인했다.
| 개념 | sna | igraph 현대 문법 | igraph 구식(교재) |
|---|---|---|---|
| 행렬→그래프 | 행렬 그대로 사용 | graph_from_adjacency_matrix() | graph.adjacency() |
| 연결정도 | degree(A, cmode="indegree") | degree(g, mode="in") | 동일 |
| 밀도 | gden(A) | edge_density(g) | graph.density() |
| 최단거리 | geodist(A)$gdist | distances(g, mode="out") | shortest.paths() |
| 컴포넌트 | component.dist(A, connected="strong") | components(g, mode="strong") | clusters() |
구식 이름은 아직 동작하지만 deprecation 경고가 뜬다. 교재 코드를 읽을 줄 알되,
직접 쓸 때는 현대 이름을 쓰는 것을 원칙으로 한다.
9. 교실 적용 체크리스트 (Classroom Application Checklist)
오늘 배운 것만으로 가능한 학급 진단:
- 설문("친하게 지내는 친구를 적으세요") → 인접행렬 입력
- indegree 0인 학생 → 소외 위험 1차 스크리닝
- 상호 지명 비율() → 관계의 안정성. 일방 지명이 많으면 관계 인식의 어긋남
- 강한 컴포넌트 분석 → 겉보기와 달리 관계 흐름에서 분리된 학생 발견
- 밀도 → 학기 초 vs 학기 말 비교로 학급 응집 변화 추적 (같은 반끼리만)
10. 세션 전체 R 코드 (Full R Code for the Session)
library(sna)
A <- matrix(c(0,1,1,0,1,
0,0,1,0,0,
1,0,0,1,0,
0,0,0,0,0,
1,0,0,0,0), byrow=TRUE, nrow=5,
dimnames=list(paste0("M",1:5), paste0("M",1:5)))
degree(A, cmode="outdegree") # 3 1 2 0 1
degree(A, cmode="indegree") # 2 1 2 1 1
gden(A) # 0.35 (= 7 / 20)
geodist(A)$gdist # 측지거리 행렬 (M4행은 Inf)
reachability(A) # 도달가능성 행렬
A %*% A # 2단계 경로 수 (단원 1-2)
component.dist(A, connected="weak")$membership # 1 1 1 1 1
component.dist(A, connected="strong")$membership # 1 1 1 2 1 ← M4만 별도
# 시각화
set.seed(7)
gplot(A, displaylabels=TRUE, label.pos=5, boxed.labels=FALSE,
vertex.cex=2.2, vertex.col="lightblue", arrowhead.cex=1.4)
미시 단원 진행 현황은 STUDY_PLAN.md의 1단계 표 참고.
완료: 1-1, 1-2 (노트 02) ·
다음: 1-3 와 걷기 vs 경로