R에서 조각별 회귀를 수행하는 방법(단계별)


조각별 회귀는 데이터 세트에 명확한 “중단점”이 있을 때 자주 사용하는 회귀 방법입니다.

다음 단계별 예제에서는 R에서 조각별 회귀를 수행하는 방법을 보여줍니다.

1단계: 데이터 생성

먼저 다음 데이터 프레임을 만들어 보겠습니다.

 #view DataFrame
df <- data. frame (x=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16),
                 y=c(2, 4, 5, 6, 8, 10, 12, 13, 15, 19, 24, 28, 31, 34, 39, 44))

#view first six rows of data frame
head(df)

  xy
1 1 2
2 2 4
3 3 5
4 4 6
5 5 8
6 6 10

2단계: 데이터 시각화

다음으로, 데이터를 시각화하기 위한 산점도를 만들어 보겠습니다.

 #create scatterplot of x vs. y
plot(df$x, df$y, pch= 16 , col=' steelblue ')

x와 y 사이의 관계가 x = 9 부근에서 갑자기 변하는 것처럼 보이는 것을 볼 수 있습니다.

3단계: 조각별 회귀 모델 피팅

R의 분할된 패키지에 있는 분할() 함수를 사용하여 조각별 회귀 모델을 데이터 세트에 맞출 수 있습니다.

 library (segmented)

#fit simple linear regression model
fit <- lm(y ~ x, data=df)

#fit piecewise regression model to original model, estimating a breakpoint at x=9
segmented. fit <- segmented(fit, seg.Z = ~x, psi= 9 )

#view summary of segmented model
summary( segmented.fit )

Call: 
segmented.lm(obj = fit, seg.Z = ~x, psi = 9)

Estimated Break-Point(s):
         East. St.Err
psi1.x 8.762 0.26

Meaningful coefficients of the linear terms:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 0.32143 0.48343 0.665 0.519    
x 1.59524 0.09573 16.663 1.16e-09 ***
U1.x 2.40476 0.13539 17.762 NA    
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.6204 on 12 degrees of freedom
Multiple R-Squared: 0.9983, Adjusted R-squared: 0.9978 

Convergence achieved in 2 iter. (rel. changes 0)

Segmented() 함수는 x = 8.762에서 중단점을 감지합니다.

적합 조각별 회귀 모델은 다음과 같습니다.

x ≤ 8.762인 경우: y = 0.32143 + 1.59524*(x)

x > 8.762인 경우: y = 0.32143 + 1.59524*(8.762) + (1.59524+2.40476)*(x-8.762)

예를 들어 x = 5 값이 있다고 가정합니다. 예상 값은 다음과 같습니다.

  • y = 0.32143 + 1.59524*(x)
  • y = 0.32143 + 1.59524*(5)
  • 와이 = 8.297

또는 x = 12 값이 있다고 가정합니다. 예상 값은 다음과 같습니다.

  • y = 0.32143 + 1.59524*(8.762) + (1.59524+2.40476)*(12-8.762)
  • 와이 = 27.25

4단계: 최종 조각별 회귀 모델 시각화

다음 코드를 사용하여 원본 데이터 위에 최종 조각별 회귀 모델을 시각화할 수 있습니다.

 #plot original data
plot(df$x, df$y, pch= 16 , col=' steelblue ')

#add segmented regression model
plot(segmented. fit , add= T )

조각별 회귀 모델이 데이터에 매우 잘 맞는 것으로 보입니다.

추가 리소스

다음 튜토리얼은 R의 회귀 모델에 대한 추가 정보를 제공합니다.

R에서 단순 선형 회귀를 수행하는 방법
R에서 다중 선형 회귀를 수행하는 방법
R에서 로지스틱 회귀를 수행하는 방법
R에서 분위수 회귀를 수행하는 방법
R에서 가중 회귀를 수행하는 방법

의견을 추가하다

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