수포자의 보건통계 공부기록 ④ — 단순선형회귀, 공식이 태어난 이유

지난 포스팅에서 상관계수를 이해했다.
두 변수의 관계를 -1~+1 숫자로 표현하는 것까지 왔다.
이번엔 그 관계를 직선으로 표현한다.
공식을 외우기 전에, 왜 이 방향으로 생각해야 하는지부터 본다.


출발점 — 우리가 원하는 게 뭔가?

나이(X)로 혈압(Y)을 예측하고 싶다.

예측한다는 건 결국 이 질문이다:

"나이가 주어졌을 때, 혈압이 얼마일 것 같아?"

그러려면 나이와 혈압 사이의 규칙을 찾아야 한다.
가장 단순한 규칙이 뭘까?

💡 직선!
"나이가 1살 늘 때마다 혈압이 일정하게 올라간다"


STEP 1 — 직선을 수식으로 쓰면?

중학교 때 배운 직선의 방정식:

$$y = ax + b$$

회귀분석에서는 기호만 바뀐다:

$$\hat{y} = \beta_0 + \beta_1 x$$

중학교:   y  =  b  +  a  × x
회귀분석: ŷ  = β₀  + β₁  × x

기호 의미

$\hat{y}$ 예측값 (^은 "추정했다"는 표시)
$\beta_0$ 절편 (직선이 y축과 만나는 점)
$\beta_1$ 기울기 (x가 1 증가할 때 y의 변화량)
$x$ 독립변수 (나이)

달라진 건 기호뿐이다.
수식의 구조는 중학교 직선과 완전히 같다.


STEP 2 — 어떤 직선을 그어야 할까?

점들이 흩어져 있다. 직선은 무한히 많이 그을 수 있다.

"실제 값과 예측 값의 차이가 가장 작은 직선"

실제 값 — 예측 값 = 잔차(Residual)

환자 A: 실제 혈압 145, 예측 혈압 140 → 잔차 = +5
환자 B: 실제 혈압 118, 예측 혈압 122 → 잔차 = -4
환자 C: 실제 혈압 130, 예측 혈압 130 → 잔차 =  0

STEP 3 — 잔차를 어떻게 "전체적으로" 잴까?

잔차를 다 더하면?

+5 + (-4) + 0 + (-3) + 2 = 0

또 0이 나온다. 분산 때랑 똑같은 문제다.

기억나는가? 분산 때도 이 문제가 생겨서 제곱했다.
여기서도 똑같이 한다.

$$\text{SSE} = \sum_{i=1}^{n}(y_i - \hat{y}_i)^2$$

잔차를 제곱해서 다 더한 것 = SSE(잔차제곱합)
이걸 가장 작게 만드는 직선 = 최적의 직선

💡 분산을 구할 때 제곱한 이유 = 잔차를 구할 때 제곱한 이유
완전히 같은 논리다. 새로운 개념이 아니다.

이렇게 잔차제곱합을 최소화하는 방법을
최소제곱법(Ordinary Least Squares, OLS) 이라고 한다.


STEP 4 — SSE를 최소로 만드는 기울기 β₁은?

SSE를 가장 작게 만드는 기울기를 구하면:

$$\beta_1 = \frac{\sum(x_i - \bar{x})(y_i - \bar{y})}{\sum(x_i - \bar{x})^2}$$

복잡해 보이지만, 우리가 이미 아는 것들로 쪼개면:

분자: Σ(x - x̄)(y - ȳ) → 공분산의 분자  ← 지난 포스팅에서 배운 것!
분모: Σ(x - x̄)²       → 분산의 분자    ← 2번 포스팅에서 배운 것!

정리하면:

$$\beta_1 = \frac{\text{공분산}}{\text{X의 분산}} = r \cdot \frac{s_y}{s_x}$$

💡 기울기는 사실 이 질문의 답이다:

"X가 자기 평균에서 벗어난 만큼,
Y는 평균에서 얼마나 함께 벗어나 있나?"

상관계수가 클수록 → 기울기가 가파름
Y가 많이 흩어질수록 → 기울기가 가파름
X가 많이 흩어질수록 → 기울기가 완만함


STEP 5 — 절편 β₀는?

기울기를 구했으면 절편은 간단하다.

회귀직선은 반드시 $(\bar{x}, \bar{y})$ — 평균점을 지난다.

$$\bar{y} = \beta_0 + \beta_1 \bar{x}$$

$$\beta_0 = \bar{y} - \beta_1 \bar{x}$$

"평균 나이를 넣으면 평균 혈압이 나와야 한다"
→ 그 조건을 만족하는 절편을 역산한 것

STEP 6 — R², 이 직선이 얼마나 믿을 만한가?

직선을 그었다. 근데 이 직선이 얼마나 잘 맞는가?

방법 A: 그냥 "평균 혈압"으로 모든 환자를 예측
방법 B: 나이로 회귀분석해서 예측

방법 B가 방법 A보다 얼마나 더 잘 맞추는가?
→ 그 비율이 R²

$$R^2 = 1 - \frac{\text{SSE (회귀선으로 설명 못 한 변동)}}{\text{SST (전체 변동)}}$$

$R^2$ 값 해석

1.0 완벽하게 예측 (현실에선 없음)
0.56 나이가 혈압 변동의 56% 설명
0.0 직선이 아무 도움이 안 됨

회귀분석 결과 읽는 법

실제 R 출력 예시:

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   80.245      5.123   15.67   <0.001 ***
나이            0.523      0.089    5.87   <0.001 ***

R-squared: 0.562

항목 의미 해석

Estimate (Intercept) $\beta_0 = 80.245$ 나이 0세일 때 혈압 기준값
Estimate (나이) $\beta_1 = 0.523$ 나이 1살 증가 → 혈압 0.523 상승
t value 계수가 0과 얼마나 다른가 클수록 의미 있는 변수
Pr(>|t|) p-value 0.05보다 작으면 통계적으로 유의
R-squared 설명력 나이가 혈압 변동의 56.2% 설명

⚠️ 회귀분석의 4가지 가정 — 꼭 확인해야 한다

회귀분석은 아래 4가지 가정이 만족될 때만 결과를 믿을 수 있다.
논문이나 과제에서 이걸 확인 안 하면 발목 잡힌다.

1. 선형성     → X와 Y의 관계가 직선이어야 함
2. 독립성     → 잔차들이 서로 독립이어야 함
3. 등분산성   → 잔차의 분산이 X값에 관계없이 일정해야 함
4. 정규성     → 잔차가 정규분포를 따라야 함

확인 방법: 잔차 플롯(Residual Plot) 을 반드시 그려볼 것.


오늘 공부의 핵심 연결고리

"나이로 혈압을 예측하고 싶다"
        ↓
직선을 긋자 → ŷ = β₀ + β₁x   (중학교 직선과 같은 구조)
        ↓
어떤 직선? → 잔차가 가장 작은 직선
        ↓
잔차를 제곱해서 합산 → SSE    (분산 때랑 같은 논리!)
        ↓
SSE 최소화 → β₁, β₀ 공식 도출  (공분산 ÷ 분산)
        ↓
이 직선이 얼마나 좋은가? → R²
        ↓
다음: 다중회귀 & 로지스틱 회귀
  → 변수가 여러 개면?
  → 결과가 0/1이면?

📌 다음 포스팅 예고: 다중회귀 & 로지스틱 회귀
변수가 나이 하나가 아니라 여러 개라면?
그리고 예측하려는 게 혈압(연속형)이 아니라 "사망 여부(0/1)"라면?
보건통계에서 가장 많이 쓰는 두 가지 회귀가 나온다.

수포자의 보건통계 공부기록 ③ — 상관계수, 두 변수의 관계를 숫자 하나로

지난 포스팅에서 표준편차와 정규분포를 이해했다.
이번엔 두 변수 사이의 관계를 숫자로 표현하는 법을 배운다.
이걸 이해하면 드디어 회귀분석 공식이 보이기 시작한다.


1. 왜 상관계수가 필요한가?

100명의 환자 데이터가 있다.
나이혈압을 같이 측정했다.

"나이가 많을수록 혈압이 높아지는 경향이 있을까?"

눈으로 보면 느낌은 오는데,
그 "느낌"을 숫자 하나로 표현할 수 없을까?

💡 그게 바로 상관계수(Correlation Coefficient) 다.
두 변수가 얼마나, 어떤 방향으로 함께 움직이는지를
-1 ~ +1 사이의 숫자 하나로 표현한다.


2. 어떻게 만들었을까? — 공분산에서 상관계수로

"함께 움직인다"는 걸 수식으로 잡으려면

나이(X)와 혈압(Y) 데이터가 있다.

환자 A: 나이 많음, 혈압 높음  → 둘 다 평균보다 위
환자 B: 나이 적음, 혈압 낮음  → 둘 다 평균보다 아래
환자 C: 나이 많음, 혈압 낮음  → 방향이 반대

각 변수에서 평균을 빼보면:

나이가 평균보다 많으면   → (X - X̄) > 0
혈압이 평균보다 높으면   → (Y - Ȳ) > 0

둘 다 양수 → 곱하면 양수  ✅ 같은 방향
하나가 음수 → 곱하면 음수  ✅ 반대 방향

그래서 $(X - \bar{X})(Y - \bar{Y})$ 를 전부 더하면
두 변수가 얼마나 같은 방향으로 움직이는지 잡을 수 있다.

이게 바로 공분산(Covariance) 이다:

$$\text{Cov}(X, Y) = \frac{\sum(x_i - \bar{x})(y_i - \bar{y})}{n-1}$$


공분산의 문제 — 단위가 이상하다

공분산은 단위에 따라 값이 달라진다.

나이(세)와 혈압(mmHg)을 곱했으니
단위가 (세 × mmHg) 이다.
숫자가 크게 나오면 관계가 강한 건지,
단위가 커서 그런 건지 구분이 안 된다.

해결책: 각 변수의 표준편차로 나눠서 단위를 없앤다.

$$r = \frac{\text{Cov}(X,Y)}{s_X \cdot s_Y}$$

이렇게 하면 항상 -1 ~ +1 사이로 눌러진다.
이게 바로 피어슨 상관계수(Pearson Correlation Coefficient) 다.


3. 상관계수 공식

$$r = \frac{\sum(x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum(x_i-\bar{x})^2 \cdot \sum(y_i-\bar{y})^2}}$$

r 값 의미
+1에 가까울수록 강한 양의 관계 (같이 올라감)
0에 가까울수록 관계 없음
-1에 가까울수록 강한 음의 관계 (반대로 움직임)

보건통계에서 자주 쓰는 기준:

$|r|$ 범위 해석
0.8 ~ 1.0 강한 상관
0.6 ~ 0.8 중간 상관
0.4 ~ 0.6 약한 상관
0.0 ~ 0.4 거의 없음

4. 분산과 공분산은 사실 같은 구조다

지난 포스팅의 분산 공식:

$$s^2 = \frac{\sum(x_i - \bar{x})^2}{n-1} = \frac{\sum(x_i-\bar{x})\cdot(x_i-\bar{x})}{n-1}$$

공분산 공식:

$$\text{Cov}(X,Y) = \frac{\sum(x_i-\bar{x})\cdot(y_i-\bar{y})}{n-1}$$

💡 분산은 자기 자신과의 공분산이다!

X와 X의 관계 → 분산
X와 Y의 관계 → 공분산

같은 구조다. 개념이 하나로 연결된다.


5. ⚠️ 가장 중요한 경고 — 상관관계 ≠ 인과관계

보건통계에서 가장 많이 하는 실수가 여기 있다.
상관계수가 높다고 해서 원인-결과 관계가 있는 건 아니다.

유명한 예:

아이스크림 판매량 ↑  &  익사 사고 ↑  →  r = 0.9

아이스크림이 익사를 유발할까?
아니다. 여름(더운 날씨) 이라는 제3의 변수가 둘 다 올린 것이다.

이걸 교란변수(Confounding Variable) 라고 한다.
논문에서 상관계수를 볼 때 항상 이 점을 경계해야 한다.


오늘 공부의 핵심 연결고리

표준편차 (지난 시간)
  → 한 변수의 흩어진 정도
  ↓
공분산
  → 두 변수가 함께 움직이는 정도
  → 단위 문제 있음
  ↓
상관계수
  → 공분산을 표준편차로 나눠 단위 제거
  → -1 ~ +1 사이로 표준화
  ↓
회귀분석 (다음 시간!)
  → 상관관계를 "선"으로 표현하면?
  → 드디어 회귀계수 공식이 나온다

📌 다음 포스팅 예고: 단순선형회귀
상관계수를 이해했으면 이제 준비됐다.
회귀분석 공식이 왜 이렇게 생겼는지 드디어 볼 수 있다.

수포자의 보건통계 공부기록 ② — 표준편차와 정규분포

지난 포스팅에서 분산을 이해했다.
근데 분산을 계산하고 나니 단위가 이상해졌다.
혈당의 단위는 mg/dL인데, 분산은 (mg/dL)²라니.
오늘은 그 문제를 해결하면서 정규분포까지 연결해본다.


1. 표준편차 — 분산의 단위 문제를 해결하다

분산에서 발견한 문제

지난 포스팅에서 B병동 혈당 데이터로 분산을 구했다.

B병동 혈당: 80, 95, 120, 145, 160  (단위: mg/dL)
분산 = 890

그런데 분산의 단위가 (mg/dL)² 다.
제곱을 했으니 당연한 건데, 문제는 (mg/dL)² 는 현실에서 아무 의미가 없는 단위라는 것이다.

"이 환자 혈당 변동성이 890 (mg/dL)² 입니다"
→ 임상에서 아무도 이걸 직관적으로 이해 못한다.

그래서 나온 생각:

💡 "제곱했으니까 루트 씌우면 원래 단위로 돌아오지 않을까?"

그게 바로 표준편차(Standard Deviation) 다.


분산에서 표준편차로

분산 = 890 (mg/dL)²
           ↓
      √890 ≈ 29.8
           ↓
표준편차 ≈ 29.8 mg/dL

이제 단위가 원래대로 돌아왔다.

"B병동 환자들의 혈당은 평균 120 mg/dL에서
평균적으로 ±29.8 mg/dL 정도 흩어져 있다"

훨씬 직관적이다.


표준편차의 본질

표준편차 = 데이터가 평균에서 평균적으로 얼마나 떨어져 있는가

병동 평균 표준편차 해석

A병동 120 mg/dL ≈ 1.4 mg/dL 환자들 혈당이 균일
B병동 120 mg/dL ≈ 29.8 mg/dL 환자들 혈당이 들쭉날쭉
표준편차 작다 → 데이터가 평균 근처에 모여 있다 → 균일하다
표준편차 크다 → 데이터가 평균에서 많이 흩어져 있다 → 들쭉날쭉하다

표준편차 공식

$$s = \sqrt{\frac{\sum_{i=1}^{n}(x_i - \bar{x})^2}{n-1}}$$

분산 공식에 루트만 씌운 것이다.

기호 의미

$s$ 표본 표준편차
$\sigma$ 모집단 표준편차
$\bar{x}$ 표본평균
$n-1$ 자유도 (지난 포스팅 참고)

2. 정규분포 — 왜 이 종 모양인가?

자연은 왜 종 모양인가?

전국 성인 남성 10만 명의 키를 재서 히스토그램을 그리면 어떤 모양이 나올까?

아주 작은 사람  → 드물다
작은 사람       → 조금 있다
평균 키         → 가장 많다  ← 여기가 봉우리
큰 사람         → 조금 있다
아주 큰 사람    → 드물다

가운데가 볼록하고 양 끝이 얇아지는 종 모양이 나온다.

키뿐만 아니라 — 혈압, 체중, 시험 점수, 측정 오차...
자연에서 일어나는 수많은 현상이 이 모양을 따른다.

💡 왜 그럴까?

어떤 결과는 수많은 독립적인 요인의 합으로 결정된다.
키 = 유전자 수백 개 + 영양 + 환경 + ...

독립적인 요인들을 많이 더할수록
그 합은 반드시 정규분포에 가까워진다.
이걸 중심극한정리(Central Limit Theorem) 라고 한다.
(가설검정에서 아주 중요하게 다시 나온다!)


정규분포는 딱 두 개의 숫자로 결정된다

평균 (μ) → 종의 중심 위치
표준편차 (σ) → 종의 퍼진 정도

σ 크기 분포 모양 의미

σ 작을 때 뾰족하고 좁음 데이터가 평균 근처에 몰림
σ 클 때 납작하고 넓음 데이터가 많이 흩어짐

정규분포의 황금 법칙 — 68-95-99.7

정규분포에서 반드시 기억해야 할 숫자다.

$$\mu \pm 1\sigma \quad \rightarrow \quad \text{전체의 약 68%}$$

$$\mu \pm 2\sigma \quad \rightarrow \quad \text{전체의 약 95%}$$

$$\mu \pm 3\sigma \quad \rightarrow \quad \text{전체의 약 99.7%}$$

임상으로 연결하면:

혈당 평균 120, 표준편차 10 mg/dL인 집단에서

  • 100 ~ 140 mg/dL (±1σ) → 환자의 68%
  • 90 ~ 150 mg/dL (±2σ) → 환자의 95%
  • 80 ~ 160 mg/dL (±3σ) → 환자의 99.7%

💡 이 법칙이 나중에 p-value 0.05 의 뿌리가 된다.


정규분포 공식

$$f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}$$

지금 당장 외울 필요는 없다.
각 부분이 무슨 역할인지만 알면 된다:

부분 역할

$\mu$ 종의 중심 위치
$\sigma$ 종의 퍼진 정도
$e^{-(\cdot)}$ 중심에서 멀어질수록 작아지게 만드는 부분
$\frac{1}{\sigma\sqrt{2\pi}}$ 전체 면적이 1이 되도록 맞춰주는 부분

💡 확률분포에서 전체 면적 = 1
"모든 가능한 경우의 확률을 다 더하면 100%"
이게 나중에 p-value 계산의 핵심이다.


오늘 공부의 핵심 연결고리

분산
  → 단위가 (mg/dL)²로 이상해짐
  → 루트 씌우면 해결
  → 표준편차 탄생

표준편차
  → "평균에서 평균적으로 얼마나 떨어져 있나"
  → 이걸 축으로 쓰면?
  → 정규분포 탄생

정규분포
  → 평균(μ)과 표준편차(σ) 두 개로 완전히 결정
  → 68-95-99.7 법칙
  → p-value 0.05의 뿌리 ← 다음 시간에!

📌 다음 포스팅 예고: 상관계수
표준편차를 이해했으면 상관계수로 넘어갈 수 있다.
상관계수를 이해하면 드디어 회귀분석 공식이 왜 저렇게 생겼는지 보이기 시작한다.

수포자의 보건통계 공부기록 ① — 분산, 자유도, 기댓값

보건정보통계학 석사과정에서 보건통계개론을 듣고 있다.
수업은 한 바퀴 돌았는데, 회귀분석 공식이 "왜 이렇게 생겼지?"에 대해 저 마음 깊은 곳 속시원한 느낌이 오질 않았다.
공식을 외우기 전에 왜 이 공식이 태어났는지부터 이해하기로 했다.
오늘은 그 첫 번째 — 분산, 자유도, 기댓값.


1. 분산(Variance) — 평균만으로는 부족한 이유

평균이 같아도 위험도는 다르다

두 병동의 환자 혈당을 측정했다.

병동 측정값 평균

A병동 118, 119, 120, 121, 122 120
B병동 80, 95, 120, 145, 160 120

평균은 똑같이 120 mg/dL.
그런데 B병동은 저혈당 환자와 고혈당 환자가 섞여 있다. 훨씬 위험한 상황이다.

평균만으로는 데이터의 "흩어진 정도"를 알 수 없다.
그래서 분산이 필요하다.


분산은 어떻게 만들었을까?

"각 값이 평균에서 얼마나 떨어져 있는지"를 재면 되지 않을까?

80  - 120 = -40
95  - 120 = -25
120 - 120 =   0
145 - 120 = +25
160 - 120 = +40

다 더하면? 0이 나온다.
양수와 음수가 상쇄되어버린다. 평균의 정의상 항상 그렇다.

→ 해결책: 제곱해서 음수를 없앤다.

(-40)² = 1600
(-25)² =  625
  (0)² =    0
(+25)² =  625
(+40)² = 1600
합계 = 4450

이걸 5명으로 나눈 값, 그게 분산이다.


분산 공식

$$s^2 = \frac{\sum_{i=1}^{n}(x_i - \bar{x})^2}{n-1}$$

기호 의미

$x_i$ 각 측정값
$\bar{x}$ 표본평균
$(x_i - \bar{x})$ 평균에서 얼마나 떨어졌는지
$(x_i - \bar{x})^2$ 부호 없애려고 제곱
$\sum$ 전부 더하기
$n-1$ 자유도 (아래에서 설명)

2. 왜 n이 아니라 n-1인가 — 자유도(Degrees of Freedom)

모집단 vs 표본, 뭐가 다른가?

모집단 분산 표본 분산

기호 $\sigma^2$ $s^2$
나누는 수 $n$ $n-1$
평균의 성격 진짜 평균 $\mu$ 추정한 평균 $\bar{x}$
하는 일 계산 추정

핵심은 여기 있다.

모집단 분산은 "계산"이고, 표본 분산은 "추정"이다.


자유도란 무엇인가?

5명의 혈당: 80, 95, 120, 145, 160 → 평균 = 120

분산을 계산할 때 이미 평균(120)을 한 번 써버렸다.
그 순간, 5개의 값 중 4개만 자유롭게 변할 수 있다.

80, 95, 120, 145, ?
→ 평균이 120이어야 하니까, 마지막 값은 반드시 160
→ 선택의 여지가 없다

자유도 = 독립적으로 정보를 줄 수 있는 값의 수 = n - 1

평균 추정에 1개를 "써버렸기" 때문에, 자유롭게 움직일 수 있는 값은 n-1개뿐이다.


n으로 나누면 항상 작게 나온다 — 경험이 아닌 수학적 증명

이게 단순한 경험적 관찰인지, 아니면 수학적으로 증명된 건지 궁금했다.
결론: 수학적으로 증명된 것이다.

$n$으로 나눈 표본분산 $\hat{\sigma}^2$의 기댓값을 계산하면:

$(x_i - \bar{x})$를 이렇게 쪼갤 수 있다:

$$x_i - \bar{x} = (x_i - \mu) - (\bar{x} - \mu)$$

제곱하고 합산하면:

$$\sum(x_i - \bar{x})^2 = \sum(x_i - \mu)^2 - n(\bar{x} - \mu)^2$$

기댓값을 씌우면:

$$E\left[\sum(x_i-\bar{x})^2\right] = n\sigma^2 - n \cdot \frac{\sigma^2}{n} = (n-1)\sigma^2$$

따라서:

$$E[\hat{\sigma}^2] = \frac{(n-1)\sigma^2}{n} = \sigma^2 - \frac{\sigma^2}{n}$$

항상 $\sigma^2$보다 $\frac{\sigma^2}{n}$만큼 작게 나온다.

$n-1$로 나누면:

$$E[s^2] = \frac{(n-1)\sigma^2}{n-1} = \sigma^2 \checkmark$$

모집단 분산과 정확히 일치한다. 이걸 불편추정량(Unbiased Estimator) 이라고 한다.


자유도는 여기서 끝이 아니다

분산의 n-1
    ↓
t-분포의 자유도   ← t검정에서 "df=?" 이게 여기서 나온 것
    ↓
F-분포의 자유도   ← ANOVA, 회귀분석 표의 "df" 열
    ↓
카이제곱 자유도   ← 범주형 분석

보건통계 어디를 가도 df(자유도) 가 나오는데, 전부 여기서 출발한다.


3. 기댓값(Expected Value) — E[ ]가 뭔가?

왜 필요한가?

응급실에서 하루 환자 수를 오래 관찰했더니 이런 패턴이 나왔다:

환자 수 확률

8명 20%
10명 30%
12명 30%
14명 20%

"내일 환자가 몇 명일까?" 를 예측하려면
각 경우가 얼마나 자주 일어나는지를 반영해야 한다.

8명  × 0.2 =  1.6
10명 × 0.3 =  3.0
12명 × 0.3 =  3.6
14명 × 0.2 =  2.8
─────────────────
합계        = 11.0명

기댓값 = 확률로 가중치를 준 평균
= 불확실한 상황에서 평균적으로 기대할 수 있는 값


기댓값 공식

$$E[X] = \sum_{i} x_i \cdot P(x_i)$$

기호 의미

$E[X]$ X의 기댓값
$x_i$ 가능한 각각의 값
$P(x_i)$ 그 값이 일어날 확률

일반 평균과의 차이

일반 평균: 모든 값을 동등하게 취급
기댓값:    자주 일어나는 값에 더 많은 가중치

기댓값의 핵심 성질 두 가지

앞으로 회귀분석, 가설검정에서 계속 나온다.

성질 1 — 상수는 밖으로 나온다

$$E[aX] = a \cdot E[X]$$

성질 2 — 합의 기댓값 = 기댓값의 합

$$E[X + Y] = E[X] + E[Y]$$


분산과의 연결

분산도 사실 기댓값으로 정의된다:

$$\sigma^2 = E[(X - \mu)^2]$$

"각 값이 평균에서 떨어진 거리의 제곱"을
"무한히 반복했을 때 평균적으로 기대할 수 있는 값"

이게 분산의 본질이다.


오늘 공부의 핵심 연결고리

분산 → 왜 n-1인가?
         ↓
      자유도 개념
         ↓
      n으로 나누면 항상 σ²보다 작다
         ↓
      수학적 증명에 기댓값 E[ ] 등장
         ↓
      기댓값 = 확률로 가중치를 준 평균
         ↓
      앞으로: 표준오차 → 가설검정 → 회귀계수

공식보다 왜 이 공식이 필요했는지를 먼저 이해하니까
각 개념이 하나의 이야기로 연결되기 시작했다.


📌 다음 포스팅 예고: 표준편차 → 정규분포 → 상관계수
이 세 개를 연결하면 드디어 회귀분석 공식이 보이기 시작한다.

 

 

📖 단계별 추천

STEP 1 — 수학이 재미있다는 감각 되찾기 (순서대로)

번호 책 이유

73 폴리아 → 문제해결 전략 "수학적으로 생각하는 법" 자체를 다룸. 수포자에게 최고의 입문
75 존 내쉬 → 의사결정이론 일상적 맥락, 부담 없음
74 아헨발 → 통계 통계학의 탄생 스토리. 왜 통계를 배우는지 동기부여

STEP 2 — 중학교 수준 감각 회복 (천천히)

번호 책 이유

2 칸토어 → 집합 모든 수학의 언어. 가장 쉬운 개념부터
30 디리클레 → 함수 1 y = f(x) 감각 회복
39 네이피어 → 로그 로그변환 이해의 기초
25 카르다노 → 확률 1 확률의 직관적 이해

STEP 3 — 통계학 직접 기초 (STEP 2 후)

번호 책 이유

46 카르다노 → 확률 2  
47 베르누이 → 확률분포  
52 드무아브르 → 정규분포 통계학의 심장
53 피셔 → 추정 신뢰구간, 최대우도

STEP 4 — 여유가 생기면 (선택)

번호 책 이유

65, 66 뉴턴 → 미분 1, 2 최적화 이해
69 실베스터 → 행렬 회귀분석 수식 이해

⏱ 현실적인 페이스

한 달에 2~3권
  ↓
STEP 1: 1~2개월   ← 부담 없이
STEP 2: 2~3개월   ← 막히면 두 번 읽기
STEP 3: 3~4개월   ← 수업과 병행

어떻게 하다보니 늦깎이 대학원생이 되어 있었다. 

결혼 막 하고 상경하면서 간호정보학을 배우고 싶어서 간호학과 조교로 일하면서 일반대학원에 들어갔는데... 

여러 가지 사정으로 다시 병원에 들어가면서 돌아가질 못했다.

 

마음 한 켠에 늘 짜다만 목도리마냥...

언젠가 마무리 해야지 했던 미완성의 숙제 같은 것이었는데... 남들이 다 하는 이야기와 같이 '시간이 있으면 돈이 없고, 돈이 있으면(있던 때가 있었나?ㅋㅋ) 시간이 없고, 어느새 세 아이의 엄마가 되어 버렸고...' 못할 이유가 몇 만개가 되어 버렸다.

 

그렇지만, 항상 마음으로 바라고 기도하는 것들은 하나님의 때에 들어 주신다는 것을 나는 꼭꼭 믿고 있었다.

혹여는 '그럼, 기회가 오지 않아서 바라는 것을 이루지 못하면, 기도를 들어 주시지 않는건가?' 라고 생각할 수도 있겠다.

나는 기회가 오지 않는다면 그것도 하나님의 응답이라고 생각하려 하긴한다^^.

안 들어 주시는 데에는, 나를 가장 좋은 길로 인도시려는 그분의 뜻이 있겠지라고 생각하려고 노력한다. 만사 심신이 평안해지는 믿음이다ㅎㅎ.

 

다시 SAS BASE이야기로 돌아가야겠다. 대학원 동기 기대표의 제안으로 대학원 다니는 중 꼭 취득하자고 한 자격증들이 있었는데, 그 중 하나가 SAS Base Programming Specialist Certi였다. 아직 대학원에서 SAS 수업을 듣지 않았지만 현재 다니는 직장에서 DM으로 일하면서 업무에 필요해서 SAS를 얕게나마 공부했었다. 정처기나 SQL에 대한 이해가 있어서 SAS 배움에 대한 심리적 진입장벽은 낮은 상태였는데, 그때당시 업무에 필요한 부분만 골라서 SAS를 너무 얕게 공부했다보니 어느 부분에 가면 어렵게 느껴져 '언젠가 각잡고 제대로 공부를 해야지...'했던 것이 일이 너무 바빠 엄두를 못 내고 있었던 차에 너무 좋은 기회라고 생각했다. 이렇게 외적 동기가 주어진 상태에서 여러 사람이 한꺼번에 으쌰으쌰 공부하면 즐겁게 할 수 있을 것 같았다.

 

거기다가, 마침 내가 맡아 기획하고 있는 제품의 후속 기획작이 바로 이 SAS와 통계를 알아야 제대로 완성도 있는 기획을 할 수 있는 제품이라는 사실!!! 대학원에서 보건정보통계학을 공부하게 된것도, SAS 자격증을 준비하면서 조금은 더 제대로 공부하게 된 것도 다 업무를 잘 하기 위한 사전 준비 작업인것 같았고, 뭔가 도랑치고 가재잡는 기분이 들었다.

 

막상 치뤄본 SAS Base 시험은 사실 어렵지도 쉽지도 않았던것 같다. 코드를 짜는 문제들은 문제집에서 나오지 않은 것들이 나와서 당황스러웠지만 침착하게 풀면 풀 수 있는 것이고, 못 풀 것 같은 문제 한 두개는 살짜기 proc sql;...을 시전했다. 사실... 제대로 공부해야지 했지만 업무와 병행하는게 쉽지는 않았고.. 또 우리 회사는 7시 퇴근이고, 회사가 송도인데 집은 서울 동작구라... 야근 안하고 집에 와도 8시 30분 넘고, 고3 막내 픽업해 오면 10시 30분 넘고... 이래 저래 공부 못할 핑계거리가 몇 만개나 되는 것 같았다.

 

그래도 막내 수능 공부할때 둘이 식탁에 앉아서 12시, 1시까지 같이 공부하고, 주말이면 스터디 카페가서 공부하고 하긴했다. 정말 피곤하고 하기 싫으면 자거나 유툽 보면서 막내 수시원서 어떻게 쓸지 컨설던트들로 부터 정보를 습득하며 쉬었다.

코드를 SAS로 실행해봐야 하는데, 고3 녀석 공부 방해할까봐 또 스터디카페에서도 시끄러울까봐 책으로 보고, 노트에다가 적으면서 머리로 코드를 돌리다보니 실습 시간이 좀 많이 부족했던 것 같았다. 그래도 모든 코드들을 직접 노트에 적고 외웠었다.(실습을 많이 안해본 댓가로 manipulate 점수가 상대적으로 낮게 나왔으니 시험 준비하시는 분들은 꼭 코드를 돌려 보시길...)

 

그리고, 아마존에서 비싼 SAS Base 원서도 직구해서 한 번 제대로 읽어보았던건 정말 잘 한것 같다. 문제푸는 요령만 익히는 것이 아닌 SAS에 대해 많이 이해할 수 있었던 좋은 기회였다고 생각한다. 역시 비싼 책은 그 값을 하는구나!!!

 

지금까지 여러 자격증 시험을 봤었지만 가장 효과적인 공부 방법은 '왜 그런가?'에 대한 이해(이 이해가 될락말락하다가 형광등 켜지듯 갑자기 확 이해가 될때 가장 재미를 느끼는것 같다.), 그리고 반복해서 그 이해를 되새김질하고, 기출 문제를 많이 풀어 보는 것이었다. 그냥 이것만 하면 된다.

시간이 없다면 기출문제를 풀고(문제지나 답지에 '왜 그게 답인가?'에 대한 해설이 잘된 것으로 사야한다.), 해설이 잘 이해가 안되면 원론책에서 찾아보고 이해한다.

 

그도 시간이 없다면 걔는 그냥 틀리면 된다. 구더기 잡으려다 초가삼간 다 태울순 없지 않는가?(맞는 비유인지 모르겠지만...) 개념 하나 이해하려다가 없는 시간 다 잡아먹고 나머지 공부를 못하게 되므로 과감하게 버리고 뒤로 넘어가야 한다. 모르는 개념은 살다보면 이해하게 되는 날이 오더라... 이해하고 잊어버리를 반복하면 시간이 지나면서 합격에 가까워지게 되는것 같다.

 

이전에 DM때 SAS 공부한다고 강의 들었던 쏭즈쌤 책도 많은 도움이 되었다. 직강 듣기에는 시간이 허락지 않아 동강을 들을때, 종강하고 2주(3주인가?) 이내에 시험을 치뤄야 한다고 하셨었는데 그 말에 진심 동감한다. 나 역시 지금 강의 들은지 벌써 2년이나 흘렀고 대학원 기대표가 시험보자고 하지 않았다면 시험 볼 생각을 하지 않았을테니까 말이다. 어쨌거나 이번에 다시 한 번 쏭즈쌤 책을 읽고, 문제를 풀면서 많은 도움을 받았다. 

 

잠시 삼천포로 빠지겠다.  내가 전에 글에 썼던가?? 컴활1급 시험 볼때 -- 참고로 컴활 1급 실기 합격률은 생각보다 낮다. 내가 합격했을때는 13%정도였던 것으로 기억한다. 오죽하면 '컴활이 대한상공회의소 주력 시험.'는 말이 돌까! -- 필기 시험을 당일 벼락치기로 오전 근무하고 상공회의소 근처 카페에서 3시간 정도 책 보고 합격했던터라, 실기도 우습게 보고 실기책 대충 훑고 시험 보러 갔다가 몇 번 고배를 마셨었다.

 

인강 수강료 아깝다고 책만 보고 시험 보다가 시험 등록비가 더 많이 나오게 생겼다는 위기감이 들떄쯤 바로 인강을 등록했다. 컴활 강의로 유명한 유동균쌤의 실기 기출해설 동강 3회분 보고 바로 합격했다는... 심지어 엑서스에서 1개 틀렸던 것으로 기억하고 있다.

그 일 이후로, 나는 자격증을 꼭 따고 싶은데, 시간도 아깝다면.. 그냥 인강 듣는 편이다. 인강은 시험보는 요령을 알려 주기도 하지만, 강사가 겪은 수많은 실패담/성공담을 들을 수 있는 정말 꿀같은 기회라고 생각한다.(물론 강사를 잘 찾아야 한다^^)

 

살면서 꼭 자격증이 필요한 것은 아닐테지만... 퀘스트를 수행했다면(관련한 공부를 조금이라도 했거나, 관련 기술을 업무에서 사용했다면) 보상이 따라야 하지 않을까? 자격증은 인벤토리의 아이템 같은거라고 생각한다. 그래서 합격 축하 메일과 함께 저렇게 뱃지가 전달되는 이벤트는 꼭 게임 속에서 퀘스트 수행하고 인벤토리에 아이템을 저장하는 것 같은... 실전같은 느낌이 들어(심지어 나는 게임을 하지 않는데도) 기분이 너무 좋았다.

 

하지만, 역시나 배운 것을 실무에서 사용하면서 다시 되새김질을 하지 않는다면... 빈약한 해마는 지금의 SAS에 대한 이해를 추억으로 고이 접어 두고 잊어 버릴 것이다. 

 

아! 맞다!! 기대표님??? 다음 자격증은 뭐라구요?? 빅분기??

 

한 해가 거의 끝나가는 지금...

자신이 없어 미루고 미루던 certi of MedDRA Coder 시험에 합격했다.

시간이 부족해서 다 풀지도 못한 상태에서 자동 제출된거라 크게 기대하지 않고 떨어질거라 생각했는데...

'통과'라는 단어가 얼마나 반가웠던지... 

 

바쁜 일상 가운데 자격증도 따야 하는 모든 직장인들을 응원한다.

업무상 필요해서 시험 본것이 의도치 않게 '1년 1자격증'이라는 나의 취미생활(?)에 있어 올 해의 목표 달성을 시켜 준것 같아 감사하다.

요즘은 공부도 열심히 하지 않으면서 공부를 너무 많이 하고 있다는 생각때문에 가짜 번아웃에 시달리고 있는데, 다시 심기일전해서 좀 더 분발해야겠다.

일하면서 블로그도 알차게 운영하시는 분들은 정말 대단하신것 같다.

 

게으름이 내 정신을 지배하지 않도록 좀 더 냉철하게 나 자신을 돌아봐야겠다.

올 해에 목표했던 일년일자(일 년에 한 개 자격증 따기)의 목표는 초과달성을 했다.

세 개의 국가자격증(국가기술1개, 국가공인2개)인 정보처리기사, SQLD, ADsP를 땄으니까... 배가 부르다^^.

 

올 한해를 잘 마무리 하고 이젠 내년을 계획해야할 시간이다.

 

내년의 목표는 내가 어찌할 수 없지만, 노력은 할 수 는 있는 '건강'과 노력만이 답인 '영어'이다.

그리고, 새롭게 이직하는 새로운 직장에서 나의 역량을 마음껏 발휘하고 신나게 일하고 싶다.

--  내년에 조기 졸업도 목표였는데... 요즘 공사가 다망하다보니 공부에 동력을 조금 상실했다...

    다시 심기일전하고 조기 졸업을 위해 here and now.. 열공해야겠다. 곧 기말고사니까.

 

새 해에는...

주말에는 남편과 함께 등산도 가야지...

아이들과 차 한잔 마시며 허심탄회하게 이야기를 나누는 시간도 있기를 희망한다.

 

 

아래 글은.... 정처기 공부하면서 많은 도움을 받았던 흥달쌤 카페에 올렸던 합격 후기이다.

 

==============================

 

흥달쌤!! 그리고 스터디 그룹 여러분!!

감사합니다!!

사실 흥달쌤 강의야 이미 명강의로 정평이 나 있어서 말해뭐해 입니다.

필기도 흥달쌤 유투브 기출 강의만 듣고도 합격할 수 있었을 정도로 어찌나 강의 자체가 구조화가 잘되어 있던지.... 정말 유투브 알고리즘에 얼마나 감사했는지 모른답니다.

실기를 위해 Njob의 흥달쌤 강의를 결제했지만, 구슬도 꿰어야 보배라고... 저같은 작심삼일러에게 60강이 넘는 긴 호흡이 필요한 공부량을 보고 끝가지 완강할 수 있을지 자신이없었습니다.

그때 저에게 한 줄기 빛같았던 딩굴뎅굴님의 스터디 그룹 모집 글을 이 카페 게시판에서 보고 냉큼 가입하고 구글 스프레드시트에 미리 짜주신 스케줄대로 강의를 들었습니다.

강의도 어찌나 재미있었던지... 참고로 2배속으로 들으시면 귀여운(?) 제스츄어를 시전하시는 흥달쌤을 보실 수 있으세요^^. 특히 스케줄링 강의하실때 화장실ㅋㅋ에 있는 애 빼낼때요^^... 혼자서 스터디 카페에서 ㅋㅋ거리면서 봤었는데 공부를 이렇게 재밌게 하다니 행복했습니다.

하지만, 2회 실기시험을 3일 앞둔 목요일 몸이 으실으실 안좋았어요. 코로나에 걸렸을까봐 얼른 자가 검사를 했는데 다행히 음성이 나왔죠... 하지만 저녁에 열이 38도 이상으로 오르면서 다음날 양성결과가 나오고 그렇게 동차시 합격의 영광을 꿈꾸던 저희 교만함을 비웃듯 첫 실기 시험의 기회가 날라가 버렸습니다.

감사하게도 N job에서 결시 사유가 타당하다면서 실기수강을 연장해 주었어요. 이번이 마지막이다라고 생각하고 열심히 하고 싶었는데, 코로나 바이러스가 뇌에 침투해서 세포를 어떻게 해 버렸는지 머리가 바보가 된것같이 공부가 안되더라구요. 또 다른 개인적인 일정과 겹쳐서 공부를 열심히 하지 못하고 실기 마지막 보름정도 전 부터 선생님 강의 중 제가 제일 자신 없던 부분만 2배속으로 정말 초집중해서 다시 들었습니다. 그리고, 미리 만들어 둔 카드로 마지막 리뷰를 하고 시험을 봤어요.

시험 전날 어찌나 자신이 없던지... 시험장에 안가고 싶더라구요ㅠㅠ.

하지만, 마지막까지 자리를 지키자.... 떨어지더라도 경험이지... 라고 생각하고 가서 시험을 봤습니다.

1번부터 좌절감을 심어 주더라구요... 천천히 풀어 보면 풀 수도 있었을지 모르겠습니다만, 멘탈관리를 위해 과감하게 패스하고 다음 문제를 풀어 갔습니다. 제일 자신 있었던 데이터베이스 문제를 먼저 풀고 '아싸~'하면서 자신감을 회복하고, 다음 프로그래밍 문제... 그리고 마지막으로 젤 자신 없었던 암기 문제를 풀었습니다.

혹시라도, 저처럼 공부가 부족했다고 자책하면서 시험을 포기하시려는 분이 계시다면 꼭 가셔서 시험을 보시라고 권해드립니다. 제가 시험 보는 날에도 책상 절반이 비었었어요. 저도 포기할려고 했었던걸 기억하면서 안타까운 마음이 들더라구요.

3차시험 앞 두고 열심히 공부하진 못했지만, 2차때 열심히 해 둔 것이 자산이 되어 합격할 수 있었던 것 같습니다.

저같은 의지박약, 작심삼일러는 스터디그룹에 참여하셔서 공부하는 것도 추천드립니다.

저도 했으니 이 글을 읽으시는 분들도 합격하실겁니다.

그리고 제가 공부했던 방식 사진으로 올려 봅니다.

화이팅 하시길 바랍니다!!!

 

형태소 분석을 위해 CounterVectorizer를 생성하면서 문제가 생겼다.

 

# countvectorizer  생성
from sklearn.feature_extraction.text import CountVectorizer

실행시 아래와 같이 에러 메시지가 떴다. 

ImportError: DLL load failed while importing _arpack: 지정된 프로시저를 찾을 수 없습니다.

sklearn을 비롯해, 혹시 몰라 numpy, scipy 등을 재설치 해 보았으나 계속 동일한 에러가 발생했다.

결국 jupyter notebook을 삭제하기 위해 cmd 관리자권한으로 창을 띄우고 python을 실행시켜 보니 아래와 같은 메시지가 출력됐다.

위 CMD 창에 뜬 https://conda.io/activation 

내용을 참조하여 anaconda prompt 상태에서 c:\Anaconda3\Scripts\activate base를 실행시킨다.

 

 

 

 

 

 

 

 

 

 

이제 python을 실행시켰을때, 에러메시지가 뜨지 않는다.(하지만, CMD에서 실행할 경우 위 문제는 해결되지 않는다.)

 

다시 jupyter notebook을 실행시킨후 다시 해당 코드를 실행하면 잘 수행된 것을 확인할 수 있다.(꼭, anaconda prompt에서 jupyter notebook을 실행시켜야 한다.)

결론적으로, 내가 행했던 오류는....

CMD에서 jupyter notebook을 실행했다는 것이다.

Anaconda3 CLI(Anaconda Prompt)에서 jupyter notebook을 실행시켜야 한다.

 

생각해보니 기본중 기본 아닌가?? 똥멍충이같다ㅠㅠㅠ.

실행 터미널에서 [Ctrl + C]

 

요고.요고.요고....

나도 모르게 scroll lock를 눌러버렸다는 사실!!

+ Recent posts