그래프와 원본 대조
80분 안팎
학습 목표
잘린 축·기간 혼합·누락된 표본 수가 있는 그래프를 점검하고 정정 이유를 기록합니다.
개념
보기 좋은 그림보다 대조 가능한 그림을 검토합니다
보고서 검토자는 그림을 보고 빠르게 판단합니다. 축이 잘렸거나 서로 다른 기간을 같은 비교로 묶으면 계산 자체가 정확해도 판단을 오도할 수 있습니다. 이번 목표는 그래프·원본·지표 정의 사이에서 틀어진 지점을 찾고 정정 사유를 기록하는 것입니다. 검사 도구가 파일을 생성했다고 해서 독자가 올바른 의미로 읽는다고 보장되지는 않습니다.
검토 대상은 A dry80대·rain100대와 B dry0대·rain120대 그림입니다. 각 그룹은 n=1입니다. 누군가 평균 막대의 y축을79부터 시작해 A의 강수 막대를 매우 길게 보이게 만들었습니다. 수치 차이는20대이지만 막대 길이로 읽는 비율은 왜곡됩니다. 막대 그림은 기준0부터 그려 길이의 의미를 유지하고 숫자와 표본 수를 붙여 정정합니다.
검토 순서를 원본에서 시작합니다
먼저 source와 metrics.json을 열어 자료가 합성인지 실제 수집 자료인지 확인합니다. 이어 기간의 시작과 끝, 시간대, 강수 임계값, 관측 단위와 제외 조건을 확인합니다. 실제 공개 자료의 URL이 들어 있다고 해도 이번 숫자가 그 URL에서 내려받은 값인지는 별도 문제입니다. 프로젝트 표본은 학습용 합성이라는 출처 설명을 유지합니다.
두 번째로 out/clean.csv의 행을 확인해 지역·날짜 키가 유일한지 봅니다. 그림에서 한 지역의 한 날짜가 두 번 나타나면 표본 수와 합계가 함께 늘어날 수 있습니다. 지표 정의에 맞는 행을 고른 뒤 그룹별 n 합이 유효 행 수와 같은지 비교합니다. 이 등식만 맞고 잘못된 행이 서로 교체된 경우도 있으므로 작은 표본에서는 키 목록도 함께 확인합니다.
세 번째로 metrics-out/metrics.csv와 chart-data.csv를 (region, rain_group) 키로 대조합니다. 행의 저장 순서가 같다고 가정하지 않습니다. n과 total은 정확히 일치해야 하고 평균·중앙값은 표시 반올림 때문에 절대오차0.05까지 허용합니다. 3.333…과3.3은 허용되지만3.4는 허용되지 않습니다. 수치가 맞아도 다른 그룹 이름에 붙어 있으면 틀린 그림입니다.
결측과 영점의 표현을 점검합니다
평균0은 관측된 숫자의 평균이고 NA는 평균을 계산할 유효 행이 없다는 뜻입니다. B dry는 n=1이고 평균0.0이므로 막대 높이가0이어도 그룹이 사라지면 안 됩니다. 텍스트 n=1과0.0을 표시해 관측이 있는 영점임을 드러냅니다. 빈 그룹은 n=0·NA로 표시하고 양쪽을 같은 빈 공간으로만 표현하지 않습니다.
결측 처리 정책이 설명되지 않은 그림은 독자가 포함 대상을 알 수 없습니다. 우리 강수 비교는 교통 또는 강수 결측을 제외해 입력6행 중4행을 사용합니다. 원본을 모두 썼다고 적으면 두 행을 숨긴 셈입니다. 제외된 두 행의 통행 특성이 다른 날과 다를 수 있으므로 이 표본의 관찰 범위를 설명하고 일반화의 근거로 과장하지 않습니다.
선 그래프에서는 누락된 날짜가 실제로 건너뛰어진 간격인지0대인지 확인합니다. 범주 축에 남은 날짜만 배치하면 간격이 균등해 보일 수 있습니다. 결측 지점을 유지해 선을 끊는 표현과 날짜 눈금을 확인합니다. 연결선은 보간을 한 결과가 아니므로 선이 이어진다고 모든 중간 시점의 값을 관측했다고 말하지 않습니다.
기간 혼합과 단위 변경을 찾습니다
A는 사흘, B는 한 달 자료인데 같은 기간의 평균이라고 적으면 계절과 요일 구성 차이를 지역 차이로 읽게 됩니다. 기간이 다를 수밖에 없다면 각 패널에 해당 기간을 표시하고 직접 비교의 한계를 적습니다. 이번 제출에서는 지표 정의의 동일한 사흘을 사용하고 기간 밖 행이 얼마나 제외되었는지 감사 기록과 대조합니다.
원본은 대수인데 세로축이 천 대로 표시되었다면 데이터도1000으로 나누었는지 점검합니다. 축 이름만 바꾸는 것은 변환이 아닙니다. 하루 합계와 관측당 평균도 같은 대 단위를 공유하지만 분모가 달라 직접 비교할 수 없습니다. 단위 표기를 vehicles/region-day처럼 분모까지 쓰고 지표 이름과 분자·분모를 함께 읽습니다.
여러 그림을 나란히 비교할 때 각 축의 최대값과 눈금 간격을 확인합니다. 각 지역 그림에 자동 범위를 별도로 설정하면 동일한 높이가 서로 다른 수치를 뜻할 수 있습니다. 공통 범위를 쓰거나 각 축의 범위 차이를 뚜렷이 표시합니다. 색상은 정보의 일부이므로 dry와 rain의 색상 대응이 그림마다 바뀌지 않게 확인합니다.
정정 기록을 남깁니다
정정 메모는 발견 위치, 이전 표현, 근거 파일과 키, 수정 표현, 판단 영향의 다섯 항목을 담습니다. 예를 들어 “means.svg A rain, y축79 시작, chart-data.csv A/rain100.0·A/dry80.0 확인, y축0 시작으로 재생성, 막대 길이에 의한 차이 과장 제거”라고 적습니다. 문제가 있었다는 말만 적으면 후속 담당자가 어떤 그림을 다시 만들어야 할지 알 수 없습니다.
RECONCILE: mean 오류가 나오면 허용 오차를 늘려 통과시키기보다 값의 계산·반올림 시점·그룹 키를 확인합니다. META: sample_size 오류는 값 누락이나 타입·음수 여부를 살펴봅니다. 빈 문자열을0으로 채우는 방식은 출처나 단위 누락을 복구하지 못합니다. 검사는 오류 위치를 좁혀 주고 최종 정정은 지표 계약에 맞춰 수행합니다.
문서 실습의 제출물은 정정 전후 표와 세 가지 오류의 검토 메모입니다. 잘린 막대 축, 기간 혼합, 누락된 n을 각각 한 사례로 적고 무엇을 확인해야 하는지 씁니다. 자동 검사는 메타데이터 필드와 값 대조를 담당하지만 원본의 대표성이나 결론의 인과 타당성을 판정하지 못합니다. 사람의 판단 항목과 실행 가능한 검사 항목을 구분해 인계합니다.
검토 결과를 반영한 뒤에도 원래 입력 파일은 보존합니다. 그림의 버전만 바꿨다면 계산값은 그대로여야 하고 포함 조건을 바꿨다면 유효 행 수와 지표를 다시 대조합니다. 정정 기록에 두 변경의 차이를 적으면 다음 담당자가 표현 수정과 분석 정의 변경을 구별할 수 있습니다.
따라하기
표시 반올림 오차 확인
코드를 독립적으로 실행하고 결과를 확인합니다.
actual=10/3
for shown in [3.3,3.4]: print(shown, abs(actual-shown) <= 0.050000001)실행 결과
3.3 True 3.4 False
그룹 키로 수치 대조
코드를 독립적으로 실행하고 결과를 확인합니다.
metrics={('A','dry'):80.0,('A','rain'):100.0}
chart=[('A','rain',100.0),('A','dry',80.0)]
print(all(metrics[(r,g)]==v for r,g,v in chart))
print(sorted(metrics))실행 결과
True
[('A', 'dry'), ('A', 'rain')]
정정 메모의 필수 항목
코드를 독립적으로 실행하고 결과를 확인합니다.
memo={'location':'A rain bar','before':'y starts at 79','evidence':'A/rain=100.0; A/dry=80.0','after':'y starts at 0','impact':'remove length exaggeration'}
for k,v in memo.items(): print(k+': '+v)실행 결과
location: A rain bar before: y starts at 79 evidence: A/rain=100.0; A/dry=80.0 after: y starts at 0 impact: remove length exaggeration
확인 문제
실습
잘린 막대 축·기간 혼합·누락된 n의 세 오류를 검토합니다. 각 오류에 발견 위치·기존 표현·파일과 키 근거·수정 표현·판단 영향을 적은 정정 메모를 제출합니다. 0대와 n=0도 구분해 설명합니다.
더 읽기
면접 질문
- 공개 데이터로 만든 그래프의 신뢰성을 확인하는 방법을 설명해 주시면 됩니다.