이 페이지의 목차
분석 결과 해석하기
코드 예제: Python · 예상 50분
학습 목표
- 분석 결과를 근거로 사회 현상의 의미를 객관적으로 해석할 수 있다.
관련 성취기준
- [12소생03-04]
데이터의 사회적 가치에 대한 이해를 토대로 데이터를 분석하고 의미를 파악한 후, 결과를 윤리적으로 활용한다.
생각 열기 — 미세먼지 경보를 내면 자전거가 늘까
새솔시 회의에서 누군가 말했다. 「분석해 보니 미세먼지와 대여 건수의 상관 계수가 −0.34 입니다. 미세먼지 때문에 자전거를 안 타는 겁니다. 미세먼지 저감 대책을 세우면 대여가 늘 겁니다.」
상관과 인과
- 상관
함께 움직인다
한쪽이 클 때 다른 쪽도 크다(또는 작다). 데이터에서 확인할 수 있다.
- 인과
한쪽이 다른 쪽을 일으킨다
원인을 바꾸면 결과가 바뀐다. 상관만으로는 확인할 수 없다.
- 숨은 변수
둘을 함께 움직이게 하는 제3의 것
아이스크림 판매와 물놀이 사고는 함께 늘지만, 둘 다 «더운 날씨» 때문이다. 이런 것을 숨은 변수(교란 변수)라 한다.
새솔시에서 미세먼지가 높은 날은 주로 늦겨울과 봄, 추운 날이었다. 추운 날에는 미세먼지와 상관없이 자전거를 덜 탄다. 그렇다면 미세먼지와 대여가 함께 움직인 것은 «기온»이라는 숨은 변수 때문일 수 있다. 확인해 보자.
여름(6~8월) 기록만 골라 미세먼지와 대여 건수의 상관 계수를 다시 계산하면 얼마쯤 될까? 전체는 −0.34 였다. 어림한 값을 적어 보자 (예: -0.5, 0, 0.3).
힌트 — 여름에는 기온이 늘 높다. 기온의 영향을 비슷하게 맞추면 미세먼지만의 모습이 드러난다
0.28
결과 바로 보기
0.28
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 이었다. 그렇다면 «기온이 높을수록 자전거를 많이 탄다»고 말해도 될까?
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미세먼지만 줄이면 대여가 크게 늘 것이다
- 2미세먼지 때문에 자전거를 덜 탄다
- 3미세먼지가 높은 날 자전거를 덜 탔다
- 4미세먼지가 높은 날 덜 탔지만, 그날들은 추운 날이기도 해 미세먼지의 영향만 따로 말하기는 어렵다
데이터에서 확인된 것은 «함께 움직였다»까지다. 원인이라고 말하려면 숨은 변수를 걸러 낸 근거가 더 있어야 하고, 앞날을 예측하려면 그보다 더 많은 근거가 필요하다.
데이터 분석 보고서
교육과정은 문제 상황 → 해결 동기와 목적 → 데이터 수집과 관리 → 분석 방법과 과정 → 결과 해석을 보고서로 쌓아 가라고 한다. 이 단원에서 한 일을 한 편으로 묶어 보자. 새솔시 데이터로 써도 되고, 2차시에 직접 찾은 데이터로 써도 된다.
데이터 분석 보고서
약 45분데이터 분석 보고서
앞 차시 활동지(데이터 찾기 · 정제 기록 · 분석의 세 물음 · 그래프 설명)를 다시 열어 보며 쓴다.
- 데이터의 출처를 밝혔다
- 정제 과정을 적었다
- 결과에 숫자 근거가 있다
- 해석에서 원인을 단정하지 않았는지 점검했다
- 한계를 밝혔다
글자 규칙으로 살펴보는 점검표다. 다 켜졌다고 좋은 답이 되는 것은 아니다 — 마지막 판단은 내가 한다.
적은 내용은 이 브라우저에만 저장된다. 다른 컴퓨터로 옮기거나 제출하려면 내려받는다.
확인 문제
개념 확인 문제
보기를 누르면 바로 채점된다. 틀려도 해설을 읽으면 된다.
「아이스크림이 많이 팔린 날 물놀이 사고도 많았다」에서 두 값을 함께 움직이게 한 숨은 변수로 가장 알맞은 것은?12소생03-04
새솔시 데이터에서 미세먼지와 대여의 상관 계수는 전체 −0.34, 여름만 0.28 이었다. 가장 알맞은 해석은?12소생03-04
기온 구간별 평균 대여가 20~25℃ 에서 가장 많고 30℃ 를 넘으면 줄었다. 바른 해석은?12소생03-04
객관적인 해석이 아닌 것은?12소생03-04
교과서에서 찾기
이 차시에 대응하는 교과서 위치가 아직 정리되지 않았다. [확인필요]