최소 자승법 (OLS, Ordinary Least Squares Method)
최소제곱법, 또는 최소자승법, 최소제곱근사법, 최소자승근사법(method of least squares, least squares approximation)
OLS(Ordinary Least Squares) 분석은 회귀 분석의 한 방법으로, 주어진 데이터에 가장 적합한 직선을 찾아내는 데 사용됩니다.
이 방법은 독립 변수와 종속 변수 간의 관계를 모델링하여 예측할 수 있도록 도와줍니다. OLS는 주로 다음과 같은 과정을 포함합니다:
1. 모델 정의
- 일반적인 (다중) 선형 회귀 모델은 다음과 같은 형태로 표현됩니다:
\[
Y = \beta_0 + \beta_1X_1 + \beta_2X_2 + ... + \beta_nX_n + \epsilon
\]
여기서:
- \( Y \): 종속 변수
- \( X_1, X_2, ..., X_n \): 독립 변수
- \( \beta_0 \): 절편 (intercept)
- \( \beta_1, \beta_2, ..., \beta_n \): 기울기 (coefficients)
- \( \epsilon \): 오차항 (error term)
2. 최소 제곱법
- OLS의 주요 목표는 오차의 제곱합을 최소화하는 것입니다. 즉, 실제 값과 예측 값 간의 차이를 제곱하여 모두 더한 값을 최소화합니다.
이를 수식으로 표현하면:
\[
\text{minimize} \quad \sum (Y_i - \hat{Y_i})^2
\]
여기서 \( \hat{Y_i} \)는 예측된 값입니다.
3. 회귀 계수 추정
- OLS 분석을 통해 기울기 (\( \beta \))와 절편 (\( \beta_0 \))을 추정합니다.
이러한 계수는 데이터의 관계를 나타내며, 독립 변수가 종속 변수에 미치는 영향을 해석하는 데 사용됩니다.
4. 모델 평가
- 모델의 적합성을 평가하기 위해 여러 가지 지표를 사용할 수 있습니다. 일반적으로 사용되는 지표는 다음과 같습니다:
- R-squared: 모델이 데이터를 얼마나 잘 설명하는지를 나타내는 비율입니다.
- F-test: 전체 회귀 모델의 유의성을 검정합니다.
- t-test: 각 회귀 계수의 유의성을 검정합니다.
5. 가정 검토
OLS는 몇 가지 가정을 기반으로 합니다:
- 선형성: 독립 변수와 종속 변수 간의 관계가 선형이다.
- 독립성: 오차항은 서로 독립적이다.
- 등분산성: 오차항의 분산이 일정하다.
- 정규성: 오차항이 정규 분포를 따른다.
이러한 가정을 검토하여 모델이 적합한지를 확인합니다.
6. 예측 및 해석
- 회귀 모델을 사용하여 새로운 데이터를 예측하고, 회귀 계수를 해석하여 각 독립 변수가 종속 변수에 미치는 영향을 설명합니다.
OLS 분석은 통계학과 머신러닝에서 널리 사용되며, 데이터 분석 및 예측에 유용한 도구입니다.
데이터 분석을 진행하기 위해서는 R, Python 등 다양한 프로그래밍 언어와 라이브러리를 활용할 수 있습니다.
예를 들어, Python의 `statsmodels` 또는 `scikit-learn` 라이브러리를 사용할 수 있습니다.
7. 예시
변수가 하나인 경우의 OLS(Ordinary Least Squares) 분석에 대해 설명하기 위해 간단한 예시를 들어 보겠습니다.
집의 면적과 가격 간의 관계를 분석하는 경우를 생각해 보겠습니다.
예시: 집 가격 예측
데이터 설정
다음과 같은 데이터를 가정해 보겠습니다:
| 집 면적 (X, 제곱미터) | 집 가격 (Y, 백만 원) | |----------------------|----------------------| | 50 | 30 | | 60 | 35 | | 70 | 40 | | 80 | 50 | | 90 | 55 |
1. 모델 정의
이 경우, 종속 변수 \(Y\)는 집 가격, 독립 변수 \(X\)는 집 면적입니다. 선형 회귀 모델은 다음과 같이 정의할 수 있습니다:
\[
Y = \beta_0 + \beta_1X + \epsilon
\]
여기서:
- \(Y\): 집 가격
- \(X\): 집 면적
- \(\beta_0\): 절편 (intercept)
- \(\beta_1\): 기울기 (slope)
- \(\epsilon\): 오차항
2. 최소 제곱법
OLS의 목표는 오차 제곱합을 최소화하는 것입니다.
각 데이터 포인트에 대해 예측된 가격과 실제 가격 간의 차이를 제곱하여 모두 더한 값을 최소화합니다.
상세 계산 과정은 댓글을 참고해 주세요.
3. 회귀 계수 추정
일반적으로 R 또는 Python과 같은 프로그래밍 언어를 사용하여 회귀 분석을 수행합니다.
import numpy as np # 데이터 설정 X = np.array([50, 60, 70, 80, 90]) Y = np.array([30, 35, 40, 50, 55]) # 평균 계산 X_mean = np.mean(X) Y_mean = np.mean(Y) # 기울기 (beta_1) 계산 numerator = np.sum((X - X_mean) * (Y - Y_mean)) denominator = np.sum((X - X_mean) 2) beta_1 = numerator / denominator # 절편 (beta_0) 계산 beta_0 = Y_mean - beta_1 * X_mean # 결과 출력 print(f"기울기 (beta_1): {beta_1}") print(f"절편 (beta_0): {beta_0}")
기울기 (beta_1): 0.65
절편 (beta_0): -3.5
Python의 `statsmodels` 라이브러리를 사용하여 OLS 회귀 분석을 수행할 수 있습니다. 아래는 `statsmodels`를 사용한 간단한 예제 코드입니다.
OLS 회귀 분석 예제
먼저, 필요한 라이브러리를 설치해야 합니다. 만약 `statsmodels`가 설치되어 있지 않다면 다음 명령어로 설치할 수 있습니다.
코드 예제
import numpy as np import pandas as pd import statsmodels.api as sm # 데이터 설정 X = np.array([50, 60, 70, 80, 90]) Y = np.array([30, 35, 40, 50, 55]) # X를 데이터프레임으로 변환하고 상수항 추가 X = sm.add_constant(X) # 절편을 위해 상수항 추가 # OLS 모델 적합 model = sm.OLS(Y, X) results = model.fit() # 결과 출력 print(results.summary())
코드 설명
1. 데이터 설정: 집 면적(X)과 집 가격(Y)의 데이터를 NumPy 배열로 설정합니다.
2. 상수항 추가: `sm.add_constant(X)`를 사용하여 상수항을 추가합니다. 이는 회귀 방정식에서 절편을 추정하는 데 필요합니다.
3. OLS 모델 적합: `sm.OLS(Y, X)`를 통해 OLS 모델을 정의하고, `fit()` 메서드를 사용하여 모델을 적합시킵니다.
4. 결과 출력: `results.summary()`를 호출하여 회귀 분석 결과를 요약하여 출력합니다.
출력 예시
실행하면 다음과 같은 결과를 얻을 수 있습니다:
OLS Regression Results ============================================================================== Dep. Variable: y R-squared: 0.980 Model: OLS Adj. R-squared: 0.976 Method: Least Squares F-statistic: 255.2 Date: ... Prob (F-statistic): 3.86e-05 Time: ... Log-Likelihood: -7.3058 No. Observations: 5 AIC: 18.62 Df Residuals: 3 BIC: 18.63 Df Model: 1 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ const -3.5000 4.077 -0.859 0.439 -14.260 7.260 x1 0.6500 0.041 16.007 0.000 0.561 0.739 ============================================================================== Omnibus: 0.893 Durbin-Watson: 2.672 Prob(Omnibus): 0.638 Jarque-Bera (JB): 0.633 Skew: -0.614 Prob(JB): 0.428 Kurtosis: 1.526 Cond. No. 270. ============================================================================== Notes: [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
4. 모델 해석
주요 결과 해석
- coef: `const`는 절편 \(\beta_0\) -3.5 이고, `x1`는 기울기 \(\beta_1\) 0.65 입니다. 출력된 값이 수동 계산 결과와 일치합니다.
- R-squared: 모델의 설명력을 나타냅니다. 1에 가까울수록 모델이 데이터 변동성을 잘 설명한다는 의미입니다.
이 과정을 통해 `statsmodels`를 사용하여 OLS 회귀 분석을 수행하고 결과를 해석할 수 있습니다.
5. 예측
이제 이 모델을 사용하여 새로운 집 면적에 대한 가격을 예측할 수 있습니다. 예를 들어, 면적이 75 제곱미터인 집의 가격을 예측하면:
\[
\hat{Y} = -3.5 + 0.65 \times 75 = 42.25 \text{ 백만 원}
\]
6. 가정 검토
OLS 분석을 통해 얻은 모델이 유효한지 확인하기 위해서는 다음과 같은 가정을 검토해야 합니다:
- 선형성: 독립 변수와 종속 변수 간의 관계가 선형인지 확인합니다.
- 독립성: 오차항이 서로 독립적인지 확인합니다.
- 등분산성: 오차항의 분산이 일정한지 확인합니다.
- 정규성: 오차항이 정규 분포를 따르는지 확인합니다.
이렇게 해서 변수 하나인 경우의 OLS 분석에 대해 설명해 보았습니다. 이 방법은 데이터 분석, 예측 및 통계적 모델링에서 매우 유용하게 활용됩니다.
참고 링크
https://ko.wikipedia.org/wiki/%EC%B5%9C%EC%86%8C%EC%A0%9C%EA%B3%B1%EB%B2%95
http://navercast.naver.com/contents.nhn?rid=22&contents_id=3352
댓글 3
-
-
-
본문 예시 OLS 계산 과정, 상세 설명
1. 데이터
- X = [50, 60, 70, 80, 90]
- Y = [30, 35, 40, 50, 55]2. 평균 계산
- \( X \)의 평균은:
\[
X_{\text{mean}} = \frac{50 + 60 + 70 + 80 + 90}{5} = 70
\]
- \( Y \)의 평균은:
\[
Y_{\text{mean}} = \frac{30 + 35 + 40 + 50 + 55}{5} = 42
\]3. 기울기 ($ \beta_1 $) 계산
- 분자 (numerator):
\[
\sum(X - X_{\text{mean}}) \times (Y - Y_{\text{mean}})
\]
각각의 값은:
- \( X_1 - X_{\text{mean}} = 50 - 70 = -20 \)
- \( Y_1 - Y_{\text{mean}} = 30 - 42 = -12 \)
- \( (-20) \times (-12) = 240 \)- \( X_2 - X_{\text{mean}} = 60 - 70 = -10 \)
- \( Y_2 - Y_{\text{mean}} = 35 - 42 = -7 \)
- \( (-10) \times (-7) = 70 \)- \( X_3 - X_{\text{mean}} = 70 - 70 = 0 \)
- \( Y_3 - Y_{\text{mean}} = 40 - 42 = -2 \)
- \( (0) \times (-2) = 0 \)- \( X_4 - X_{\text{mean}} = 80 - 70 = 10 \)
- \( Y_4 - Y_{\text{mean}} = 50 - 42 = 8 \)
- \( 10 \times 8 = 80 \)- \( X_5 - X_{\text{mean}} = 90 - 70 = 20 \)
- \( Y_5 - Y_{\text{mean}} = 55 - 42 = 13 \)
- \( 20 \times 13 = 260 \)이들을 모두 더하면:
\[
240 + 70 + 0 + 80 + 260 = 650
\]- 분모 (denominator): \( X \)의 편차 제곱의 합:
\[
\sum(X - X_{\text{mean}})^2 = (-20)^2 + (-10)^2 + 0^2 + 10^2 + 20^2
\]
각각의 값은:
\[
(-20)^2 = 400, \quad (-10)^2 = 100, \quad 0^2 = 0, \quad 10^2 = 100, \quad 20^2 = 400
\]
이들을 모두 더하면:
\[
400 + 100 + 0 + 100 + 400 = 1000
\]- 기울기 ($\beta_1$):
\[
\beta_1 = \frac{\text{numerator}}{\text{denominator}} = \frac{650}{1000} = 0.65
\]4. 절편 ($ \beta_0 $) 계산
\[
\beta_0 = Y_{\text{mean}} - \beta_1 \times X_{\text{mean}} = 42 - 0.65 \times 70 = 42 - 45.5 = -3.5
\]5. 결과
- 기울기 \( \beta_1 = 0.65 \)
- 절편 \( \beta_0 = -3.5 \)이렇게 찾아진 \( \beta_1 = 0.65 \)와 \( \beta_0 = -3.5 \) 값을 이용해 선형 회귀 방정식을 완성할 수 있습니다.
-
-
-
최소자승법(Least Squares Method, LSM)의 개념은 비선형 회귀 등 다른 회귀 방정식에도 적용 가능합니다.
선형 회귀에서의 최소자승법:
- 선형 회귀는 \( y = a + bx \)와 같은 선형 방정식을 찾기 위한 것이며, 이 경우 최소자승법은 각 데이터 포인트와 회귀 직선 간의 오차(잔차)를 최소화하기 위해 사용됩니다.비선형 회귀에서의 최소자승법:
- 비선형 회귀에서도 최소자승법은 오차 제곱합을 최소화하는 원리는 동일합니다. 예를 들어, \( y = a \cdot e^{bx} \) 또는 다항 회귀 \( y = a + bx + cx^2 \)와 같은 비선형 모델에서도 최소자승법을 통해 가장 적합한 곡선을 찾을 수 있습니다.다만, 비선형 회귀에서는 최적화 알고리즘을 통해 적합한 해를 찾아야 할 때도 있습니다.
즉, 최소자승법은 선형 회귀뿐만 아니라 비선형 회귀 등 다양한 회귀 모델에서 적용 가능합니다.
-
독립변수가 2개인 경우의 OLS 예시
독립변수가 2개인 경우, 즉 다중 선형 회귀(Multiple Linear Regression) 모델을 사용하여 두 개의 독립변수와 하나의 종속변수 간의 관계를 분석할 수 있습니다.
다음은 이 과정을 수학적으로 설명하는 예시입니다.
모델 설정
다중 선형 회귀의 모델은 다음과 같이 설정됩니다:
\[
Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \epsilon
\]
- \(Y\): 종속변수 (예: 집 가격)
- \(X_1\): 첫 번째 독립변수 (예: 집 면적)
- \(X_2\): 두 번째 독립변수 (예: 방의 개수)
- \(\beta_0\): 절편
- \(\beta_1\): \(X_1\)에 대한 기울기
- \(\beta_2\): \(X_2\)에 대한 기울기
- \(\epsilon\): 오차항
데이터 예시
데이터는 다음과 같이 구성될 수 있습니다:
| 면적 (\(X_1\)) | 방 개수 (\(X_2\)) | 가격 (\(Y\)) |
|----------------|------------------|---------------|
| 50 | 1 | 30 |
| 60 | 2 | 35 |
| 70 | 2 | 40 |
| 80 | 3 | 50 |
| 90 | 3 | 55 |
최소제곱법을 사용한 계수 추정
1. 잔차 제곱합:
OLS 방법을 사용하여 잔차의 제곱합을 최소화하는 계수 \(\beta_0\), \(\beta_1\), \(\beta_2\)를 찾습니다.
잔차 제곱합 \(S\)는 다음과 같이 정의됩니다:
\[
S(\beta_0, \beta_1, \beta_2) = \sum_{i=1}^{n} (Y_i - (\beta_0 + \beta_1 X_{1,i} + \beta_2 X_{2,i}))^2
\]
2. 편미분:
계수에 대한 잔차 제곱합을 최소화하기 위해 각각의 계수에 대해 편미분을 수행합니다.
- 절편에 대한 편미분:
\[
\frac{\partial S}{\partial \beta_0} = -2 \sum (Y_i - (\beta_0 + \beta_1 X_{1,i} + \beta_2 X_{2,i})) = 0
\]
- 첫 번째 독립변수에 대한 편미분:
\[
\frac{\partial S}{\partial \beta_1} = -2 \sum (Y_i - (\beta_0 + \beta_1 X_{1,i} + \beta_2 X_{2,i})) X_{1,i} = 0
\]
- 두 번째 독립변수에 대한 편미분:
\[
\frac{\partial S}{\partial \beta_2} = -2 \sum (Y_i - (\beta_0 + \beta_1 X_{1,i} + \beta_2 X_{2,i})) X_{2,i} = 0
\]
3. 계수 추정:
각 편미분을 0으로 설정하고, 시스템의 방정식을 풀어 최적의 \(\beta_0\), \(\beta_1\), \(\beta_2\) 값을 얻습니다.
이 과정은 연립방정식의 형태로 나타납니다.
다중 회귀의 해석
- \(\beta_1\)는 집 면적이 1단위 증가할 때 집 가격이 얼마나 증가하는지를 나타내고,
- \(\beta_2\)는 방 개수가 1개 증가할 때 집 가격이 얼마나 증가하는지를 나타냅니다.
- 절편 \(\beta_0\)는 두 독립변수 모두가 0일 때의 예상 집 가격입니다.
결론
독립변수가 2개인 경우, 다중 선형 회귀를 통해 두 변수의 영향을 동시에 고려할 수 있습니다.
잔차 제곱합(SSE)을 최소화하기 위해 각 계수에 대해 편미분을 수행하여 각 계수가 잔차에 미치는 영향을 분석합니다.
이 과정에서 편미분 값을 0으로 두고 연립 방정식을 세워 최적의 회귀 계수(β₀, β₁, β₂ 등)를 찾습니다.
최종적으로는 여러 독립변수 간의 상호작용을 분석할 수 있으며, 이와 같은 다중 회귀 분석을 실제로 수행하는 데는 Python의 `statsmodels` 라이브러리를 사용하여 간단하게 계수를 구할 수 있습니다.
이를 통해 데이터 분석가나 연구자는 여러 변수의 영향을 효과적으로 평가하고 모델링할 수 있습니다.