소프트웨어와 생활웹 교과서
이 페이지의 목차
3단원 · 7차시

분석 결과 해석하기

해석상관과 인과근거

코드 예제: Python · 예상 50분

학습 목표

  • 분석 결과를 근거로 사회 현상의 의미를 객관적으로 해석할 수 있다.

관련 성취기준

  • [12소생03-04]

    데이터의 사회적 가치에 대한 이해를 토대로 데이터를 분석하고 의미를 파악한 후, 결과를 윤리적으로 활용한다.

생각 열기 — 미세먼지 경보를 내면 자전거가 늘까

새솔시 회의에서 누군가 말했다. 「분석해 보니 미세먼지와 대여 건수의 상관 계수가 −0.34 입니다. 미세먼지 때문에 자전거를 안 타는 겁니다. 미세먼지 저감 대책을 세우면 대여가 늘 겁니다.」

상관과 인과

  • 상관

    함께 움직인다

    한쪽이 클 때 다른 쪽도 크다(또는 작다). 데이터에서 확인할 수 있다.

  • 인과

    한쪽이 다른 쪽을 일으킨다

    원인을 바꾸면 결과가 바뀐다. 상관만으로는 확인할 수 없다.

  • 숨은 변수

    둘을 함께 움직이게 하는 제3의 것

    아이스크림 판매와 물놀이 사고는 함께 늘지만, 둘 다 «더운 날씨» 때문이다. 이런 것을 숨은 변수(교란 변수)라 한다.

새솔시에서 미세먼지가 높은 날은 주로 늦겨울과 봄, 추운 날이었다. 추운 날에는 미세먼지와 상관없이 자전거를 덜 탄다. 그렇다면 미세먼지와 대여가 함께 움직인 것은 «기온»이라는 숨은 변수 때문일 수 있다. 확인해 보자.

예상해 보기

여름(6~8월) 기록만 골라 미세먼지와 대여 건수의 상관 계수를 다시 계산하면 얼마쯤 될까? 전체는 −0.34 였다. 어림한 값을 적어 보자 (예: -0.5, 0, 0.3).

결과 바로 보기
0.28
Python계절을 맞추면 상관이 달라진다
import pandas as pd

df = pd.read_csv('bike.csv')
print('전체:', round(df['미세먼지'].corr(df['대여건수']), 2))
print('미세먼지와 기온:', round(df['미세먼지'].corr(df['평균기온']), 2))

여름 = df[df['계절'] == '여름']
print('여름만:', round(여름['미세먼지'].corr(여름['대여건수']), 2))
확인된 실행 결과
전체: -0.34
미세먼지와 기온: -0.51
여름만: 0.28

미세먼지는 기온과 꽤 강한 음의 상관(−0.51)이 있다 — 추운 날 미세먼지가 높았다. 그리고 기온이 비슷한 여름끼리만 보면 상관이 오히려 양수(0.28)로 바뀐다. 전체에서 본 −0.34 의 상당 부분은 «추워서 덜 탄 것»이 미세먼지에 덧씌워진 것으로 볼 수 있다.

숫자 하나로 다 말할 수 없을 때

5차시에서 기온과 대여의 상관 계수는 0.71 이었다. 그렇다면 «기온이 높을수록 자전거를 많이 탄다»고 말해도 될까?

Python기온 구간별 평균 대여
import pandas as pd

df = pd.read_csv('bike.csv')
구간 = pd.cut(df['평균기온'], [-10, 0, 10, 20, 25, 30, 40])
print(df.groupby(구간, observed=True)['대여건수'].mean().round())
확인된 실행 결과
평균기온
(-10, 0]     675.0
(0, 10]     1096.0
(10, 20]    2477.0
(20, 25]    2807.0
(25, 30]    2298.0
(30, 40]    1517.0
Name: 대여건수, dtype: float64

pd.cut 은 기온을 구간으로 나눈다. (20, 25] 는 «20보다 크고 25 이하»다. 2025℃ 에서 가장 많이 타고, 30℃ 를 넘으면 영하10℃ 수준으로 줄어든다. «기온이 높을수록»이 아니라 **«선선할 때 가장 많이 탄다»**가 데이터에 맞는 해석이다.

객관적인 해석의 조건

해석을 점검하는 물음
물음나쁜 예좋은 예
근거가 데이터에 있나?「시민들은 자전거를 사랑한다」「1년 동안 하루 평균 1,822건이 빌려졌다」
상관을 인과로 말하지 않았나?「미세먼지 때문에 덜 탄다」「미세먼지가 높은 날 덜 탔지만, 그날들은 추운 날이기도 했다」
숨은 변수를 따져 봤나?전체 상관 계수만 본다계절별로 나누어 다시 본다
데이터의 범위를 넘지 않았나?「모든 도시에서 그렇다」「새솔시 2025년 기록에서는 그렇다」
한계를 밝혔나?한계를 적지 않는다「날씨 말고 행사·공사 같은 일은 데이터에 없다」
순서 맞추기강한 주장에서 데이터에 맞는 주장으로 — 데이터가 뒷받침하는 정도가 낮은 것부터
  1. 1미세먼지만 줄이면 대여가 크게 늘 것이다
  2. 2미세먼지 때문에 자전거를 덜 탄다
  3. 3미세먼지가 높은 날 자전거를 덜 탔다
  4. 4미세먼지가 높은 날 덜 탔지만, 그날들은 추운 날이기도 해 미세먼지의 영향만 따로 말하기는 어렵다

데이터 분석 보고서

교육과정은 문제 상황 → 해결 동기와 목적 → 데이터 수집과 관리 → 분석 방법과 과정 → 결과 해석을 보고서로 쌓아 가라고 한다. 이 단원에서 한 일을 한 편으로 묶어 보자. 새솔시 데이터로 써도 되고, 2차시에 직접 찾은 데이터로 써도 된다.

프로젝트

데이터 분석 보고서

약 45분
활동지

데이터 분석 보고서

앞 차시 활동지(데이터 찾기 · 정제 기록 · 분석의 세 물음 · 그래프 설명)를 다시 열어 보며 쓴다.

스스로 점검
  • 데이터의 출처를 밝혔다
  • 정제 과정을 적었다
  • 결과에 숫자 근거가 있다
  • 해석에서 원인을 단정하지 않았는지 점검했다
  • 한계를 밝혔다

글자 규칙으로 살펴보는 점검표다. 다 켜졌다고 좋은 답이 되는 것은 아니다 — 마지막 판단은 내가 한다.

적은 내용은 이 브라우저에만 저장된다. 다른 컴퓨터로 옮기거나 제출하려면 내려받는다.

확인 문제

개념 확인 문제

보기를 누르면 바로 채점된다. 틀려도 해설을 읽으면 된다.

「아이스크림이 많이 팔린 날 물놀이 사고도 많았다」에서 두 값을 함께 움직이게 한 숨은 변수로 가장 알맞은 것은?12소생03-04

새솔시 데이터에서 미세먼지와 대여의 상관 계수는 전체 −0.34, 여름만 0.28 이었다. 가장 알맞은 해석은?12소생03-04

기온 구간별 평균 대여가 20~25℃ 에서 가장 많고 30℃ 를 넘으면 줄었다. 바른 해석은?12소생03-04

객관적인 해석이 아닌 것은?12소생03-04

이 차시는 C 예제를 제공하지 않는다. 상단에서 다른 언어로 바꾸면 예제를 볼 수 있다.

교과서에서 찾기

이 차시에 대응하는 교과서 위치가 아직 정리되지 않았다. [확인필요]