회귀분석(Regression)

회귀분석은 하나 이상의 독립 변수와 종속 변수 간의 관계를 분석하고 모델링하는 통계 기법입니다. 주로 예측과 변수들 간의 관계를 파악하는 데 사용됩니다. 회귀분석에는 단순회귀분석과 다중회귀분석 등 여러 종류가 있습니다.

\(\)

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 \): 독립 변수들

회귀분석의 과정

  1. 데이터 수집: 분석하려는 변수에 대한 데이터를 수집합니다.
  2. 모델 설정: 회귀모델을 설정하고 회귀식을 만듭니다.
  3. 회귀분석 수행: 데이터를 사용해 회귀모델을 학습시킵니다.
  4. 모델 평가: R², Adjusted R², MSE(평균 제곱 오차) 등 지표를 통해 모델의 성능을 평가합니다.
  5. 결과 해석: 회귀계수(β 값)를 해석하여 독립 변수들이 종속 변수에 미치는 영향을 파악합니다.

예제

다음은 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)

코드 설명

  1. 데이터 생성 및 변환
  • set.seed(0): 난수 생성을 위한 시드 설정.
  • runif(): 균등 분포를 따르는 난수 생성.
  • data.frame(): 데이터를 데이터 프레임으로 변환.
  1. 단순회귀모델 적합
  • lm(): 선형 회귀 모델을 적합.
  • summary(): 모델의 요약 통계량을 출력.
  • plot(), abline(): 데이터를 시각화하고 회귀선을 추가.
  1. 다중회귀모델 적합
  • 단순회귀모델과 동일하지만, lm(y ~ X1 + X2, data=data)를 사용하여 두 개 이상의 독립 변수를 포함.
  • scatterplot3d 패키지를 사용하여 3D 시각화.

이 코드는 R에서 회귀분석을 수행하는 기본적인 방법을 보여줍니다. 실제 데이터에 맞춰 변수를 변경하여 사용하면 됩니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤