본문으로 이동
모든 코스
MIT공공 데이터와 사회180분4 모듈
최신 자료2026년 5월 전국 데이터 공개

선거 숫자를 믿기 전에 한 행부터 감사하기

후보별 득표 행, 투표 방식, 비공개 값, 합계의 정의를 확인하며 공공 데이터 대시보드가 틀리는 지점을 찾습니다.

같은 공식 선거 자료로도 합계가 달라질 수 있다면, 어떤 행을 먼저 의심해야 할까요?

프로젝트와 최신성

MIT MEDSL의 2024년 미국 총선 전국 precinct 데이터와 코드북을 사용합니다. 예측이나 정당 비교가 아니라 데이터 정의·누락·이중계산을 감사하는 과정입니다.

2024년 선거 자료지만 전국 precinct 데이터셋 자체는 2026년 5월에 공개·갱신됐습니다. 저장소에 명시적 라이선스 파일이 없으므로 원자료를 재배포하지 않고 링크와 출처를 유지합니다.

먼저 볼 장면

`TOTAL` 행과 투표 방식별 행을 함께 더한 대시보드

숫자는 모두 공식 자료에서 왔지만 같은 표가 두 번 들어가 총득표가 부풀 수 있습니다. 이 코스는 그래프를 그리기 전에 분모와 행의 의미를 확인하는 순서를 익힙니다.

데이터 흐름

개표 기록이 감사 가능한 그래프가 되는 길

1주 선거기관서로 다른 형식으로 결과 공개
2MEDSL열 이름과 후보명을 정리
3CSV + 코드북숫자와 정의를 함께 제공
4학생 감사자분모·중복·결측을 점검
0/4

‘다음 단계’를 눌러 입력이 결과가 되는 길을 따라가세요.

구성요소 대화

합계가 이상할 때 구성요소가 나누는 대화

‘다음 단계’를 눌러 구성요소의 첫 메시지를 열어 보세요.

코드 워크스루

관심 분야의 문제를 정하고, 코드와 데이터를 읽고, AI 실험을 검증한 뒤 결과를 발표합니다.

40분

한 행은 한 사람의 표가 아니다

후보, 정당, 투표 방식, 득표수, 전체 득표수가 한 행에서 어떤 역할을 하는지 읽습니다.

먼저 떠올릴 비유

택배 상자의 송장처럼, 숫자보다 열 이름이 먼저 내용물을 설명합니다.

핵심 판단

`votes`는 후보의 득표수이고 `totalvotes`는 같은 경선 단위의 분모입니다. 둘은 서로 바꿔 쓸 수 없습니다.

직접 해보기

알래스카 행 하나를 골라 후보 득표율을 계산하고, 사용한 분자와 분모 열을 문장으로 씁니다.

남길 증거

열 이름·뜻·사용 여부를 정리한 1쪽 데이터 사전

코드 용어
저장소의 실제 코드이 파일에서 확인
2024-president-state.csvdf53108
"year","state","state_po","state_fips","state_ic","office","candidate","party_detailed","party_simplified","writein","mode","votes","totalvotes","stage","special","unofficial","version"
2024,"ALASKA","AK","02","81","US PRESIDENT","HARRIS, KAMALA D.","DEMOCRAT","DEMOCRAT",FALSE,"TOTAL",140026,338177,"GEN",FALSE,FALSE,2025-11-20
2024,"ALASKA","AK","02","81","US PRESIDENT","KENNEDY, ROBERT F. JR","NON-AFFILIATED","OTHER",FALSE,"TOTAL",5670,338177,"GEN",FALSE,FALSE,2025-11-20
2024,"ALASKA","AK","02","81","US PRESIDENT","OLIVER, CHASE","LIBERTARIAN","LIBERTARIAN",FALSE,"TOTAL",3040,338177,"GEN",FALSE,FALSE,2025-11-20
2024,"ALASKA","AK","02","81","US PRESIDENT","SONSKI, PETER","AMERICAN SOLIDARITY","OTHER",FALSE,"TOTAL",702,338177,"GEN",FALSE,FALSE,2025-11-20
2024,"ALASKA","AK","02","81","US PRESIDENT","STEIN, JILL","NON-AFFILIATED","OTHER",FALSE,"TOTAL",2342,338177,"GEN",FALSE,FALSE,2025-11-20
2024,"ALASKA","AK","02","81","US PRESIDENT","TERRY, RANDALL A.","CONSTITUTION","OTHER",FALSE,"TOTAL",812,338177,"GEN",FALSE,FALSE,2025-11-20
2024,"ALASKA","AK","02","81","US PRESIDENT","TRUMP, DONALD J.","REPUBLICAN","REPUBLICAN",FALSE,"TOTAL",184458,338177,"GEN",FALSE,FALSE,2025-11-20
코드가 하는 일
  1. 1

    첫 줄은 데이터가 아니라 열 이름표입니다. 이후 모든 숫자를 어떻게 읽을지 정합니다.

  2. 2

    각 후보 행의 `votes`는 다르지만 `totalvotes`는 같은 338,177입니다.

  3. 3

    `mode`가 모두 `TOTAL`이므로 이 파일 조각은 세부 투표 방식을 나누지 않습니다.

새 상황에 적용하기

한 후보의 알래스카 득표율을 계산하려고 합니다.

가장 먼저 고를 계산은 무엇인가요?

45분

공식 합계도 두 번 더하면 틀린다

`TOTAL`과 우편·사전·당일 투표 행이 함께 있을 때 한 표가 중복되는 경로를 찾습니다.

먼저 떠올릴 비유

마트 영수증에서 소계와 개별 상품을 다시 합치면 결제액이 두 배가 되는 것과 같습니다.

핵심 판단

MEDSL은 주가 제공한 투표 방식 분류를 보존합니다. 따라서 분석자가 포함 규칙을 정하지 않으면 자동으로 안전한 합계가 나오지 않습니다.

직접 해보기

한 주의 `mode` 고유값을 나열하고 `TOTAL` 사용 규칙을 의사코드 세 줄로 적습니다.

남길 증거

중복 가능 행을 표시하는 데이터 품질 경고 카드

코드 용어
저장소의 실제 코드이 파일에서 확인
README.mddf53108
### Warnings
* In general, users need to exercise real caution when computing descriptive statistics. Please make sure you understand exactly which rows belong in the computation you're performing. Here are two of the most common pitfalls:
   * Sometimes the way that states report data generates fictitious zero-vote rows, where a candidate is recorded as getting no votes in a precinct where they did not actually appear on the ballot. It is important to ensure that these rows do not contaminate, for example, the mean vote share for a candidate.
   * We typically retain exactly the modes that states report. This can lead to double-counting if users do not select the correct modes, for example if modes are split apart *and* a mode value of `TOTAL` exists.
* While we attempt to verify every value of every variable, `magnitude` values in particular may be approximate for local-level offices. Please double-check these values before relying on them. We are working on quality assuring these values.
* `mode` values typically retain the state's original classification. These original data sources may not identify modes in a way that is consistent across jurisdictions, and one jurisdiction may report both `MAIL` and `ABSENTEE`, for example.
* In some small jurisdictions in California, Kansas, Nevada, and New Mexico, vote counts are not published due to privacy concerns. In these cases `votes = "*"`.
코드가 하는 일
  1. 1

    저장소가 스스로 ‘어떤 행을 넣는지 확인하라’고 경고합니다.

  2. 2

    가상의 0표 행은 후보 평균을 왜곡할 수 있습니다.

  3. 3

    `TOTAL`과 세부 방식이 공존하면 한쪽만 골라야 합니다.

  4. 4

    별표는 0이 아니라 개인정보 보호 때문에 공개하지 않은 값입니다.

새 상황에 적용하기

한 카운티에 `TOTAL`, `MAIL`, `ELECTION DAY` 행이 모두 있습니다.

안전한 다음 행동은 무엇인가요?

45분

별표와 0은 전혀 다른 이야기다

비공개, 결측, 0표, 무효표를 구분하고 작은 지역의 개인정보를 보호합니다.

먼저 떠올릴 비유

출석부의 빈칸은 결석일 수도, 아직 확인 전일 수도 있습니다. 빈칸을 모두 0점으로 바꾸면 이야기가 달라집니다.

핵심 판단

`mode`는 주 사이에서 완전히 표준화되지 않았습니다. 같은 단어처럼 보여도 관할 지역의 정의가 다를 수 있습니다.

직접 해보기

`*`, 빈칸, 0을 각각 만났을 때 처리 규칙과 화면 표시 문구를 정합니다.

남길 증거

결측 유형별 처리 결정표와 개인정보 보호 문구

코드 용어
저장소의 실제 코드이 파일에서 확인
codebook.mddf53108
### mode

**Type:** `string`

**Example(s):** `TOTAL`, `ELECTION DAY`, `ABSENTEE`

**Description:** The uppercase voting mode for the results, set to `TOTAL` when disaggregation by mode is not reported. For states that do disaggregate by mode, observed values may include but are not limited to `ABSENTEE`, `EARLY MAIL BALLOT`, `MILITARY`, `UOCAVA`, `AFFIDAVIT`, `ABSENTEE/AFFIDAVIT`, `EARLY VOTE`, `ELECTION DAY`, `EMERGENCY`, `IN-PERSON`, `MAIL-IN`, `PROVISIONAL`. With the exception of `TOTAL`, mode is generally not standardized across states.

------------------------------------------------------------------------

### votes
코드가 하는 일
  1. 1

    `mode`는 글자 형태의 열이고 대문자로 정리됩니다.

  2. 2

    세부 분류가 없을 때만 `TOTAL`이 쓰일 수 있습니다.

  3. 3

    예시 목록은 가능한 값의 전부가 아니며, `TOTAL` 외 이름은 주 사이에서 통일되지 않습니다.

새 상황에 적용하기

작은 선거구의 `votes`가 `*`로 표시됐습니다.

지도에 넣을 때 가장 정직한 처리는 무엇인가요?

50분

정직한 대시보드는 말하지 않는 것도 적는다

필터 규칙, 데이터 버전, 예외값, 인과관계 한계를 결과 화면에 붙입니다.

먼저 떠올릴 비유

박물관 설명표처럼, 작품만큼 출처·연도·복원 여부가 중요합니다.

핵심 판단

지역 득표율은 지역 집단의 결과입니다. 이를 개별 주민의 성향으로 바꾸면 생태학적 오류가 생깁니다.

직접 해보기

대시보드 아래에 ‘이 그래프가 의미하는 것’과 ‘의미하지 않는 것’을 두 문장씩 씁니다.

남길 증거

출처·버전·필터·한계가 함께 보이는 감사 대시보드

코드 용어
저장소의 실제 코드이 파일에서 확인
codebook.mddf53108
**Description:** The candidate name in all uppercase letters in the format `FIRST MIDDLE LAST`. Candidate names are standardized within states according to the following conventions:

1.  Overvotes are coded as `OVERVOTES`.
2.  Undervotes are coded as `UNDERVOTES`.
3.  Write-in candidates' names are uppercased but otherwise preserved, this includes preserving running mates.
4.  When the total write-in votes, rather than individual write-in candidates' totals, are present, they are coded as `WRITE-IN`.
5.  Middle initials do not include a trailing period. Punctuation appears only when it is part of a first, middle, or last name, e.g. `CONAN O'BRIEN` or `ELIZABETH MOUNTBATTEN-WINDSOR`.
6.  Nicknames appear in double quotes following the first name, e.g. `TIMOTHEE "TIM" CHALAMET`.

For `US PRESIDENT` in 2024 the following standardized names are used: `DONALD J TRUMP`, `KAMALA D HARRIS`, `CHASE OLIVER`, `CLAUDIA DE LA CRUZ`, `JILL STEIN`, `RANDALL TERRY`, `PETER SONSKI`, `ROBERT F KENNEDY`, `CORNEL WEST`, `JOSEPH KISHORE`, `RACHELE FRUIT`. Across states we only standardize `candidate` for `US PRESIDENT`.
코드가 하는 일
  1. 1

    후보명 표준화에도 무효표·기권표·기명 투표를 보존하는 규칙이 있습니다.

  2. 2

    문장부호를 없애는 단순 정리로는 실제 이름을 손상시킬 수 있습니다.

  3. 3

    대통령 후보만 주 사이에서 표준화되므로 다른 선거에 같은 가정을 적용하면 안 됩니다.

새 상황에 적용하기

한 지역에서 특정 후보 득표율과 대학 졸업자 비율이 모두 높습니다.

대시보드 결론으로 가장 적절한 문장은 무엇인가요?

이번 코스의 결과물

한 개 주의 선거 데이터 품질 감사 대시보드

제출 전 확인

  • 포함·제외한 `mode`와 그 이유가 적혀 있다.
  • `*`, 빈칸, 0을 서로 다른 값으로 처리했다.
  • 데이터 버전과 원본 링크가 화면에 보인다.
  • 지역 결과를 개인 특성이나 인과관계로 표현하지 않았다.

7분 세미나 질문

우리 대시보드에서 가장 위험한 한 줄의 코드는 무엇이며, 어떤 데이터 규칙이 그 위험을 줄이나요?

다음 코스

관세 그래프의 기준일과 데이터 파이프라인 추적하기

과정 보기