조지 불(George Boole)은 불 논리의 부류를 기호로 계산한 뒤, 그 부류에 속하는 사람이나 사건의 수에도 계산 규칙을 적용했습니다. 전체가 100명이고 조건 x에 60명, 조건 y에 50명이 해당한다는 정보만으로는 겹침이 한 값으로 정해지지 않습니다. 그래도 가능한 범위는 정확히 구할 수 있습니다. 이번에는 불이 제19장 ‘통계적 조건’에서 다룬 상한과 하한을 네 칸 표에서 확인합니다.
01 · 불이 풀려던 문제
두 집단의 크기만으로 겹침을 어디까지 알 수 있을까요?
가상의 독서 프로그램 참가자 100명 가운데 토론 신청자는 60명, 글쓰기 신청자는 50명이라고 하겠습니다. 두 활동을 모두 신청한 인원은 아직 집계되지 않았습니다. 60과 50을 곱하거나 더하는 것만으로 겹침을 정할 수 있을까요? 불은 이런 부족한 정보에서도 결론의 ‘한계’를 찾으려 했습니다.
겹침을 c명이라고 두면 네 칸은 함께 움직입니다. 두 활동 모두 c명, 토론만 60−c명, 글쓰기만 50−c명, 둘 다 선택하지 않은 사람은 100−60−50+c=c−10명입니다. 네 칸은 모두 사람 수이므로 음수가 될 수 없습니다. 이 간단한 조건이 c의 범위를 정합니다.
불은 원전에서 n을 부류의 개수를 나타내는 기호로 쓰고, n(1)·n(x)·n(y)가 주어졌을 때 n(xy)의 수적 상한과 하한을 구했습니다. 아래 표는 그 문제를 현대적인 2×2 분할표로 옮긴 것입니다.
02 · 불의 제안
교집합의 최대 인원과 최소 인원을 구합니다
교집합은 x와 y에 동시에 속하므로 두 집단 중 작은 쪽인 50명을 넘을 수 없습니다. 이것이 상한입니다. 한편 60명과 50명을 겹침 없이 놓으면 110명이 필요합니다. 전체는 100명이므로 적어도 10명은 겹쳐야 합니다. 이것이 하한입니다.
일반식으로 쓰면 max(0, n(x)+n(y)−n(1)) ≤ n(xy) ≤ min(n(x),n(y))입니다. 불의 원전은 상한을 두 집단 수 중 작은 값으로 설명하고, 하한 계산에서는 부류 수의 비음수 조건과 n(x)+n(y)−n(1)을 함께 다룹니다. 오늘의 max·min 표기는 그 내용을 한 줄로 정리한 현대적 표현입니다.
03 · 불의 제안을 표에서 확인하기
겹치는 인원을 바꾸어 네 칸이 모두 가능한 수인지 살펴보세요
| 분할 | 식 | 인원 | 가능 여부 |
|---|
9명을 선택하면 ‘둘 다 아님’이 −1명이 되어 불가능합니다. 51명을 선택하면 글쓰기만 신청한 사람이 −1명이 됩니다. 10명과 50명 사이에서는 네 칸이 모두 0 이상이고 합계가 정확히 100명이 됩니다.
04 · 표에서 얻은 발견
부분 정보는 하나의 답 대신 정확한 범위를 줄 수 있습니다
n(x)=60과 n(y)=50만으로 n(xy)를 30이라고 단정할 수 없습니다. 30은 가능한 값 가운데 하나이며, 두 조건이 독립이라는 추가 조건을 넣을 때 특별한 의미를 갖습니다. 이번 회차에서 확실히 말할 수 있는 것은 10명 이상 50명 이하라는 범위입니다.
범위 밖의 값은 단순히 드문 값이 아닙니다. 표의 어느 칸이 음수가 되거나 전체 합계가 맞지 않아 주어진 자료와 논리적으로 함께 성립할 수 없는 값입니다. 범위 안의 41개 정수는 현재 정보만으로는 모두 가능합니다.
“겹침은 대략 30명”이라고 추측하기 전에 “전체 100명, x 60명, y 50명이므로 n(xy)는 10~50명이고, 정확한 값에는 교집합 집계가 더 필요하다”고 기록합니다.
05 · 오늘의 실제 적용
검색 결과와 대시보드 수치를 먼저 검산합니다
회원 명단에서 ‘뉴스레터 동의’ 60명과 ‘행사 신청’ 50명만 집계되었을 때, 두 조건을 모두 만족하는 대상은 10~50명입니다. 실제 AND 검색 결과가 8명이라면 원자료의 분모, 중복 제거, 미확인 처리 중 하나를 다시 확인해야 합니다. 55명이어도 두 번째 집단 전체보다 많으므로 바로 오류를 찾을 수 있습니다.
데이터베이스에서는 각 조건을 FILTER와 COUNT로 세고, 두 조건을 AND로 묶어 실제 교집합을 구할 수 있습니다. 범위 계산은 실제 쿼리를 대신하지 않습니다. 집계가 도착하기 전 용량을 계획하거나, 서로 다른 화면에서 가져온 합계가 함께 성립하는지 빠르게 감사하는 안전선으로 씁니다.
① 같은 전체 N을 기준으로 한 두 집단인지 확인합니다. ② 하한 max(0,a+b−N)과 상한 min(a,b)를 계산합니다. ③ 실제 AND 집계가 범위 안인지 검사합니다. ④ 범위 안의 한 값을 사실처럼 채우지 않고, 정확한 교집합을 별도로 조회합니다.
06 · 바르게 쓰는 기준
인원수의 범위와 확률의 범위를 구별합니다
이번 표의 10~50은 100명 명단에서 가능한 사람 수입니다. 100으로 나누면 0.10~0.50이라는 명단 내부 비율 범위가 됩니다. 이 비율을 더 큰 모집단의 확률 범위로 읽으려면 표본 설계와 무작위 선택 같은 추가 전제가 필요합니다.
또한 ‘겹침이 30명일 수 있다’와 ‘겹침이 30명이다’는 다른 말입니다. 불의 방법은 정보가 부족할 때도 가능한 결론의 경계를 계산하도록 돕습니다. 정확한 한 값을 얻으려면 새로운 관찰이나 관계 조건이 필요합니다.
불의 문제: 부분적인 부류 수에서 교집합의 가능한 한계를 찾기. 불의 제안: n(1)·n(x)·n(y)로 n(xy)의 상한과 하한을 계산하기. 오늘의 쓰임: 검색·명단·대시보드의 교집합 수가 가능한 범위인지 먼저 검산하기.
07 · 자료와 출처
불의 원전과 공식 기술 자료
- 조지 불, 『An Investigation of the Laws of Thought』(1854), 제19장 ‘Of Statistical Conditions’, 원서 229~231쪽 — n(1)·n(x)·n(y)와 n(xy)의 상한·하한 문제.
- Project Gutenberg, 『An Investigation of the Laws of Thought』 서지 페이지 — 전자본 제작·공개 정보.
- PostgreSQL 공식 문서, Aggregate Expressions — 조건별 행을 세는 COUNT와 FILTER 구문.
- PostgreSQL 공식 문서, WHERE Clause — 조건을 만족하는 행을 선택하는 방식.
- 조지 불 초상 판화 · Wikimedia Commons — 1865년 1월 21일 게재, 공개 영역.
