본문으로 건너뛰기
🛠️ToolsShed

선형 회귀 계산기

데이터 포인트에서 선형 회귀 계산: 기울기, 절편, R², 예측.

#XY
1
2
3
4
5

이 도구 소개

선형 회귀는 일련의 데이터 포인트를 통해 직선을 그음으로써 두 변수 사이의 관계를 모델화하는 기본적인 통계 방법입니다. 이 계산기를 사용하면 최적 직선을 찾고, 기울기와 절편을 계산하며, R² 값을 통해 데이터가 선형 패턴에 얼마나 잘 맞는지 측정할 수 있습니다. 판매 데이터의 추세 분석, 실험 결과 비교, 과학 연구의 상관관계 탐색 등 데이터 기반 의사결정을 위해서는 선형 관계를 이해하는 것이 필수입니다.

이 도구를 사용하려면 X와 Y 값 쌍을 데이터 포인트로 입력한 후 계산 버튼을 클릭하면 됩니다. 그러면 기울기(변화율), 절편(Y축과의 교점), R² 계수(0에서 1 사이의 적합도 측정값으로, 1은 완벽한 적합을 의미), 그리고 예측 방정식을 얻을 수 있습니다. 또한 새로운 X 값을 입력하여 피팅된 모델을 기반으로 대응하는 Y 값을 예측할 수 있습니다.

이 계산기는 통계학을 배우는 학생, 가설을 검증하는 연구자, 비즈니스 지표의 추세를 파악하는 전문가들에게 이상적입니다. 선형 회귀는 데이터 관계가 대체로 선형이라고 가정한다는 점에 주의하세요. 데이터가 곡선 패턴을 보이거나 산포가 크면 모델의 신뢰성이 낮을 수 있습니다. 더 복잡한 관계의 경우 다항식 회귀 등의 비선형 회귀를 고려해보세요.

자주 묻는 질문

코드 구현

def linear_regression(x: list, y: list) -> dict:
    n = len(x)
    if n < 2:
        raise ValueError("Need at least 2 data points")
    sum_x = sum(x)
    sum_y = sum(y)
    sum_xy = sum(xi * yi for xi, yi in zip(x, y))
    sum_x2 = sum(xi ** 2 for xi in x)
    mean_x = sum_x / n
    mean_y = sum_y / n

    slope = (n * sum_xy - sum_x * sum_y) / (n * sum_x2 - sum_x ** 2)
    intercept = mean_y - slope * mean_x

    # R-squared
    ss_res = sum((yi - (slope * xi + intercept)) ** 2 for xi, yi in zip(x, y))
    ss_tot = sum((yi - mean_y) ** 2 for yi in y)
    r2 = 1 - ss_res / ss_tot if ss_tot != 0 else 1.0

    return {"slope": slope, "intercept": intercept, "r_squared": r2,
            "pearson_r": r2 ** 0.5 if r2 >= 0 else 0}

x = [1, 2, 3, 4, 5]
y = [2.1, 3.9, 6.2, 7.8, 10.1]
result = linear_regression(x, y)
print(f"y = {result['slope']:.4f}x + {result['intercept']:.4f}")
print(f"R² = {result['r_squared']:.4f}")

# Predict
x_new = 6
y_pred = result['slope'] * x_new + result['intercept']
print(f"Prediction at x=6: {y_pred:.2f}")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.