1 Spring Balance 의 design
각 측정에서 일부 물건만 한 접시에 올림. design entry \(\in \{0, 1\}\):
- \(1\): 측정에 포함.
- \(0\): 제외.
저울 측정값 = 포함된 물건의 합 무게: \[ y_i = \sum_{j \in S_i} w_j + \varepsilon_i \]
여기서 \(S_i\) 는 측정 \(i\) 에 포함된 물건 집합.
2 BIB 와의 동치성
BIB design 의 incidence matrix 는 0/1 행렬. 행이 블록, 열이 처치, 1 은 그 처치가 그 블록에 등장.
Spring balance 의 design matrix 도 0/1 — 각 측정 (블록) 에 어느 물건 (처치) 이 포함.
→ 두 framework 가 동일 행렬 구조. BIB 의 통계 결과가 weighing 에 그대로 적용.
2.1 BIB 의 5 모수 (재방문)
\((v, b, r, k, \lambda)\):
- \(v\): 물건 수.
- \(b\): 측정 횟수.
- \(r\): 각 물건이 등장하는 측정 수.
- \(k\): 각 측정의 물건 수.
- \(\lambda\): 임의의 두 물건이 같은 측정에 등장하는 횟수.
관계: \[ bk = vr,\quad \lambda(v - 1) = r(k - 1) \]
3 \((7, 7, 3, 3, 1)\) BIB 의 weighing 적용
7 물건, 7 측정, 각 측정 3 물건, 각 쌍 1 번 같이.
Design matrix (incidence):
w1 w2 w3 w4 w5 w6 w7
m1: 1 1 0 1 0 0 0 → y1 = w1 + w2 + w4 + ε
m2: 0 1 1 0 1 0 0 → y2 = w2 + w3 + w5 + ε
m3: 0 0 1 1 0 1 0 → y3 = w3 + w4 + w6 + ε
m4: 0 0 0 1 1 0 1 → y4 = w4 + w5 + w7 + ε
m5: 1 0 0 0 1 1 0 → y5 = w1 + w5 + w6 + ε
m6: 0 1 0 0 0 1 1 → y6 = w2 + w6 + w7 + ε
m7: 1 0 1 0 0 0 1 → y7 = w1 + w3 + w7 + ε
각 물건 3 번 등장 (\(r = 3\)). 각 쌍 1 번 같이 (\(\lambda = 1\)).
4 추정량
BIB design 에서 처치 효과 (= 무게 추정):
\[ \hat w_j = \frac{k Q_j}{\lambda v} \]
여기서 $Q_j = $ 물건 \(j\) 의 “intra-block 합” (각 측정의 그 물건 응답에 weight 1, 다른 물건 응답에 weight \(-1/(k-1)\)).
또는 더 명확히: 회귀 분석으로 \(\hat{\mathbf{w}} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y}\).
4.1 Spring Balance 의 정보 행렬
\(\mathbf{X}^T \mathbf{X}\) 의 구조: - 대각 원소: \(r\) (각 물건의 등장 횟수). - 비대각 원소: \(\lambda\) (각 쌍의 동시 등장 횟수).
\[ \mathbf{X}^T \mathbf{X} = \begin{pmatrix} r & \lambda & \lambda & \cdots & \lambda \\ \lambda & r & \lambda & \cdots & \lambda \\ \vdots & & & & \vdots \\ \lambda & \lambda & \lambda & \cdots & r \end{pmatrix} = (r - \lambda) \mathbf{I} + \lambda \mathbf{J} \]
\(\mathbf{J}\) = 모든 1 행렬.
4.2 Inverse 의 형태
\[ (\mathbf{X}^T \mathbf{X})^{-1} = \frac{1}{r - \lambda} \mathbf{I} - \frac{\lambda}{(r - \lambda)(r + \lambda(v-1))} \mathbf{J} \]
각 무게의 분산:
\[ \text{Var}(\hat w_j) = \sigma^2 \cdot \left[\frac{1}{r - \lambda} - \frac{\lambda}{(r - \lambda)(r + \lambda(v-1))}\right] \]
(단, intercept term 제거 후의 effective inverse — 실제 BIB 는 sum 제약 있음. 자세한 식은 BIB 표준 textbook.)
5 효율 비교 — Chemical vs Spring
5.1 Chemical Balance (Hadamard)
\[ \text{Var}(\hat w_j) = \sigma^2 / N \]
각 물건 정보 = \(N / \sigma^2\).
5.2 Spring Balance (BIB)
각 물건 정보 = \(r \lambda v / [\sigma^2 (k - \lambda(k-1)/(r-\lambda))]\) (대략).
상대 효율:
\[ e_{\text{spring}} \approx \frac{r \lambda}{N (r - \lambda + ...)} \approx \frac{1}{2} \text{ (근사)} \]
자세한 비교는 design 모수에 의존.
Chemical 은 \(\pm 1\) 의 3 값으로 직교 구성 가능 → \(\mathbf{X}^T\mathbf{X} = N \mathbf{I}\).
Spring 은 \(0, 1\) 의 2 값으로 비대각 원소 0 만들기 어려움 → \(\mathbf{X}^T\mathbf{X}\) 가 대각 + 일정 비대각 (\(\lambda\)) 의 형태.
비대각 0 이 아니므로 정보 손실 ↑. 분산 \(\sigma^2/N\) 의 약 2 배.
“음수 사용의 정보 가치” 의 통계적 형식.
6 \((7, 7, 3, 3, 1)\) BIB 의 weighing 효율
Chemical \(H_8\) 과 비교 (8 측정 vs 7 측정):
| Design | 측정 수 | 물건 수 | 분산 / 무게 |
|---|---|---|---|
| 개별 | 7 | 7 | \(\sigma^2\) |
| BIB Spring | 7 | 7 | \(\sigma^2 \cdot (k/\lambda v) \approx \sigma^2 \cdot 3/7 = 0.43\sigma^2\) |
| Hadamard \(H_8\) | 8 | 7 (또는 8) | \(\sigma^2 / 8 = 0.125\sigma^2\) |
Spring 이 chemical 의 약 3.4 배 (정밀도 1/√3.4 ≈ 0.54). 효율 약간 낮음.
그러나 spring 이 1 접시 저울만 필요 (설비 단순) — trade-off.
7 Python 코드 — BIB Spring Balance
import numpy as np
from scipy.linalg import hadamard
# (7, 7, 3, 3, 1) BIB incidence matrix
bib_X = np.array([
[1, 1, 0, 1, 0, 0, 0],
[0, 1, 1, 0, 1, 0, 0],
[0, 0, 1, 1, 0, 1, 0],
[0, 0, 0, 1, 1, 0, 1],
[1, 0, 0, 0, 1, 1, 0],
[0, 1, 0, 0, 0, 1, 1],
[1, 0, 1, 0, 0, 0, 1],
])
print("=== BIB (7, 7, 3, 3, 1) incidence matrix ===")
print(bib_X)
XtX = bib_X.T @ bib_X
print(f"\nX'X (= rI + λ(J-I) form):")
print(XtX)
print(f"r = {XtX[0,0]} (대각), λ = {XtX[0,1]} (비대각)")
# 7 물건의 가상 무게
np.random.seed(2026)
true_w = np.array([0.5, 0.7, 0.3, 0.9, 0.4, 0.6, 0.8])
sigma = 0.1
# Spring balance 측정
y = bib_X @ true_w + np.random.normal(0, sigma, 7)
print(f"\nMeasurements: {y.round(3)}")
# 추정 — 회귀 분석 (한 reference 무게 fix 또는 sum constraint)
# BIB 의 단순 추정: pseudo-inverse 또는 LSQ + mean constraint
# (정확한 BIB 분석은 복잡)
w_hat = np.linalg.lstsq(bib_X, y, rcond=None)[0]
print(f"\nEstimated: {w_hat.round(3)}")
print(f"True: {true_w.round(3)}")
print(f"Errors: {(w_hat - true_w).round(4)}")
print(f"RMSE: {np.sqrt(np.mean((w_hat - true_w)**2)):.4f}")
# Chemical Hadamard 비교 (8 회 측정, 8 물건)
H8 = hadamard(8)
true_w8 = np.append(true_w, 0.5) # 8 번째 무게
y8 = H8 @ true_w8 + np.random.normal(0, sigma, 8)
w_hat8 = (1/8) * H8.T @ y8
print(f"\nHadamard (8 measurements): RMSE = {np.sqrt(np.mean((w_hat8 - true_w8)**2)):.4f}")
# 분산 비교
# Spring: 회귀 분산
residuals_spring = y - bib_X @ w_hat
mse_spring = np.mean(residuals_spring**2)
var_spring = mse_spring * np.diag(np.linalg.pinv(bib_X.T @ bib_X))
print(f"\nVariance per weight (Spring BIB): {var_spring.mean():.5f}")
print(f"Variance per weight (Hadamard): {sigma**2 / 8:.5f}")8 Truncated Spring Balance
BIB 가 존재하지 않는 모수 (\(v = 6\) 같은) 에서 PBIB 또는 truncated weighing.
각 측정에 다른 수의 물건 (block size 가 변동) — pairwise balanced design (PBD).
자세한 내용은 G-MON9-4.
9 응용 사례
9.1 1. 화학 — 미량 시약
여러 시약의 정확한 양을 한 저울로 측정. 한 시약 추가 후 다음 시약 추가 — 누적 측정. 이는 spring 의 자연스러운 적용.
9.2 2. 식품 가공
여러 ingredient 의 정확한 비율 측정. 각 측정에 일부 ingredient 만 — BIB 활용.
9.3 3. 의약 제조
여러 활성 성분의 양 측정. spring balance 가 흔함.
9.4 4. 광도 측정 (천문학)
별의 절대 광도 추정. 한 region 의 광도 측정 (포함된 별 수에 비례) — spring balance.
10 Spring Balance 의 장점
저울이 1 접시만 사용 — 설비 단순: - 물리적 저울이 표준 (양접시 저울이 historical, 현대는 spring 또는 digital). - Calibration 단순. - 측정 시간 짧음.
효율은 chemical 의 절반이지만 측정 비용이 작아 trade-off 가능.
ML 의 가설 평가에서 spring 형태가 흔함 — 한 모델 평가 (한 dataset 에서 한 metric) 이 “포함” 또는 “제외” 의 binary, 음수 측정 없음.
11 가정과 한계
- 0/1 entry 만: 음수 사용 안 함.
- BIB 의 존재: 모든 \((v, k)\) 모수에 BIB 존재 안 함.
- PBIB 대안: BIB 부재 시 PBIB 또는 PBD 활용.
- 효율의 손실: chemical 보다 분산 약 2 배.
12 본 시리즈
G-MON9-0 개관
G-MON9-1 Definition + Estimation
G-MON9-2 One Pan from BIB ← 현재 글
G-MON9-3 Two Pan Weighing
G-MON9-4 PBIB + Efficiency
13 관련 주제
선행 지식
후속 주제
다른 카테고리 연결
14 더 읽을 거리
- Banerjee, K. S. (1975). “Weighing Designs.” Marcel Dekker.
- Raghavarao, D. (1971). “Constructions and Combinatorial Problems in Design of Experiments.” Wiley.
- Hedayat, A., Sloane, N. J. A., Stufken, J. (1999). “Orthogonal Arrays: Theory and Applications.” Springer.