단원 홈

Ⅳ. 데이터 과학 프로젝트5차시

기온 1℃에
발전소 몇 기?

냉방도일·난방도일로 V자를 두 직선으로 푼다

한여름 뉴스는 기온 1℃에 전력 수요가 얼마 늘어난다고 한 숫자로 말합니다. 그 숫자를 우리 손으로 내 보면, 답은 한 숫자가 아니라 범위였습니다. V자에 직선을 맞추는 전처리(도일)를 짓고, 계수를 사람의 말로 옮기고, 모델이 모르는 날까지 함께 적는 것이 오늘의 일입니다.

  • [12데과04-03]
  • 50분네 정거장
  • 새 전처리도일(度日)
  • 자료전력·기상 2,922일(2018~2025)
Ⅳ 단원 지도5 / 11차시
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11

학습 목표

  1. 개념에서

    V자 관계를 도일이라는 새 속성으로 두 직선 팔로 펴고, 다중 회귀의 계수를 '다른 칸을 그대로 둔 채'로 읽을 수 있다.

  2. 손으로

    같은 자료에 기준 온도를 바꿔 가며 회귀를 맞추고, 잘 맞는 설정이 여럿일 때 답이 얼마나 흔들리는지 잴 수 있다.

  3. 확인에서

    계수를 사람의 말로 옮길 때 범위 · 조건 · 모델이 모르는 날을 함께 적을 수 있다.

1
여는 장면 · 4분

뉴스 한 줄 — "기온 1℃에 약 150만 kW"

한여름이면 이런 문장이 뉴스에 실립니다. 짧고 또렷해서 그대로 인용되기 좋고, 그래서 회의실에서도 국회에서도 이 한 줄이 돌아다닙니다.

그런데 이 숫자는 어떻게 나왔을까요? 누군가 기온과 전력 수요를 나란히 놓고 직선 하나를 맞췄을 것입니다. 우리에게도 같은 자료가 있습니다 — Ⅳ-3에서 펴고 Ⅳ-4에서 V자를 찾아낸 바로 그 2,922일입니다. 오늘은 그 한 줄을 우리 손으로 다시 만들어 보고, 그 과정에서 무엇이 접혀 들어갔는지를 봅니다.

경제 · 가상 기사

폭염에 전력 수요 급증 — 기온 1℃ 오를 때마다 약 150만 kW 씩 늘어

전력 당국 자료 인용 · 이 기사는 수업을 위해 지어낸 것입니다

Ⅳ-4 에서 가져옴기온과 하루 평균 수요는 직선이 아니라 V자였습니다. 추우면 난방으로 수요가 오르고, 더우면 냉방으로 다시 오릅니다. 가장 낮은 자리는 15~18℃ 언저리였지요. 오늘은 그 V자에 어떻게 선을 맞출지를 정합니다.

표 1뉴스 한 줄이 접어 둔 칸 넷같은 자료라도 이 넷이 다르면 다른 숫자가 나온다
접힌 칸기사가 말한 것우리가 채워야 하는 것
무엇의 1℃인가 말하지 않음 하루 평균인가, 가장 바쁜 시각(하루 최대)인가
어느 기온대에서 말하지 않음 더운 쪽인가 추운 쪽인가 — 추운 쪽에서는 1℃가 오르면 오히려 줄어든다
언제·어디의 이야기인가 말하지 않음 2018~2025년 · 전국 · 하루 단위
다른 조건은 말하지 않음 요일 · 쉬는 날 · 해마다 느는 몫을 그대로 둔 채인가

오늘 만드는 답은 이 넷을 모두 적은 답입니다. 그러고도 한 숫자가 아니라 범위가 됩니다. 자료: 전력거래소 시간별 전국 전력수요량 · 기상청 종관기상관측(ASOS) 다섯 지점 일자료 2018~2025(원장이 하루 단위로 이었다)

먼저 예측

기온 한 열만으로 하루 평균 수요에 직선을 맞추면, 기울기는 +일까 −일까요? 그리고 그 직선은 얼마나 잘 맞을까요(R²는 클까 작을까)? 아래 빈 축에 여러분이 생각하는 점 구름과 직선을 공책에 옮겨 그린 뒤, 한 문장으로 적어 두세요. 3정거장 미션 ①에서 실제 숫자와 맞대어 봅니다.

기온 하나로
−12℃1033℃수요 ↑
내가 맞출 직선
−12℃1033℃수요 ↑
체크포인트 1

뉴스 한 줄이 접어 둔 칸 넷을 말할 수 있고, 기온 하나로 맞춘 직선의 기울기를 예측해 적어 두었다.

다음 정거장 · 개념 6분 →
2
개념 · 6분

V자를 두 직선으로 펴고, 그 기울기를 말로 옮긴다

2-1도일 — 기준에서 벗어난 만큼만 센다

도일(度日, degree day)은 기준 기온에서 벗어난 만큼을 재는 새 속성입니다. 기준을 b라 할 때 이렇게 정의합니다.

정의냉방도일 = max(0, 기온 − b) · 난방도일 = max(0, b − 기온) — 기준보다 더운 만큼, 기준보다 추운 만큼. 둘 다 음수가 되지 않습니다(벗어나지 않은 쪽은 0).

기준을 18℃로 두면 29℃인 날은 냉방도일 11 · 난방도일 0, −3℃인 날은 냉방도일 0 · 난방도일 21, 꼭 18℃인 날은 둘 다 0입니다. 기온이라는 한 줄이 도일이라는 두 줄이 되고, 꺾여 있던 V자가 두 개의 곧은 팔로 펴집니다. 직선을 맞출 수 있는 모양이 된 것이지요.

왜 굳이 이렇게 할까요? 우리 자료에서 기온 18℃ 아래는 1,678일, 18℃ 이상은 1,244일입니다. 두 무리는 수요가 움직이는 방향이 반대입니다. 한 직선으로 둘을 한꺼번에 설명하려 들면 어느 쪽도 맞지 않는 선이 나옵니다 — 그것이 다음 판이 보여 주는 반례입니다.

그림 1한 줄이 두 줄이 된다왼쪽: 기온 그대로 · 오른쪽: 기준 18℃에서 접은 뒤
① 기온 한 줄 — 2,922일3℃ 칸 · 세로는 날 수0100200300−12−6061218243036℃기준 18℃난방도일 쪽 · 1,678일냉방도일 쪽 · 1,244일 ② 기준 18℃ 에서 접으면 — 두 줄가로: 도일 · 세로: 날 수난방도일 — 기준보다 추운 만큼1,678일0612182430냉방도일 — 기준보다 더운 만큼1,234일0612 ① 기온 한 줄 — 2,922일3℃ 칸 · 세로는 날 수0100200300−12−6061218243036℃기준 18℃난방도일 쪽 · 1,678일냉방도일 쪽 · 1,244일 ② 기준 18℃ 에서 접으면 — 두 줄가로: 도일 · 세로: 날 수난방도일 — 기준보다 추운 만큼1,678일0612182430냉방도일 — 기준보다 더운 만큼1,234일0612

두 줄은 같은 자로 그렸습니다 — 난방 쪽 팔이 30도일까지 뻗는 동안 냉방 쪽 팔은 14도일에서 끝납니다. 기온이 딱 18.0℃인 10일만 두 줄 모두 0입니다 — 그래서 왼쪽에서 18℃ 위 칸에 든 1,244일 가운데 냉방도일이 0보다 큰 날은 1,234일입니다. 자료: 전력·기상 2,922일(2018~2025) — 칸 인원은 원장이 브라우저에서 센 값

2-2한 직선으로 누르면 두 팔을 모두 틀리게 말한다

기온 한 열로 직선을 맞추면 기울기는 −83.8MW/℃, R²는 0.01이 나옵니다. '기온이 1℃ 오르면 수요가 84MW 줄어든다'는 말이 되는데, 이건 두 팔 어느 쪽도 아닌 이야기입니다.

왜 −일까요? 추운 쪽 팔이 걸치는 폭이 훨씬 넓기 때문입니다. 기온은 −11.4℃부터 32.0℃까지 있는데, 18℃ 아래로는 29.4℃만큼 내려가고 위로는 14.0℃만큼 올라갑니다. 난방 쪽 팔의 계수(+800)가 냉방 쪽(+1,454)보다 작아도, 걸치는 폭이 두 배라 추운 쪽 끝에서 18℃까지 내려오는 몫 23,514MW가 18℃에서 가장 더운 날까지 올라가는 몫 20,359MW보다 큽니다. 전체로 보면 내려가는 쪽이 이깁니다.

규칙R²가 작다고 '관계가 없다'가 아닙니다. 직선이 맞는 모양이 아니다일 수 있습니다 — 도구는 그 둘을 구별해 주지 않습니다.

2-3계수 읽기 — '다른 칸을 그대로 둔 채'

두 팔로 펴면 R²가 0.48까지 오릅니다. 그런데 수요를 움직이는 것은 기온만이 아닙니다. 토요일인지, 쉬는 날인지, 명절인지, 어느 해인지 — Ⅳ-4에서 찾아 둔 단서들을 열로 함께 넣으면 R²가 0.849가 되고, 냉방도일 계수는 +1,478에서 +1,454로 조금 내려앉습니다. 넣기 전의 계수 안에 여름 휴가철·쉬는 날의 몫이 섞여 있었던 것이지요.

여러 열을 함께 넣은 회귀에서 계수 하나는 이렇게 읽습니다 — “다른 칸을 그대로 둔 채 이 칸이 1 늘면 ○○만큼 변한다.” '토요일 −6,628'은 같은 기온·같은 해·쉬는 날 여부가 같을 때 토요일이면 약 6,600MW 낮다는 뜻입니다.

단, 계수는 원인이 아닙니다. '연도 +181'은 시간이 수요를 늘린다는 뜻이 아니라 인구·산업·전기화처럼 해마다 조금씩 느는 여러 몫을 한 칸에 모아 놓은 것입니다. 이름을 붙일 때 이 차이를 지켜야 합니다.

기온 한 열 vs 두 팔 · R²
0.01직선 하나
→
0.48두 팔(도일)
직선 하나0.01두 팔0.48

전처리 하나로 설명하는 몫이 0.48이 되었다.

두 팔 vs 여섯 열 · R²
0.48두 팔
→
0.849+달력 넷
두 팔0.48여섯 열0.849

흔들림의 큰 몫이 달력에서 온다.

기준 17℃와 19℃ · 냉방도일 1의 답
+1,285기준 17℃ · R² 0.8442
vs
+1,636기준 19℃ · R² 0.8465
기준 17℃+1,285기준 19℃+1,636

R²는 거의 같은데 답은 1.27배 벌어진다.

기준 17℃ 벽돌 → 20℃ 벽돌로 갈아 끼우면
+2.2%탑 꼭대기(예측)
인데
+43.1%한 칸(1℃의 답)
탑 꼭대기+2.2%한 칸+43.1%

예측은 그대로인데 해석만 크게 바뀐다.

자료: 위 네 쌍의 숫자는 모두 코드 ① · ② · ③ · ④가 찍는 값이다(기준 벽돌 쪽은 2024-08-20 의 탑).

2-4전처리 선택이 답을 흔든다 — 그래서 보고서에는 범위를 쓴다

기준 온도 b는 데이터가 정해 준 값이 아닙니다. 사람이 고른 값입니다. 14℃부터 23℃까지 바꿔 가며 같은 회귀를 맞추면 R²가 가장 큰 곳은 18℃(0.8487)이고, 거기서 0.01 안쪽인 기준은 17 · 18 · 19℃ 셋입니다. 그런데 그 셋에서 나오는 '1℃의 답'은 +1,285 ~ +1,636MW로 1.27배나 벌어집니다.

더 이상한 것은, 기준을 바꿔도 예측값 자체는 거의 그대로라는 점입니다. 한여름 평일 2024년 8월 20일(기온 29.4℃)의 예측은 기준 17℃에서 74,882MW, 20℃에서 76,548MW — 2.2% 차이뿐인데 '1℃의 답'은 +1,285에서 +1,839로 1.43배가 됩니다. 높이는 데이터가 붙잡고 있고, 칸의 크기는 내가 고른 기준이 정합니다.

표 2기준 벽돌을 갈아 끼우면 — 2024년 8월 20일의 탑같은 자료·같은 여섯 열 · 기준 온도만 바꿨다
기준R²칸 수(냉방도일)한 칸 = 1℃의 답탑 꼭대기(예측)
16℃0.835013.4+1,13674,299
17℃0.844212.4+1,28574,882
18℃0.848711.4+1,45475,471
19℃0.846510.4+1,63676,027
20℃0.83689.4+1,83976,548

청록으로 칠한 셋이 가장 높은 R²에서 0.01 안쪽입니다(16℃는 0.0136, 20℃는 0.0119 뒤집니다). 꼭대기는 74,882 → 76,548로 +2.2%뿐인데 한 칸은 +1,285 → +1,839로 1.43배가 됩니다. 자료: 코드 ④의 [4] 표와 같은 값 · 탑 꼭대기는 시뮬레이터 「계수 벽돌 탑」이 그 자리에서 다시 셈한 값(원장 실측)

한 숫자를 보고서로 옮기는 네 칸

  1. 단위무엇의 1℃인가 — 하루 '평균'인가 가장 바쁜 시각인가
  2. 범위잘 맞는 설정이 여럿이면 답도 여럿 — +1,285 ~ +1,636MW
  3. 조건기간 · 지역 · 기준 온도 · 다른 칸을 그대로 둔 채
  4. 모른다모델이 크게 빗나간 날은 무엇이었나

이 네 칸은 오늘로 끝나지 않습니다. Ⅳ-7의 설계와 Ⅳ-11의 보도자료 한 줄까지 같은 네 칸을 들고 갑니다. 한 숫자를 내놓을 때마다 네 칸이 채워졌는지 스스로 물어보세요.

체크포인트 2

도일이 무엇인지 말할 수 있고, 계수를 '다른 칸을 그대로 둔 채'로 읽을 수 있고, 기준 온도가 답을 흔든다는 것을 안다. 이제 직접 맞춰 본다.

다음 정거장 · 손으로 30분 →
3
손으로 · 30분

직선 하나에서 여섯 열까지, 그리고 모델이 모르는 날까지

오늘의 장비

LinearRegression — 이번엔 열이 여섯 개

Ⅲ-3에서는 열 하나짜리 회귀를 공식(기울기 = 공분산 ÷ 분산)으로도 풀어 보았습니다. 오늘은 열이 여섯입니다 — 공식은 손에 닿지 않고, 그 최소제곱을 도구가 한 줄로 대신합니다. 그래서 오늘은 도구가 대신해 주는 것과 알려 주지 않는 것을 함께 적습니다.

부르는 모양

선 = LinearRegression().fit(표[열], y)

선.coef_        # 열마다 계수 하나
선.intercept_   # 절편
선.score(표[열], y)   # R²

오늘 쓰는 것 넷

fit
여러 열의 최소제곱을 한 줄로 푼다
coef_
열 차례대로 계수 — zip(열, 선.coef_)
predict
그 계수로 날마다 예측 — 잔차는 실제 − 예측
clip(lower=0)
음수를 0으로 — 도일을 만드는 한 손

공식과 다른 셋 — 도구가 알려 주지 않는 것

  1. 모양이 맞는지R² 0.01인 V자에도 아무 경고 없이 직선을 맞춘다
  2. 계수가 얼마나 흔들리는지표준오차·신뢰구간을 내지 않는다(statsmodels는 함께 낸다)
  3. 전처리 선택기준 온도는 도구 밖에서 사람이 정한다 — 그 손이 답을 +1,285 ~ +1,636으로 흔든다

대가 — 한 줄로 여섯 열을 푸는 대신, 맞는지 틀리는지는 도구가 말해 주지 않습니다.

1

직선 하나 — 공식으로 한 번, 도구로 한 번

2분

여는 장면에 적어 둔 내 예측입니다. 기울기의 부호와 R²의 크기가 맞을까요?

기본 코드 ①은 채워져 있습니다. 그대로 ▶ 실행해 공식으로 낸 두 숫자와 LinearRegression이 낸 두 숫자가 같은지 대조하세요.

틀린 길 이 −83.8을 '기온 1℃의 효과'라고 읽으면 틀립니다. 도구는 R²가 0.01이어도 경고 한 줄 없이 선을 그어 줍니다 — 맞는 모양인지는 사람이 봐야 합니다.

탐구 공식(x.cov(y) / x.var())은 열이 하나일 때만 손에 닿습니다. 열이 여섯이면 무엇이 달라져서 손에 닿지 않게 될까요? 미션 ③의 코드를 보기 전에 한 줄로 짐작해 보세요.

기울기가 −로 나온 것은 기온과 수요가 라는 뜻이 아니라, 때문이다. 이 직선이 말해 주지 않는 것은 이다.

확인 문제 1에 적어 제출 →
2

두 팔 — 기준에서 벗어난 만큼(도일)으로 편다

5분

먼저 손으로 셈해 공책에 적습니다(기준 18℃). 기온이 −3℃ · 18℃ · 29℃인 날의 냉방도일과 난방도일은 각각 얼마일까요? 그리고 두 팔로 맞춘 직선의 R²는 [1]의 0.01보다 얼마나 클까요?

기본 빈칸 ①에 냉방도일을 만드는 식을 채우고 ▶ 실행하세요. '기준보다 더운 만큼, 아니면 0' — 바로 아랫줄의 난방도일 식이 힌트입니다. 채우지 않고 돌리면 부품이 빈칸 자리를 알려 줍니다.

도전 도일(표, 18) 을 도일(표, 20) 으로 바꿔 보세요. 냉방 기울기가 1,478 → 1,884로 커지고 난방은 805 → 678로 줄지만 R²는 0.48 → 0.47로 오히려 조금 나빠집니다. 기준을 옮기면 답이 따라 움직입니다. (첫 줄의 안내 글과 손셈 셋은 18℃로 적혀 있으니, 바뀌는 것은 마지막 줄의 계수입니다.)

탐구 그림에서 두 팔이 가장 크게 빗나가는 기온대는 어디인가요? 그 자리를 메우려면 무엇이 더 필요할지 한 줄로 적어 보세요 — 미션 ③이 그 답 하나를 꺼냅니다.

도일은 기온이라는 줄을 줄로 바꾼다. 그 덕분에 가 가능해지고, R²는 에서 로 올랐다.

확인 문제 1에 함께 적기 →
3

여섯 열을 함께 — 공식으로는 손이 닿지 않는 최소제곱

5분

요일·공휴일·명절·연도를 함께 넣으면 냉방도일 계수는 커질까요, 작아질까요? 그리고 R²는 0.48에서 어디까지 오를까요? 두 숫자를 먼저 짐작해 두세요.

기본 빈칸 ②에 두 팔 말고 더 넣을 열 넷을 채우세요. 바로 위에서 만든 열 이름들을 따옴표째로 적으면 됩니다.

도전 열에서 "연도" 하나만 빼고 다시 돌려 보세요. R²와 나머지 계수가 얼마나 움직이는지 적어 두면, '한 칸을 더하고 빼는 일'이 다른 칸의 계수를 어떻게 바꾸는지 몸으로 알게 됩니다.

탐구 계수 여섯 가운데 셋(냉방도일 · 토요일 · 연도)을 '다른 칸이 같을 때 …' 꼴의 한 줄로 옮겨 적으세요. 나머지 셋은 확인 문제 2의 표에서 채웁니다.

그리고 2분 공책에 두 줄을 남깁니다 — 오늘 LinearRegression이 대신해 준 것 한 줄과 알려 주지 않은 것 한 줄. 대신해 준 것은 방금 본 그대로예요 — 열이 여섯이라 손에 닿지 않는 최소제곱을 fit 한 줄이 풀었습니다. 알려 주지 않은 것은 셋 가운데 하나를 고르세요 — [1]의 R² 0.01인 직선에도 경고 한 줄이 없었다 · 계수가 얼마나 흔들리는지 내지 않는다 · 기준 온도는 사람이 정했다. 이 두 줄이 확인 문제 6의 뼈대가 됩니다.

'토요일 −6,628'은 일 때 토요일이면 약 6,600MW 낮다는 뜻이다. '연도 +181'을 원인으로 읽으면 안 되는 까닭은 이다.

확인 문제 2의 표에 적어 제출 →
4

모델이 가장 크게 빗나간 여덟 날 — 벽돌을 빼서 괄호를 닫는다

8분

R² 0.849는 꽤 높은 숫자입니다. 그런데도 크게 빗나간 날이 있습니다. 모델이 가장 크게 틀린 여덟 날은 실제 수요가 모델보다 높았을까요, 낮았을까요? 여덟 날이 모두 같은 쪽일까요, 갈릴까요? 실험실에서 카드를 뒤집기 전에 먼저 잠급니다.

아래 실험실에서 모델의 예측을 '계수 × 값' 벽돌로 쌓아 봅니다. 벽돌을 톡 쳐서 탑 밖으로 빼면 탑이 내려앉거나 올라서고, 괄호(실제 − 꼭대기)가 다시 잽니다. 뺄 수 있는 것은 달력 칸(토요일·쉬는날·명절)뿐입니다 — 기온과 해는 그날의 사실이니까요. 도전 셋을 풀면 카드가 스스로 닫힙니다.

시뮬레이터

계수 벽돌 탑

모델이 가장 크게 빗나간 날 — 어느 벽돌이 범인인가, 아니면 벽돌로는 못 닫는가

  1. 1가린 카드 여덟 장을 보고 부호를 예측해 잠근다
  2. 2탑에서 벽돌을 톡 쳐 빼며 괄호를 닫고, 진단 딱지를 붙인다
  3. 3기준 벽돌을 갈아 끼우고, 카드를 끼워 다른 해에 시험한다
무대
① 부호 예측 — 고르면 카드가 뒤집힌다
① 사건 선반 · 여덟 날부호를 잠그면 카드가 뒤집힌다

괄호 = 실제 − 탑 꼭대기 · 닫았다 = 남은 괄호가 ±5,000MW 안 — 이 모델이 여느 날에 내는 오차(|괄호| 평균 2,221MW)의 두 배 남짓

딱지 판정 — 벽돌을 빼서 닫히면 겹친 칸 · 안 닫히는데 다른 해 같은 날짜도 크게 빗나가면 목록 밖 · 그 해에만 있으면 달력으로 못 고침 · 칸은 맞는데 몫만 다르면 크기가 다른 칸

남은 괄호—MW
고른 날—
뺀 벽돌0
진단 끝난 날0/8
보고서 바구니0
점수0
도전 1

여덟 날에 모두 딱지를 붙여라. 벽돌을 빼서 괄호가 닫히는 날은 몇 날인가? 닫히지 않는 날들의 공통점은?

도전 2

R²가 가장 좋은 기준 벽돌과 거기서 0.01 안쪽인 벽돌을 모두 보고서 바구니에 담아라 — 빠짐없이, 밖은 하나도 없이.

도전 3

두 카드를 모두 끼워 다른 해에 시험하라. R²가 가장 높은 카드가 처음 보는 해에서도 가장 나은가?

자료: 전력·기상 2,922일(2018~2025)을 쪽 안에 실었다(기온 0.1℃ 단위 정수 · 하루 평균 수요 · 공휴일 · 명절). 판은 열릴 때마다 최소제곱을 그 자리에서 다시 풀어 계수 · R² · 잔차를 스스로 냅니다 — 코드 ①~④가 찍는 숫자와 같은 값인지 쪽이 열릴 때 자기 검산합니다. 벽돌 값은 반올림해 보이므로 벽돌의 합과 꼭대기가 1MW 어긋나 보일 수 있습니다.

여덟 날 가운데 벽돌로 닫히는 날은 날이고, 그 까닭은 이다. 닫히지 않는 날들에게 필요한 것은 새 벽돌이 아니라 이다.

확인 문제 5에 적어 제출 →
5

기준 흔들기 · 잔차 여덟 날 — 그리고 해석문과 우리 팀 다음 수

10분

실험실에서 본 것을 코드로 확인합니다. 기준을 14℃부터 23℃까지 훑으면 R²가 가장 큰 자리는 어디일까요? 그리고 실험실의 사건 선반에 있던 여덟 날짜가 코드 [6]에도 같은 차례로 나올까요?

기본 코드 ④는 채워져 있습니다. 그대로 ▶ 실행해 세 가지를 확인하세요 — [4] 기준 온도 표, [5] 원전 몇 기, [6] 잔차가 가장 큰 여덟 날.

도전 토요일 칸의 정의를 규칙 카드로 바꿔 보세요 — 표["토요일"] = (d.dt.dayofweek == 5).astype(int) 을 표["토요일"] = ((d.dt.dayofweek == 5) & (표["공휴일"] == 0)).astype(int) 로. 공휴일이 토요일에 걸린 두 날이 목록에서 빠지고 평일 공휴일 둘(2024-08-15 +9,733 · 2018-10-03 +9,684)이 올라옵니다. R²는 0.8487 → 0.8528 — 소수 둘째 자리로는 0.85 그대로라 R² 한 줄로는 안 보이는 고침입니다.

탐구 잔차 여덟 날에서 '모델이 모르는 것' 셋을 뽑고, 그 가운데 하나를 고치는 칸을 제안해 보세요. 그 칸이 과하게 맞춘 것이 아닌지는 무엇으로 확인할 수 있을까요(→ Ⅳ-6).

그리고 4분 — 해석문을 씁니다. 오늘 낸 숫자를 한 문장으로 옮기되, 개념 2-4의 네 칸(단위 · 범위 · 조건 · 모른다)을 빠짐없이 채우세요. 뼈대는 이렇습니다 — “한여름에 기온이 1℃ 높으면 하루 평균 수요가 약 ○○MW 늘어난다(기준 ○℃ · 기준을 달리 고르면 ○○ ~ ○○MW). 2018~2025년 · 전국 · 하루 평균 · 요일과 쉬는 날을 그대로 둔 채.” 이어서 이 모델이 모르는 것 셋을 잔차 여덟 날에서 뽑습니다 — 실험실에서 여덟 날에 붙인 딱지 넷(겹친 칸 · 크기가 다른 칸 · 목록 밖 · 달력으로 못 고침)이 딱지별로 초안을 줍니다. 한 문장은 확인 문제 3·4에, 모르는 것 셋은 미션 ④가 가리킨 확인 문제 5에 함께 적습니다.

그리고 3분 — 우리 팀 프로젝트로 돌아갑니다. Ⅳ-4의 확인 문제 6에 낸 분석 계획서를 꺼내 방법 ① 칸을 채우세요. 세 줄이면 됩니다 — ㉮ 무엇을 쓸지(통계적 회귀 · 집단 비교 · 교차표 …), ㉯ 그 방법이 답하는 물음 한 줄, ㉰ 그 방법에 필요한 전처리 하나. 오늘 우리에게는 ㉮ 통계적 회귀 · ㉯ '한여름 1℃에 수요는 몇 MW 느는가' · ㉰ 도일이었습니다. 다음 시간(Ⅳ-6)에 방법 ②를 세워 오늘의 방법 ①과 같은 조건에서 겨루게 합니다.

한여름에 기온이 1℃ 높으면 하루 평균 수요는 약 MW 늘어난다 — 단, 이고, 기준 온도를 로 고른 경우다. 이 모델이 모르는 것은 이다.

확인 문제 3·4에 적어 제출 →
체크포인트 3

직선 하나에서 여섯 열까지 직접 맞췄고, 기준 온도가 답을 흔드는 폭을 재었고, 모델이 모르는 여덟 날을 벽돌로 해부해 딱지를 붙였고, 오늘의 숫자를 네 칸 갖춘 한 문장으로 옮겨 우리 팀의 방법 ①을 정했다.

다음 정거장 · 정리·확인 10분 →
4
정리·확인 · 10분

오늘의 탐험 일지

  1. 찾은 것

    V자는 도일이라는 전처리로 두 직선 팔이 된다 — 기온 한 줄이 두 줄이 되자 R²가 0.01에서 0.48로, 달력 넷을 더하자 0.849로 올랐다.

  2. 도구의 한계

    LinearRegression은 모양이 맞는지 · 계수가 얼마나 흔들리는지 · 기준 온도를 무엇으로 할지를 말해 주지 않는다. 그 셋은 사람이 재야 한다.

  3. 보고의 규칙

    한 숫자를 내놓을 때는 단위 · 범위 · 조건 · 모르는 날 네 칸을 함께 적는다 — +1,285 ~ +1,636MW(기준 17~19℃, 하루 평균, 2018~2025 전국).

✍️ 문제마다 답을 쓰고 제출하기를 누르세요. 제출하면 모범 답안이 열리고, 제출한 답은 선생님께 전달됩니다.

1. 기온 하나로 맞춘 직선의 기울기가 음수(−83.8MW/℃)로 나온 까닭을 V자로 설명하시오. 그리고 이 숫자가 말해 주지 않는 것을 하나 쓰시오.
📖 모범 답안

기온과 수요는 V자다 — 추운 쪽에서는 기온이 오르면 수요가 줄고, 더운 쪽에서는 기온이 오르면 수요가 는다. 방향이 반대인 두 팔에 직선 하나를 맞추면 어느 한쪽으로 기울 수밖에 없는데, 우리 자료에서는 추운 쪽이 이겼다. 18℃ 아래로는 기온이 29.4℃만큼 내려가고 위로는 14.0℃만큼만 올라가서, 내려오는 몫(29.4 × 800 ≈ 23,514MW)이 올라가는 몫(14.0 × 1,454 ≈ 20,359MW)보다 크기 때문이다. 날 수도 추운 쪽이 1,678일로 더운 쪽 1,244일보다 많다.

이 숫자가 말해 주지 않는 것 — 두 팔 각각의 크기다. 난방 쪽 1℃와 냉방 쪽 1℃는 +800과 +1,454로 두 배 가까이 다른데, −83.8이라는 한 숫자에는 그 어느 쪽도 들어 있지 않다. 또 R² 0.01은 '기온이 수요와 상관없다'가 아니라 직선이 맞는 모양이 아니다라는 뜻이다.

2. 요일·공휴일·명절·연도를 넣자 R²가 0.48 → 0.849로 올랐다. 이것은 무엇을 말해 주는가? 그리고 아래 표에 계수 셋을 '다른 칸이 같을 때 …' 꼴의 한 줄로 옮겨 적으시오. 끝으로, R²가 높으면 이 모델로 어떤 날이든 믿고 예측해도 되는지 쓰시오.
계수값사람의 말로 — “다른 칸이 같을 때 …”
난방도일+800
쉬는날−9,932
명절−5,235
📖 모범 답안

하루 수요가 흔들리는 몫의 큰 부분이 달력에서 온다는 뜻이다. 기온(두 팔)만으로는 0.48이었는데 요일·쉬는 날·명절·해마다 느는 몫을 넣자 0.849가 되었다. 동시에 냉방도일 계수가 +1,478에서 +1,454로 내려앉았는데, 넣기 전의 계수 안에 여름 휴가철·쉬는 날의 몫이 섞여 있었다는 뜻이다.

표 — 난방도일 +800: “다른 칸이 같을 때 기준 18℃보다 1℃ 더 추운 날은 하루 평균 수요가 약 800MW 높다.” 쉬는날 −9,932: “다른 칸이 같을 때 일요일이거나 공휴일이면 약 9,900MW 낮다.” 명절 −5,235: “다른 칸이 같을 때, 이미 쉬는날로 한 번 세어진 데다 설·추석이면 약 5,200MW 더 낮다.” (명절은 대개 쉬는날과 함께 켜지므로 둘이 더해져 작용한다 — 계수를 혼자 읽으면 안 되는 자리다.)

아니다. R² 0.849는 맞춘 기간 안의 설명력일 뿐이다. 실제로 이 모델은 2020년 봄·여름과 근로자의 날에 1만MW 넘게 빗나갔다. 처음 보는 폭염, 새로운 추세, 달력 표에 없는 쉬는 날에는 틀릴 수 있으므로 미래로 시험해 봐야 한다(Ⅳ-6).

3. 기준 17 · 18 · 19℃는 거의 똑같이 잘 맞는데(R² 0.8442 · 0.8487 · 0.8465) 냉방도일 계수는 +1,285 ~ +1,636이다. 보고서에 한 숫자만 써야 한다면 어떻게 쓰겠는가? 그리고 기준을 아무렇게나 골라도 되는 것은 아닌 까닭을 함께 쓰시오.
📖 모범 답안

한 숫자를 쓰더라도 범위를 괄호로 붙인다 — 예: “한여름 하루 평균 기온이 1℃ 높으면 하루 평균 수요가 약 1,450MW 늘어난다(기준 온도 선택에 따라 1,285~1,636MW, 기준 18℃일 때의 값).” 숫자가 전처리 선택에서 왔다는 것을 감추지 않는 것이 핵심이다.

그렇다고 아무 기준이나 골라도 되는 것은 아니다. 14℃(0.8036)나 23℃(0.7552)는 눈에 띄게 못 맞춘다. 고를 때는 고른 규칙을 먼저 적고 그 규칙대로 고른다 — 예: “가장 높은 R²에서 0.01 안쪽인 기준”, “물음과 같은 목표(여름 낮 최대 수요)로 다시 잰 R²”, “맞출 때 쓰지 않은 해에서 잰 오차”. 0.01이라는 문턱도 사람이 정한 것이므로 그 문턱까지 적어야 남이 같은 답을 다시 낼 수 있다.

4. “기온 1℃에 원전 한 기”라는 말이 오해를 부를 수 있는 점 둘을 쓰시오.
📖 모범 답안

① 하루 평균의 증가이지 가장 수요가 큰 시각의 증가가 아니다. 2024년 8월 20일만 봐도 하루 평균은 83,203MW인데 하루 최대는 97,115MW로 13,912MW 더 높다(여름 평균으로도 9,520MW 차이). 전력 수급에서 정작 문제가 되는 것은 봉우리인데, 우리가 낸 +1,454MW는 봉우리의 증가가 아니다.

② 1,400MW는 설비용량이다 — 원전이 늘 그만큼 내는 것도 아니고, 그만큼 새로 지어야 한다는 뜻도 아니다. 수요가 1,454MW 늘어난다는 말과 발전소를 한 기 더 짓는다는 말 사이에는 예비력·이용률·수요관리 같은 여러 단계가 있다. '원전 몇 기'는 크기를 가늠하게 해 주는 비유이지 정책 결론이 아니다.

5. 잔차가 가장 큰 여덟 날 가운데 둘(2020-05-01 · 2023-05-01)이 근로자의 날이었다 — 우리 공휴일 표에는 없는 날이다. 모델을 고칠 방법을 하나 제안하고, 그 제안이 과하게 맞추는 것이 아닌지 무엇으로 확인할지 쓰시오. (실험실의 '카드 끼우기'에서 본 것을 근거로 들어도 좋다.)
📖 모범 답안

제안(예) — 관공서 공휴일은 아니지만 많은 일터가 쉬는 날(근로자의 날 같은)을 달력 표에 칸으로 더한다. 또는 '연휴 며칠째' · '연휴 사이 징검다리 평일' 칸을 더하거나, 쉬는 날에는 냉난방 민감도가 다르다는 곱 항(쉬는날 × 냉방도일)을 넣는다. 오늘 본 규칙 카드(공휴일인 토요일은 토요일 칸을 0으로)도 같은 갈래다 — 날짜를 외우는 것이 아니라 칸의 정의를 다시 쓰는 고침이다.

확인 — 고친 모델을 맞출 때 쓰지 않은 기간에서 재 본다. 실험실에서 2018~2022로만 맞추고 2023~2025의 공휴일 토요일 다섯 날에 대 보면, 규칙 카드는 잔차 평균이 +5,967 → +176MW로 들어오는데 그 여덟 날마다 한 칸씩 주는 '날짜 칸 카드'는 +6,052MW로 손대지 않은 것과 다름없다. 날짜 칸 카드는 R²가 0.8550으로 셋 가운데 가장 높은데도 그렇다 — 맞춘 기간의 R²만 보고 고르면 속는다.

6. [1]에서 LinearRegression은 R² 0.01인 직선을 아무 경고 없이 맞췄다. 이 도구가 알려 주지 않는 것 둘을 쓰고, 오늘 그것을 각각 무엇으로 알아냈는지 적으시오.
📖 모범 답안

① 직선이 맞는 모양인지 — 알려 주지 않는다. 오늘은 코드 ②의 그림(점 위에 직선 하나와 두 팔)과 Ⅳ-4의 V자로 눈으로 확인했다. R² 0.01은 도구가 낸 숫자이지 경고가 아니다.

② 계수가 표본에 따라 얼마나 흔들리는지 — 표준오차·신뢰구간을 내지 않는다. (통계 모델 도구인 statsmodels는 함께 낸다. Ⅲ-3에서는 부트스트랩으로 직접 재 보았다.)

③ 전처리 선택 — 기준 온도는 도구 밖에서 사람이 정한다. 오늘은 [4]에서 14~23℃를 직접 훑어 답이 +1,285 ~ +1,636으로 흔들리는 것을 재었다.

한 줄로 줄이면 — 도구가 낸 숫자는, 도구가 묻지 않은 질문에는 답해 주지 않는다.

+
더 알아보기

도일이 걸어온 길 셋

날마다 기준선 아래 넓이를 더해 간다2018년 1월 1~21일 · 우리 자료18℃−10010181일21일막대 하나 = 그날의 난방도일(기준 18℃ − 하루 평균 기온)쌓으면 — 스무하루에 365.3도일0400누적 난방도일연료 탱크배달!누적이 탱크 눈금에 닿는 날을 배달 날로 잡는다 — 도일은 이 셈에서태어났다.
역사

난방유는 언제 배달해야 하나 — 도일의 탄생

도일은 통계학 교과서가 아니라 배달 트럭에서 나왔습니다. 20세기 전반 미국에서 집집에 난방유를 대던 회사들은 같은 고민을 안고 있었습니다. 너무 일찍 가면 탱크에 자리가 없어 헛걸음이고, 너무 늦게 가면 한겨울에 연료가 떨어집니다. 그렇다고 집집마다 눈금을 보러 다닐 수도 없었지요.

그들이 찾은 답은 날씨로 대신 세는 것이었습니다. 하루 평균 기온이 기준보다 낮은 만큼을 그날의 값으로 삼고 날마다 더해 가면, 그 누적값이 집이 태운 연료에 거의 비례합니다. 기준은 화씨 65도(약 18.3℃)를 썼습니다 — 그 언저리에서는 사람과 조명, 조리 기구가 내는 열만으로 집이 데워져 난방을 거의 켜지 않는다는 경험에서 나온 값입니다. 오늘 우리가 R²로 찾아낸 기준이 17~19℃였으니, 백 년 전 배달원의 어림과 여덟 해 전력 자료가 같은 자리를 가리킨 셈입니다.

도해는 우리 자료의 2018년 1월 1~21일로 그렸습니다. 스무하루를 더하니 365.3도일 — 탱크 눈금이 그만큼 내려갔다고 보고 배달 날을 잡는 것이 이 셈의 쓰임이었습니다.

도해: 위는 날마다 기준 18℃ 아래로 내려간 만큼, 아래는 그것을 누적한 값과 연료 탱크 눈금. 값은 우리 자료(전력·기상 2,922일)에서 계산했다. · 기준 화씨 65도는 미국 기상청(NWS)·에너지정보청(EIA)이 지금도 쓰는 난방도일 기준값이다.

여름 냉방도일 합계 — 여덟 해6~8월 92일 · 기준 18℃777201864020196282020679202170020227062023788202480820250800가장 시원한 2020년 628, 가장 더운 2025년 808 — 1.29배서늘한 여름이 무서운 쪽전력·가스 회사더운 여름이 무서운 쪽냉방비를 치르는 쪽도일이 낮으면도일이 높으면회귀 계수가 곧 계약 금액이 된다 — 도일 1 마다 주고받을 돈을 미리적어 둔다.
현장

날씨를 사고파는 시장 — 도일이 지수가 될 때

여름이 서늘하면 에어컨이 덜 팔리고 발전 회사의 매출이 줄어듭니다. 겨울이 포근하면 가스 회사가 같은 일을 겪지요. 비도 태풍도 아닌 그저 평범한 날씨가 회사의 한 해를 좌우하는데, 이건 보험으로 다루기 어렵습니다 — 사고가 난 것이 아니니까요.

그래서 1990년대 말 미국의 거래소들은 도일 자체를 지수로 만들어 사고팔기 시작했습니다. 도시별로 한 달 또는 한 계절의 냉방도일·난방도일을 합한 값을 정해 두고, 그 값이 기준보다 낮으면 A가 B에게, 높으면 B가 A에게 정해진 금액을 주는 계약입니다. 시카고상품거래소(CME)가 1999년 이런 날씨 선물을 상장한 것이 널리 알려진 출발점입니다.

계약서에 적히는 '도일 1당 얼마'는 어디서 올까요? 오늘 우리가 낸 것과 같은 회귀 계수입니다. 도해의 여덟 막대는 우리 자료로 잰 여름(6~8월) 냉방도일 합계입니다 — 가장 시원했던 2020년 628에서 가장 더웠던 2025년 808까지 1.29배 흔들립니다. 계수 하나에 이만큼의 돈이 매달려 있다면, '기준을 17로 할까 19로 할까'는 더 이상 사소한 선택이 아닙니다.

도해: 위는 2018~2025년 여름(6~8월, 92일씩) 냉방도일 합계(기준 18℃) — 우리 자료에서 계산. 아래는 도일이 낮을 때와 높을 때 누가 손해를 보는지의 흐름. · CME 날씨 선물 상장(1999)은 거래소 공개 자료에서 확인할 것.

2024년 8월 20일 하루 — 네 숫자단위 MW하루 평균83,203한낮 11~13시90,603저녁 19~21시93,778하루 최대97,115하루 최대는 하루 평균보다 13,912MW 높다(여름 평균 9,520MW).우리가 낸 ‘1℃ 의 답’ 을 같은 자로 재면1℃ 의 답1,454MW원전 한 기1,400MW막대가 거의 보이지 않는다 — 하루 평균을 1℃ 만큼 올리는 몫이다.
방법 더 깊이

'원전 한 기'로 옮길 때 잃어버리는 것

+1,454MW를 “1,400MW 원전 약 한 기”라고 옮기면 듣는 사람의 머릿속에 그림이 생깁니다. 좋은 번역이지요. 그런데 이 번역에서 조용히 빠져나가는 것이 둘 있습니다.

첫째, 우리가 잰 것은 하루 평균입니다. 2024년 8월 20일 하루만 보아도 평균은 83,203MW인데 한낮(11~13시)은 90,603MW, 저녁(19~21시)은 93,778MW, 그날의 최대는 97,115MW입니다. 평균과 최대의 차이가 13,912MW — 우리가 낸 '1℃의 답'의 아홉 배가 넘습니다. 전력 수급에서 정작 아슬아슬한 것은 이 봉우리인데, 하루 평균으로 잰 계수는 봉우리가 얼마나 더 솟는지 말해 주지 않습니다. 시각마다 따로 계수를 내 보면 한낮·오후 칸이 하루 평균보다 크게 나옵니다.

둘째, 1,400MW는 설비용량입니다. 발전소가 낼 수 있는 최댓값이지 늘 내는 양이 아닙니다. 같은 1,400MW라도 원전과 태양광이 한 해 동안 실제로 내는 양은 크게 다릅니다(이용률이 다르기 때문입니다). 그래서 '수요가 1,454MW 늘었다'와 '발전소를 한 기 더 지어야 한다'는 결코 같은 문장이 아닙니다. 비유는 크기를 가늠하게 해 줄 뿐, 결론을 대신하지 못합니다.

도해: 2024년 8월 20일 하루의 네 숫자(하루 평균 · 한낮 11~13시 · 저녁 19~21시 · 하루 최대)와, 같은 자로 그린 '1℃의 답' 1,454MW · 원전 한 기 1,400MW. 값은 우리 자료에서 읽었다. · 원전 설비용량 1,400MW(APR1400)와 발전원별 이용률은 사업자·전력거래소 공개 통계에서 확인할 것.