회귀분석은 하나 이상의 독립 변수와 종속 변수 간의 관계를 분석하고 모델링하는 통계 기법입니다. 주로 예측과 변수들 간의 관계를 파악하는 데 사용됩니다. 회귀분석에는 단순회귀분석과 다중회귀분석 등 여러 종류가 있습니다.
\(\)1. 단순회귀분석 (Simple Linear Regression)
단순회귀분석은 하나의 독립 변수와 하나의 종속 변수 간의 선형 관계를 분석합니다. 예를 들어, 광고비(독립 변수)가 매출액(종속 변수)에 미치는 영향을 분석할 수 있습니다.
회귀식:
\[ Y = \beta_0 + \beta_1 X + \epsilon \]
여기서:
- \( Y \): 종속 변수
- \( X \): 독립 변수
- \( \beta _0 \) : Y 절편 (회귀식이 Y축과 만나는 점)
- \( \beta _1 \): 기울기 (독립 변수 X의 변화가 종속 변수 Y에 미치는 영향)
- \( \epsilon \): 오차 항 (예측 값과 실제 값의 차이)
2. 다중회귀분석 (Multiple Linear Regression)
다중회귀분석은 두 개 이상의 독립 변수와 종속 변수 간의 관계를 분석합니다. 예를 들어, 광고비, 가격, 계절 등이 매출액에 미치는 영향을 분석할 수 있습니다.
회귀식:
\[ Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_n X_n + \epsilon \]
여기서:
- \( X_1, X_2, \cdots, X_n \): 독립 변수들
회귀분석의 과정
- 데이터 수집: 분석하려는 변수에 대한 데이터를 수집합니다.
- 모델 설정: 회귀모델을 설정하고 회귀식을 만듭니다.
- 회귀분석 수행: 데이터를 사용해 회귀모델을 학습시킵니다.
- 모델 평가: R², Adjusted R², MSE(평균 제곱 오차) 등 지표를 통해 모델의 성능을 평가합니다.
- 결과 해석: 회귀계수(β 값)를 해석하여 독립 변수들이 종속 변수에 미치는 영향을 파악합니다.
예제
다음은 Python을 사용한 단순회귀분석 예제입니다.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 예제 데이터 생성
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
# 모델 학습
reg = LinearRegression()
reg.fit(X, y)
y_pred = reg.predict(X)
# 회귀계수
print('절편 (Intercept):', reg.intercept_)
print('기울기 (Slope):', reg.coef_)
# 모델 평가
print('Mean squared error:', mean_squared_error(y, y_pred))
print('Coefficient of determination (R²):', r2_score(y, y_pred))
# 결과 시각화
plt.scatter(X, y, color='blue')
plt.plot(X, y_pred, color='red', linewidth=2)
plt.title('Linear Regression Example')
plt.xlabel('Independent variable (X)')
plt.ylabel('Dependent variable (y)')
plt.show()
이 예제에서는 임의로 생성한 데이터에 대해 단순회귀분석을 수행하고, 절편과 기울기를 출력한 후, 실제 데이터와 회귀직선을 시각화합니다. 이를 통해 독립 변수 X가 종속 변수 y에 미치는 영향을 파악할 수 있습니다.
회귀분석을 R에서 수행하는 코드를 제공해드리겠습니다. 예제 데이터로 간단한 단순회귀분석과 다중회귀분석을 수행해보겠습니다.
단순회귀분석 예제
# 데이터 생성
set.seed(0)
X <- 2 * runif(100)
y <- 4 + 3 * X + rnorm(100)
# 데이터 프레임으로 변환
data <- data.frame(X, y)
# 단순회귀모델 적합
model <- lm(y ~ X, data=data)
# 모델 요약
summary(model)
# 회귀선 시각화
plot(data$X, data$y, main="Linear Regression Example",
xlab="Independent Variable (X)", ylab="Dependent Variable (y)")
abline(model, col="red")
다중회귀분석 예제
# 데이터 생성
set.seed(0)
X1 <- 2 * runif(100)
X2 <- 3 * runif(100)
y <- 4 + 3 * X1 + 2 * X2 + rnorm(100)
# 데이터 프레임으로 변환
data <- data.frame(X1, X2, y)
# 다중회귀모델 적합
model <- lm(y ~ X1 + X2, data=data)
# 모델 요약
summary(model)
# 다중회귀 시각화 (3D)
library(scatterplot3d)
s3d <- scatterplot3d(data$X1, data$X2, data$y, pch=16, highlight.3d=TRUE, type="h")
s3d$plane3d(model)
코드 설명
- 데이터 생성 및 변환
set.seed(0)
: 난수 생성을 위한 시드 설정.runif()
: 균등 분포를 따르는 난수 생성.data.frame()
: 데이터를 데이터 프레임으로 변환.
- 단순회귀모델 적합
lm()
: 선형 회귀 모델을 적합.summary()
: 모델의 요약 통계량을 출력.plot()
,abline()
: 데이터를 시각화하고 회귀선을 추가.
- 다중회귀모델 적합
- 단순회귀모델과 동일하지만,
lm(y ~ X1 + X2, data=data)
를 사용하여 두 개 이상의 독립 변수를 포함. scatterplot3d
패키지를 사용하여 3D 시각화.
이 코드는 R에서 회귀분석을 수행하는 기본적인 방법을 보여줍니다. 실제 데이터에 맞춰 변수를 변경하여 사용하면 됩니다.