스플라인은 회귀 모델링에서 복잡한 비선형 기능적 형태를 모델링하는 데 사용됩니다. 스플라인 스무딩 추세는 각 중단 점 또는 매듭에서 선행 계수가 변경되는 구간 별 연속 다항식으로 구성됩니다. 스플라인은 중단 점뿐만 아니라 트렌드의 다항식 정도로 지정 될 수 있습니다. 공변량의 스플라인 표현은 관측 값의 단일 벡터를 다항식 차수에 매듭 점 수를 더한 행렬로 확장합니다.
스플라인 의 주기적인 버전은 단순히 회귀의주기적인 버전 일뿐입니다. 데이터는주기 길이의 복제로 절단됩니다. 예를 들어, 쥐를 대상으로 한 일간 실험에서 일주일의 추세를 모델링하려면 실험 시간을 24 시간 단위로 다시 코딩해야하므로 154 시간은 모듈로 24 값 10 (154 = 6 * 24 + 10)이됩니다. 컷 데이터에 선형 회귀를 맞추면 트랜드에 대한 톱니 파형이 추정됩니다. 주기의 어딘가에 스텝 함수를 맞추면 시리즈에 맞는 방형 파형이됩니다. 스플라인은 훨씬 더 정교한 웨이블릿을 표현할 수 있습니다. 가치있는 것을 위해, splines
패키지 periodicSpline
에는 정확히 이것을 하는 기능 이 있습니다.
pnkpp+ii≤nkSp+i=(X−ki)pI(X<ki)k
myspline <- function(x, degree, knots) {
knots <- sort(knots)
val <- cbind(x, outer(x, knots, `-`))
val[val < 0] <- 0
val <- val^degree
if(degree > 1)
val <- cbind(outer(x, 1:{degree-1}, `^`), val)
colnames(val) <- c(
paste0('spline', 1:{degree-1}, '.1'),
paste0('spline', degree, '.', seq(length(knots)+1))
)
val
}
2πτ
x <- seq(0, 2*pi, by=pi/2^8)
y <- sin(x)
plot(x,y, type='l')
s <- myspline(x, 2, pi)
fit <- lm(y ~ s)
yhat <- predict(fit)
lines(x,yhat)
당신은 그들이 매우 일치하는 것을 볼 수 있습니다. 또한 명명 규칙은 해석을 가능하게합니다. 회귀 출력에서 다음을 볼 수 있습니다.
> summary(fit)
Call:
lm(formula = y ~ s)
Residuals:
Min 1Q Median 3Q Max
-0.04564 -0.02050 0.00000 0.02050 0.04564
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.033116 0.003978 -8.326 7.78e-16 ***
sspline1.1 1.268812 0.004456 284.721 < 2e-16 ***
sspline2.1 -0.400520 0.001031 -388.463 < 2e-16 ***
sspline2.2 0.801040 0.001931 414.878 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.02422 on 509 degrees of freedom
Multiple R-squared: 0.9988, Adjusted R-squared: 0.9988
F-statistic: 1.453e+05 on 3 and 509 DF, p-value: < 2.2e-16
π/2
데이터의 주기성을 알고 있다고 가정하겠습니다. 데이터에 성장 또는 이동 평균 성분이 부족한 경우 장시간 시계열을 1주기의 짧은 시리즈의 복제물로 변환 할 수 있습니다. 이제 반복 실험이 수행되었으며 데이터 분석을 사용하여 반복 추세를 추정 할 수 있습니다.
다음과 같이 다소 노이즈가 있고 매우 긴 시계열을 생성한다고 가정하십시오.
x <- seq(1, 100, by=0.01)
y <- sin(x) + rnorm(length(x), 0, 10)
xp <- x %% (2*pi)
s <- myspline(xp, degree=2, knots=pi)
lm(y ~ s)
결과 출력은 합리적인 성능을 보여줍니다.
> summary(fit)
Call:
lm(formula = y ~ s)
Residuals:
Min 1Q Median 3Q Max
-39.585 -6.736 0.013 6.750 37.389
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.48266 0.38155 -1.265 0.205894
sspline1.1 1.52798 0.42237 3.618 0.000299 ***
sspline2.1 -0.44380 0.09725 -4.564 5.09e-06 ***
sspline2.2 0.76553 0.18198 4.207 2.61e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 9.949 on 9897 degrees of freedom
Multiple R-squared: 0.006406, Adjusted R-squared: 0.006105
F-statistic: 21.27 on 3 and 9897 DF, p-value: 9.959e-14