Statistics

Mixed

Author

Sungkyun Cho

Published

November 21, 2024

Load packages
# numerical calculation & data frames
import numpy as np
import pandas as pd

# visualization
import matplotlib.pyplot as plt
import seaborn as sns
import seaborn.objects as so

# statistics
import statsmodels.api as sm

# pandas options
pd.set_option('mode.copy_on_write', True)  # pandas 2.0
pd.options.display.float_format = '{:.2f}'.format  # pd.reset_option('display.float_format')
pd.options.display.max_rows = 7  # max number of rows to display

# NumPy options
np.set_printoptions(precision = 2, suppress=True)  # suppress scientific notation

# For high resolution display
import matplotlib_inline
matplotlib_inline.backend_inline.set_matplotlib_formats("retina")

통계 분석은 크게 세 가지 주제로 나눌 수 있음.

현대적 접근에서는 모호한 모집단에 대해 추론하기보다는 표본 내의 정보만으로 일반화(generalization)을 성취하고자 함.

Simple Regression/Correlation

두 변수 간의 correlation(상관관계)는 두 변수 간의 영향관계에 대한 방향성을 전제하지 않는 반면,
회귀분석은 한 변수가 다른 변수에 영향 미친다는 것을 전체로 하고, 그 영향의 형태와 크기를 분석.

예측변수가 한 개인 회귀분석: Simple Regression

  1. 두 변수 간의 관계(association)을 파악: \(Y=f(X)=b_0 + b_1X\)
  2. 그 관계의 크기(strength)를 측정
    • \(f\)에 의해 \(X\)\(Y\)를 얼마나 정확히 예측할 수 있는가?
    • \(f\)에 의해 \(X\)의 변량이 \(Y\)의 변량을 얼마나 설명할 수 있는가?

Pearson’s correlation coefficient: \(r\)

Linear relationships을 측정

  • x와 y의 선형적 연관성: [-1, 1]
  • x로부터 y를 얼마나 정확히 예측가능한가?
  • x와 y의 정보는 얼마나 중복(redundant)되는가?


Multiple correlation coefficient: \(R\)

Extented correlation: 예측치와 관측치의 pearson’s correlation

  • \(R\)을 제곱한 \(R^2\)가 설명력의 정도를 나타냄

\(r\): Pearson correlation coefficient

  • \(r_{XY} = \displaystyle 1 - \frac{\sum{(z_X - z_Y)^2}}{2n}\)\(z_X, z_Y\) : 각각 standardized \(X, Y\)

\(R\): Multiple correlation coefficient

  • \(Y\)\(\widehat Y\) 의 Pearson correlation 즉, Y와 회귀모형이 예측한 값의 (선형적) 상관 관계의 정도; 회귀모형의 예측의 정확성
  • 다시말하면, 예측변수들의 최적의 선형 조합과 Y의 상관 관계의 정도.

\(R^2\): Coefficient of determination, 결정계수, 설명력

  • 선형모형에 의해 설명된 Y 변량의 비율:
  • 또는 예측변수들의 최적의 선형 조합에 의해 설명된 Y 변량의 비율.

  즉, \(\displaystyle\frac{V(\widehat{Y})}{V(Y)}\) 또는 \(\displaystyle 1 - \frac{V(e)}{V(Y)}\)

Associatiions과 그 strengths 비교

카테고리 변수에 대해서도 비슷하게 생각할 수 있음.
이 경우, 두 그룹 간의 차이에 대한 효과의 크기를 말할 수 있고, \(R^2\) 이외에도 Cohen’s d로 표현할 수 있음.
예를 들어, 결혼과 삶의 만족도 간의 관계(association)와 그 크기(strength)

Important

인과 관계에 대한 섯부른 추론은 금물!
특히, 예측력이 낮은 경우; Leo Breiman의 중요 요지 중 하나

Multiple Regression

예측변수가 2개 이상인 경우: 변수들 간의 진실한 관계를 분석

미혼자에 대한 임금 차별이 있는가? 차별이 의미하는 바는 무엇인가?
연령을 고려한 후에도 기혼자의 임금은 미혼자보다 높은가?
여전히 높다면, 연령을 고려한 후 혹은 연령을 조정한 후(adjusted for age)의 차이는 얼마라고 봐야하는가?

연령을 고려한 임금 차이를 조사하는 방법은 무엇이 있겠는가?; 연령별로 나누어 비교?

Data from the 1985 Current Population Survey

연령을 고려한 마라톤 기록?

70세 노인과 20세 청년이 동일하게 2시간 30분의 기록을 세웠다면?

  • “나이 차이가 큰 두 사람의 기록을 비교하는 것은 공평하지 않아”
  • 나이를 감안한 마라톤 실력?
  • 다시 말하면, 나이와는 무관한/독립적인 마라톤 능력에 대해 말하고자 함
  • 이는 동일한 나이의 사람들로만 제한해서 마라톤 기록을 비교하는 것이 공평한 능력의 비교라고 말하는 것과 같은 이치임

Source: https://doi.org/10.1186/2052-1847-6-31

Regression analysis

예측 모형 vs. 인과 모형

  • 인과적 연관성을 탐구하고자 한다면 매우 신중한 접근을 요함

Source: Cohen, J., Cohen, P., West, S. G., & Aiken, L. S. (2003). Applied multiple regression/correlation analysis for the behavioral sciences (3rd ed.)

교수의 연봉(salary)이 학위를 받은 후 지난 시간(time since Ph.D.)과 출판물의 수(pubs)에 의해 어떻게 영향을 받는가?


Data: c0301dt.csv

acad0 = pd.read_csv("data/c0301dt.csv")
acad0.head(5)
   time  pubs  salary
0     3    18   51876
1     6     3   54511
2     3     2   53425
3     8    17   61863
4     9    11   52926
from statsmodels.formula.api import ols

mod1 = ols("salary ~ time", data=acad0).fit()
mod2 = ols("salary ~ pubs", data=acad0).fit()
mod3 = ols("salary ~ time + pubs", data=acad0).fit()
Intercept   43658.59
time         1224.39
dtype: float64
Intercept   46357.45
pubs          335.53
dtype: float64
Intercept   43082.39
time          982.87
pubs          121.80
dtype: float64

세 모형을 비교하면,

Model 1: \(\widehat{salary} = \$1,224\:time + \$43,659\)
Model 2 : \(\widehat{salary} = \$336\:pubs + \$46,357\)
Model 3: \(\widehat{salary} = \$983\:time + \$122\:pubs + \$43,082\)

  • 연차(time)의 효과는 $1,224에서 $984로 낮아졌고,
  • 논문수(pubs)의 효과는 $336에서 $122로 낮아졌음.

  • 교수들의 연차와 그들이 쓴 논문 수는 깊이 연관되어 있으며 (r = 0.66), 두 변수의 redunancy가 각 변수들의 효과를 변화시킴.
  • 두 예측 변수의 산술적 합으로 연봉을 예측하므로 각 예측변수의 효과는 수정될 수 밖에 없음.
  • 수학적으로 보면, 각 예측변수의 기울기는 다른 예측변수의 값에 상관없이 일정하므로, 다른 예측변수들을 (임의의 값에) 고정시키는 효과를 가짐
  • 즉, 다른 변수와는 독립적인, 고유한 효과를 추정하게 됨

각 회귀계수를 partial regression coefficient (부분 회귀 계수) 라고 부름.

부분 회귀 계수의 첫번째 해석:

  • 만약 논문 수가 일정할 때, 예를 들어 10편의 논문을 쓴 경우만 봤을 때, 연차가 1년 늘 때마다 연봉은 $984 증가함; 평면의 선형모형을 가정했기에 이 관계는 논문 수에 상관없음.
  • 연차가 일정할 때, 예를 들어 연차가 12년차인 경우만 봤을 때, 논문이 1편 늘 때마다 연봉은 $122 증가함; 평면의 선형모형을 가정했기에 이 관계는 연차에 상관없음.

이는 다른 변수를 고려 (통제, controlling for) 했을 때 혹은 다른 변수의 효과를 제거 (partial out) 했을 때, 각 변수의 고유한 효과를 의미함; holding constant, controlling for, partialing out, adjusted for, residualizing

뒤집어 말하면, 연차만 고려했을때 연차가 1년 늘면 $1,224 연봉이 증가하는 효과는 연차가 늘 때 함께 늘어나는 논문 수의 효과가 함께 섞여 나온 효과라고 말할 수 있음.

이는 인과관계에 있는 변수들의 진정한 효과를 찾는 것이 얼마나 어려운지를 보여줌

부분 회귀 계수에 대한 두번째 해석

  • 다른 변수들이 partial out 된 후의 효과.
  • 실제로 $122는 연차로 (선형적으로) 예측/설명되지 않는 논문수(residuals)로 [연차로 예측/설명되지 않는] 연봉을 예측할 때의 기울기

Direct and Indirect Effects

만약, 다음과 같은 인과모형을 세운다면,

  • 연차가 연봉에 미치는 효과가 두 경로로 나뉘어지고,
  • 연차 \(\rightarrow\) 연봉: 직접효과 $983
  • 연차 \(\rightarrow\) 논문 \(\rightarrow\) 연봉: 간접효과 1.98 x $122 = $241.56
  • 두 효과를 더하면: $983 + $241.56 = $1224.56 = 논문수를 고려하지 않았을 때 연차의 효과
    • 즉, 연차가 1년 늘때 연봉이 $1224 증가하는 것은 연차 자체의 효과($983)와 논문의 증가에 따른 효과($241)가 합쳐져 나온 결과라고 말할 수 있음.
  • 이 때, 논문 수를 통한 효과는 연차가 연봉에 미치는 하나의 기제(mechanism)이라고 볼 수 있음.

Strength of Associations

연차와 논문 수로 연봉을 예측했을 때의 \(R^2 = 0.53\)

Correlations with salary

\(r\) (simple) \(pr\) (partial) \(sr\) (semi-partial)
time 0.71 0.53 0.43
pubs 0.59 0.23 0.16

 

\(r^2\) \(pr^2\) \(sr^2\)
time 0.50 0.28 0.18
pubs 0.35 0.05 0.03

만약, 예를 들어 연차의 효과 $1224이 논문수를 고려했을 때 줄어든($983) 수준을 훨씬 넘어 통계적으로 유의하지 않을 정도로 0에 가까워진다면, 연차의 효과는 모두 논문의 효과를 거쳐 나타나는 것이라고 말할 수 있음. 이 때, 완전 매개 (fully mediate)한다고 표현함.

Spurious Relationships

반대로, 만약 다음과 같이 연차를 고려했을 때 논문수(pubs)의 효과가 거의 사라진다면,
논문수(pubs)와 연봉(salary)의 관계는 spurious한 관계라고 잠정적으로 말할 수 있음.

연차를 논문수와 연봉의 common cause 라고 말하며, confounding이 되어 논문수와 연봉의 인과관계는 실제로 없을 수 있음을 암시함.

Important

요약하면,

  • 회귀분석을 통해, 변수들 간의 관계를 파악하고, 그 관계의 크기를 추정
  • 그 관계가 얼마나 일반화될 수 있는지를 추론
  • 인과 관계 추론에 대한 위험성을 인지하고, 신중한 접근이 필요함

Saratoga Houses dataset

\(\widehat{price} = 36668.9 + 125.4 \cdot livingArea - 14196.8 \cdot bedrooms\)

비슷한 넓이의 집들로 나누어 보면,

Uncertainty

관찰자가 관찰한 대상으로부터 얻은 결과를 관찰하지 않은 더 넓은 대상으로 일반화할 수 있는가?
가령, 다음과 같이 150명에 대해 조사한 “연령이 임금에 미치는 효과”를 일반화 할 수 있는가?
한 나라의 국민 전체?

Statistical inference (통계적 추론)

통계학의 추론(statistical inference)은 작은 샘플(sample)로부터 얻은 분석 결과를 바탕으로 모집단(population)이라고 부르는 전체에 대해 말하고자 하는 시도에서 비롯되었음

  • 농업 분야에서 시작; 비료/종자의 효과
  • 사람에게도 적용될 수 있는가?

앞서 논의한 모든 내용은 “특정 샘플” 내에서 변수들 간의 관계에 대한 분석임.
통계적 추론은 수많은 같은 수의 샘플들, 가령 N = 150인 즉, 150명으로 이루어진 샘플들을 반복적으로 관찰한다면 그 샘플들 간의 편차들이 어떠하겠는가에 대한 논의임.


Source: The Truthful Art by Albert Cairo.

  • 샘플들로부터 나타나는 임금 차이 값의 분포 >> 남녀 임금 차이가 편차는 어떠한가?
  • 이 분포를 sampling distribution(표본 분포)이라고 부름

  • 평균이 $2.27이고, 임금 차이 값들의 95%가 $1.47 ~ $3.04 범위에 있음을 알 수 있음.
  • 연구자가 관찰한 샘플로부터 연구자는 매우 큰 확신(95%)을 갖고 남녀의 시간당 임금의 차이는 1.47달러에서 3.04달러 사이에 있을 것이라고 말할 수 있음.

비슷하게, 나이(age)와 시간당 임금(wage)의 true relationship에 대해서도
샘플마다 age와 wage의 관계는 다르게 나타날 것임 (두번째 그림).

  • 예를 들어, 샘플들로부터 나타나는 기울기들의 분포를 살펴봄으로써 (세번째 그림): sampling distribution
  • 이 분포에 따르면 평균이 0.066이고, 기울기 값들의 95%가 0.005 ~ 0.140 범위에 있음을 알 수 있음.
  • 연구자가 관찰한 샘플로부터 연구자는 (age와 wage의 선형성을 가정한다면), 매우 큰 확신을 갖고 나이가 10세 늘때마다 시간당 임금의 증가율은 0.05에서 1.4달러 사이에 있을 것이라고 말할 수 있음.


Source: The Truthful Art by Albert Cairo.

Hypothesis testing

Null hypothesis(영가설)에 대한 테스트
즉, coefficient가 0인지 아닌지에 대한 테스트

cp3.csv

from statsmodels.formula.api import ols
cps = pd.read_csv('data/cps3.csv')
mod = ols("wage ~ married + sex + age", data=cps).fit()
mod.summary()
OLS Regression Results
Dep. Variable: wage R-squared: 0.125
Model: OLS Adj. R-squared: 0.107
Method: Least Squares F-statistic: 6.956
Date: Tue, 26 Mar 2024 Prob (F-statistic): 0.000208
Time: 23:01:35 Log-Likelihood: -433.48
No. Observations: 150 AIC: 875.0
Df Residuals: 146 BIC: 887.0
Df Model: 3
Covariance Type: nonrobust
coef std err t P>|t| [0.025 0.975]
Intercept 4.4946 1.349 3.332 0.001 1.829 7.161
married[T.Single] -0.3592 0.764 -0.470 0.639 -1.870 1.152
sex[T.M] 2.4337 0.721 3.374 0.001 1.008 3.859
age 0.0880 0.031 2.834 0.005 0.027 0.149
Omnibus: 31.384 Durbin-Watson: 2.127
Prob(Omnibus): 0.000 Jarque-Bera (JB): 45.207
Skew: 1.130 Prob(JB): 1.53e-10
Kurtosis: 4.458 Cond. No. 153.


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

t값에 대한 해석

예측변수 \(X_j\) 에 대해서 모집단의 회귀계수 \(b_j\) 에 대한 표본 분포는 평균이 \(b_j\) 인 정규분포를 따르고, 표준편차, 즉 standard error는 근사적으로 다음과 같음.

\(\displaystyle SE^2(b_j) = \frac{{MS}_{residual}}{N \cdot Var(X_j) \cdot (1 - R^2_j)}, ~(df = N-k-1)\)

  • 표본이 클수록
  • 평균 잔차가 작을수록
  • jth 예측변수의 값이 퍼져 있을수록
  • 다른 예측변수들로부터 jth 예측변수가 예측되지 못할수록; 즉 다른 변수들과 correlate되지 않을수록

Source: Wikipedia, Student’s t-distribution

정규 분포의 확률값

Source: The Truthful Art by Albert Cairo

사람 키의 분포

Source: Human Height