- 세상의 모든 계산기 수학, 과학, 공학 이야기 수학
최소 자승법 (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` 라이브러리를 사용하여 간단하게 계수를 구할 수 있습니다.
이를 통해 데이터 분석가나 연구자는 여러 변수의 영향을 효과적으로 평가하고 모델링할 수 있습니다.