P3-5.1 원시 로그를 비교 가능한 표로 어떻게 바꾸는가¶
Section ID:
P3-5.1Version:v2026.09.19
동작 1회를 샘플(sample)로 정했다면, 같은 기록을 질문에 맞게 표현할 수 있습니다. 동작 안의 세부 변화는 원시 기록에서, 동작끼리의 구간 평균 차이는 요약 표에서, 여러 동작의 최근 상태는 집계 표에서 읽습니다. 요약 표는 비교를 돕는 표현 중 하나이며, 원시 시계열을 직접 비교하거나 모델 입력으로 쓰는 방법도 가능합니다.
구간이 이미 배정된 36개 관측에서 시작하기¶
가상 유량 CSV는 A~F 여섯 동작의 관측 36개를 담습니다. flow는 L/min 단위 유량입니다. 각 동작에는 early, mid, late가 두 관측씩 있고, A·B·C는 baseline, D·E·F는 recent로 배정되어 있습니다.
이 파일은 동작 ID·진행 구간·비교 묶음의 배정이 이미 끝난 입력입니다. 여기서는 그 배정을 사용해 평균을 만들며 새 구간 경계를 계산하지 않습니다. 진행 구간의 기준은 P3-5.4에서 다룹니다. CSV에는 시각이나 진행도 원값이 없으므로, 이 파일만으로 구간 배정이 적절했는지 또는 동작 시간이 얼마인지 검증할 수는 없습니다.
A의 여섯 관측을 먼저 읽어 보겠습니다. (event_id, progress_bin)은 여러 관측을 모으는 기준이며, 같은 조합이 두 번 나오므로 개별 관측의 고유 식별자는 아닙니다.
| event_id | window | progress_bin | flow |
|---|---|---|---|
| A | baseline | early | 0.70 |
| A | baseline | early | 0.90 |
| A | baseline | mid | 2.00 |
| A | baseline | mid | 2.10 |
| A | baseline | late | 1.70 |
| A | baseline | late | 1.80 |
같은 동작·같은 구간의 관측을 먼저 평균한다¶
A의 초반 평균은 (0.70 + 0.90)/2 = 0.80 L/min입니다. 중반은 (2.00 + 2.10)/2 = 2.05, 후반은 (1.70 + 1.80)/2 = 1.75입니다. 이 세 값은 A의 서로 다른 구간을 설명하며, A 전체 평균 세 개를 뜻하지 않습니다.
다른 동작에도 같은 계산을 적용하면 다음과 같습니다. 한 행은 동작 1회이고 event_id로 원래 관측 묶음을 찾습니다. 각 평균의 분모는 해당 동작·구간에 있는 관측 2개입니다.
| event_id | window | early_flow_mean | mid_flow_mean | late_flow_mean |
|---|---|---|---|---|
| A | baseline | 0.80 | 2.05 | 1.75 |
| B | baseline | 0.80 | 2.15 | 1.65 |
| C | baseline | 0.80 | 2.00 | 1.85 |
| D | recent | 0.95 | 2.45 | 1.85 |
| E | recent | 1.05 | 2.65 | 1.95 |
| F | recent | 1.00 | 2.55 | 1.75 |
이 표는 예를 들어 A와 D의 중반 평균을 바로 비교하게 합니다. 그러나 평균이 같다고 구간 안의 변화 모양까지 같지는 않습니다. A의 초반 0.70·0.90과 B의 초반 0.80·0.80은 둘 다 평균 0.80이지만 관측값은 다릅니다. 변화 순서나 순간적인 봉우리를 보려면 원시 기록이 필요합니다.
동작 평균을 다시 모으면 비교 묶음의 평균이 된다¶
이번에는 같은 window에 속한 동작의 같은 열을 모읍니다. 기준선 초반 평균은 (A의 0.80 + B의 0.80 + C의 0.80)/3 = 0.80입니다. 최근 초반 평균은 (D의 0.95 + E의 1.05 + F의 1.00)/3 = 1.00입니다. 앞 계산의 분모 2는 관측 수, 이번 분모 3은 동작 수이며 동작마다 같은 비중을 줍니다.
| window | member_events | event_count | early_flow_mean | mid_flow_mean | late_flow_mean |
|---|---|---|---|---|---|
| baseline | A, B, C | 3 | 0.80 | 2.07 | 1.75 |
| recent | D, E, F | 3 | 1.00 | 2.55 | 1.85 |
이 표의 평균 열은 앞 표와 이름이 같아도 한 동작이 아니라 세 동작을 설명합니다. 별도 파일로 넘길 때도 한 행의 뜻과 계산 규칙을 함께 남겨야 합니다. 기준선 중반은 (2.05 + 2.15 + 2.00)/3 = 2.0666…이며 표에만 2.07로 반올림했습니다.
초반의 최근−기준선 차이는 1.00−0.80 = +0.20 L/min입니다. 이는 이 여섯 가상 동작에서 관측한 평균 차이이며, 곧바로 고장이나 장기적 변화의 증거는 아닙니다. 각 묶음은 실제로 세 동작이므로 “최근 20건”이라고 부를 수도 없습니다.
flowchart TD
A["36개 관측<br/>구간 배정 완료"] --> B["6개 동작 요약<br/>동작 안의 구간별 평균"]
B --> C["2개 묶음 집계<br/>동작마다 같은 비중"]
36관측→6동작 행→2집계 행의 변환에서 동작 샘플의 정의를 다시 바꾼 것은 아닙니다. 같은 여섯 동작을 다른 수준으로 요약했습니다. 집계값이 이상하면 window → event_id → progress_bin의 관측 순서로 돌아가 어떤 값이 바뀌었는지 찾습니다.
값 하나를 바꾸어 두 단계의 영향을 따라가기¶
원본 CSV는 그대로 두고, A의 초반 관측 0.90을 1.50으로 바꾼 경우를 계산해 보세요. A의 초반 평균, 기준선 초반 평균, 최근−기준선 차이는 각각 얼마가 될까요?
A는 (0.70 + 1.50)/2 = 1.10, 기준선은 (1.10 + 0.80 + 0.80)/3 = 0.90, 차이는 1.00−0.90 = +0.10 L/min입니다. 원시 값의 증가 0.60이 동작 평균에서는 0.30, 세 동작 집계에서는 0.10으로 반영됩니다. 최근 묶음과 중반·후반 값은 바뀌지 않습니다. 이렇게 바뀐 열을 따라가면 집계값의 근거를 특정 관측까지 좁힐 수 있습니다.
측정점에 같은 비중을 줄지, 동작에 줄지 선택하기¶
앞 사례는 모든 동작·구간에 관측이 두 개씩이므로 관측을 직접 모아 평균해도 같은 결과가 나옵니다. 관측 수가 다르면 달라집니다. 별도의 가상 사례로 X에는 값 10인 측정점 2개, Y에는 값 20인 측정점 6개가 있다고 하겠습니다.
| 질문 | 계산 | 결과 | 동작이 받는 비중 |
|---|---|---|---|
| 두 동작의 평균 수준을 동작당 똑같이 비교한다 | (10+20)/2 | 15 | X:Y = 1:1 |
| 수집된 여덟 측정점의 평균을 구한다 | (2×10+6×20)/8 | 17.5 | X:Y = 2:6 |
두 번째 계산에서 Y는 X보다 세 배의 비중을 받습니다. 이것이 가중치의 뜻입니다. 측정점 평균이 틀리고 동작 평균이 항상 맞다는 뜻이 아니라, 질문에 따라 분모와 비중을 선택해야 한다는 뜻입니다. 측정 간격이 불규칙하면 측정점 평균을 시간 평균으로 곧바로 읽을 수도 없습니다.
X에 값 10인 관측을 네 개 더 수집했다면 두 평균은 어떻게 될까요? 동작 평균은 여전히 15이고, 측정점 평균도 (6×10+6×20)/12 = 15가 됩니다. 동작별 수준은 그대로인데 측정점 수의 비중이 바뀐 결과입니다. 원래 17.5에서 15로 낮아졌다고 Y의 상태가 개선되었다고 해석하면 안 됩니다.
체크리스트¶
- early/mid/late가 이번 집계에서 새로 생성된 값이 아니라 입력에 배정된 구간임을 설명하는가?
- A의 초반 두 관측에서 동작 평균과 기준선 평균까지 추적할 수 있는가?
- 36관측·6동작·2집계가 각각 무엇을 세는지 구별하는가?
- A의 관측 하나를 바꿨을 때 영향을 받는 열과 묶음을 계산했는가?
- 15와 17.5 중 질문에 맞는 평균을 고르고 각 동작의 비중을 설명할 수 있는가?
- 요약이 잃는 정보와 원시 기록으로 돌아갈 경로를 남겼는가?
출처와 참고 자료¶
- W3C, PROV-Overview. 처리 과정과 파생 관계를 기록하는 일반 근거입니다. 이 절의 CSV, 구간 배정, 계산과 연습은 자체 가상 사례이며 W3C가 정한 표 변환 절차는 아닙니다. / 확인일: 2026-09-19