working_helen

[R로 하는 통계분석] Piecewise polynomial regression, Splines 본문

교내 수업/R 통계분석

[R로 하는 통계분석] Piecewise polynomial regression, Splines

HaeWon_Seo 2024. 11. 25. 22:44

 

1. Piecewise polynomial regression

2. Spline

3. Spline R 코드로 구현하기

 

 


1. Piecewise polynomial regression

(1) piecewise polynomial regression

 

- 설명변수 X를 여러 개의 구간을 분할하고, 각 구간마다 별도의 다항회귀모형을 적합하는 방법
- 구간마다 각각 LSE를 적용해 회귀계수 β를 추정 
- knots : 회귀모형이 바뀌는 X의 지점, K개의 knots가 있으면 K+1개의 구간이 생성

출처 : https://piecewise-regression.readthedocs.io/en/latest/

 

 

 

(2) basis function

- piecewise polynomial regression은 basis function approach의 일종

- 이미 알고있는  basis function(기저 함수) K개의 선형결합으로 y를 표현 

- 모델의 자유도 = basis function의 개수

 

 

 

2. Spline

출처 : An Introduction to Statistical Learning, 2013, 273p

 

  • 좌상단 : 3차 Piecewise polynomial regression
  • 우상단 : 3차 Regression Spline
  • 좌하단 : 3차 Cubic Spline
  • 우하단 : 3차 Nutural Spline 
(위키백과) 스플라인 곡선 : 주어진 복수의 제어점을 통과하는 부드러운 곡선으로, 인접한 두 점 사이에의 구간마다 별도의 다항식을 이용해 곡선을 정의. 자연스러운 곡선을 그리는 데 이용된다. n차 스플라인 곡선은 n차 다항식을 이용한 것이지만, 일반적으로 스플라인 곡선은 3차 곡선을 이용. 

 

- piecewise polynomial regression은 구간별로 적합된 다항함수가 knots에서 불연속이 될 수 있다는 문제점 존재

- Spline은 기존의 piecewise polynomial regression에 제약조건을 추가하여 연속의 부드러운 다항식 곡선을 적합하는 방법

  • Regression Spline : knots에서 연속 조건 
  • Cubic Spline : knots에서 연속이고 미분가능, 1, 2차 도함수가 연속 조건 
  • Natural Spline : Cubic Spline  + boundary에서 linear 조건 
  • Smoothing Spline : Natural Spline with all data + regularization term 

 

 

Regression Spline

 

piecewise polynomial regression + 모든 knots에서 연속 조건 

 

 

 

Cubic Spline

 

: piecewise polynomial regression + 모든  knots에서 연속이고 미분가능

 

- 모든 구간에서 intercept, 1차항과 2차항 회귀계수를 공유, 3차항 회귀계수만 구간별로 

- K개의 knots → 추정해야하는 하는 β = 3 + (K +1) = K + 4개

 

 

 

Natural Spline

 

: cubic splie + boundary에서 linear 조건 

 

- cubic spline은 범위의 양끝에서 값이 크게 변동하는 문제가 존재

- 범위의 양끝점에 data에 존재하는 점을 지나가도록 제한조건 추가

 

- 자유도 15 natural cubid spline과 15차항 polynomial regression 비교 

출처 : An Introduction to Statistical Learning, 2013, 277p

 

 

 

Smoothing Spline

 

: natural spline + overfitting 방지를 위해 loss function에 regularization term 추가 

  • g(x) : natural spline 함수
  • n : data (x, y) 개수
  • λ : regularization parameter

- smoothing spline = 위 식을 최소화하는 g(x),  β 

- 주어진 data 속 모든 x를 knots로 사용하는 natural spline을 진행 

  + loss function에 regularization term 추가함으로써 overfitting 방지

  • λ = 0 : n개의 knots를 모두 지나는 natural spline, overfitting 
  • λ ↑  : spline이 점점 더 smooth 

 

 

 

 

 

3. Spline R 코드로 구현하기

"ISLR2" 패키지 Wage 데이터셋 사용

 

 

 

basis function 

- `bs(x)` : 기저함수 설정, default는 x의 3차항까지 

- knots를 지정하는 경우 : knots = K개 → df = (K + 4) -1 = K + 3

 

- df를 지정하는 경우 : df = df → knots 개수 = (df + 1) - 4 = df - 3

 

 

 

cubic spline fitting 


- `lm` 함수를 이용 
- knots K개 → K+4개의 회귀계수 적합
                        모델 자유도 = K+4, 잔차 자유도 = n - (K+4) 

- knots 개수 K = 3  회귀계수 3+4 = 7개

                                  모델 자유도 = 7, 잔차 자유도 = 3000-7 = 2993 

 

 

새로운 데이터 예측 
`pred$fit` : 각 x에서 모델의 예측 결과 
`pred$se.fit` : 각 x에서 standard error
`pred$df` : 잔차 자유도 = n - (K+4)

 

 

예측 결과 시각화

 

 

 

smooth spline fitting 

 

- `smooth.spline` 함수 이용

- 자유도 지정하는 경우 → 해당 자유도에 해당되는 λ 사용

 

- `cv = T` → CV를 통해 최적의 λ 결정 

 

 

새로운 데이터 예측 

`pred$y` : 각 x에서 모델 예측 결과 

 

 

예측 결과 시각화

 

 

 

 

 

 

 

Reference

https://en.wikipedia.org/wiki/Segmented_regression
https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%94%8C%EB%9D%BC%EC%9D%B8_%EA%B3%A1%EC%84%A0
https://direction-f.tistory.com/85
https://direction-f.tistory.com/87
https://blog.naver.com/je1206/220804048936

 

본 포스팅은 James, G., Witten, D., Hastie, T., & Tibshirani, R. (2013). An Introduction to Statistical Learning with Applications in R. Springer. 책을 참고하여 작성했습니다.