1 이 포스트의 위치
./4-3-penalty-and-fpcr.qmd 까지 스칼라-on-함수 회귀의 세 가지 선형 추정 접근을 다뤘다 — 기저 전개·거칠기 벌점·FPCA 회귀. 이 포스트는 두 가지 마무리 주제를 다룬다.
§4.7 refund 패키지의 통합 구현
↓ 세 방법을 같은 인터페이스(pfr)로 호출
시뮬레이션으로 본 방법별 강점·약점
§4.8 비선형 함수 회귀
↓ 선형 모형 ∫β(s)X(s)ds의 한계
함수 GAM: Y = α + ∫f(X(t), t)dt + ε
완전 비모수: Y = m(X) + ε (Nadaraya-Watson 풍)
핵심 메시지: §4.7은 도구의 통합, §4.8은 모형 가정의 확장이다. 둘 다 실무에서 함수 회귀를 사용하기 위한 마지막 두 단계의 다리 역할을 한다.
2 refund 패키지의 통합 인터페이스
2.1 왜 통합 인터페이스가 필요한가
§4.4~§4.6의 세 추정 방법은 수학적으로 다르지만, 같은 형태의 출력 — 회귀 함수 \(\widehat{\beta}(t)\) 와 예측 — 을 만든다. 사용자가 한 번에 비교할 수 있는 통일된 도구가 필요하다.
refund 패키지의 핵심 함수 pfr() (Penalized Functional Regression) 가 이를 제공한다. 인자에 따라 세 방법 중 하나를 호출하지만, 인터페이스가 일관되어 비교가 쉽다.
2.2 핵심 헬퍼 함수
pfr() 안에서 함수 회귀자를 표시하는 세 가지 헬퍼:
| 헬퍼 | 의미 | 호출 방법 |
|---|---|---|
lf(X, ...) |
linear function — 선형 함수 회귀자 | \(\int \beta(s) X_i(s) \, ds\) |
fpc(X, ...) |
functional principal components | FPCA 회귀 |
af(X, ...) |
additive function — 비선형 GAM | \(\int f(X_i(t), t) \, dt\) |
이 헬퍼들이 pfr() 의 우변 ~ 다음에 오면 함수 회귀자로 인식된다.
2.3 추정 방법 선택의 인자
lf() 헬퍼의 주요 인자:
| 인자 | 의미 | 효과 |
|---|---|---|
bs |
기저 종류 | "ps" (penalized splines), "cr" (cubic regression splines), "tp" (thin plate) 등 |
k |
기저 함수 수 (\(K\)) | 표현력 통제 |
fx |
벌점 고정 여부 | TRUE → 벌점 없음 (단순 기저 전개), FALSE (기본) → 거칠기 벌점 |
sp |
매끄러움 모수 (\(\lambda\)) | 미지정 시 REML로 자동 선택 |
이 네 인자의 조합으로 세 방법을 모두 호출:
2.4 내부 구현: mgcv와 mixed model
pfr() 의 내부는 mgcv 패키지의 gam() 함수를 호출한다. mgcv 는 generalized additive model의 표준 구현이며, mixed model framework로 매끄러움 모수를 REML 추정 한다.
이 내부 mechanism이 §4.5의 끝부분에서 언급한 “거칠기 벌점 = mixed model의 random effect” 라는 시각을 직접 활용한다 (Goldsmith et al. 2011, Ruppert et al. 2003 참조).
2.5 REML이 표준이 된 이유
refund 가 REML을 기본 방법으로 채택한 이유:
- 계산 효율: 한 번의 최적화로 \(\lambda\) 결정 (CV는 \(N\) 번의 모형 적합 필요).
- 통계적 정교: mixed model의 분산 모수 추정 표준 방법.
- 기존 인프라 재사용:
mgcv의 검증된 알고리즘 활용. - 자동성: 사용자가 \(\lambda\) 후보 범위를 지정할 필요 없음.
2.6 한계와 보완
REML도 단점이 있다:
- 작은 표본에서 불안정할 수 있음.
- 비가우스 잡음에 대한 민감도.
- \(\lambda\) 의 사후 분포가 비대칭일 때 점추정의 한계.
pfr() 은 method = "REML" 외에도 "GCV.Cp", "ML" 등 대안을 제공한다.
3 시뮬레이션을 통한 세 방법의 비교
3.1 Kokoszka §4.7의 시뮬레이션 설계
Kokoszka는 두 진짜 회귀 함수에 세 방법을 모두 적용해 비교한다.
진짜 회귀 함수 1: 매끄러운 정현파.
\[ \beta_1(t) = \sin(2\pi t). \]
진짜 회귀 함수 2: 좁은 봉우리 세 개의 합.
\[ \beta_2(t) = -\phi(t; 0.2, 0.03^2) + 3\phi(t; 0.5, 0.04^2) + \phi(t; 0.75, 0.05^2), \]
여기서 \(\phi(t; \mu, \sigma^2)\) 는 평균 \(\mu\), 분산 \(\sigma^2\) 의 정규 밀도 함수.
3.2 두 함수의 의미
| 함수 | 특성 | 추정 난이도 |
|---|---|---|
| \(\beta_1\) | 단일 주기, 매끄러움 | 쉬움 |
| \(\beta_2\) | 좁은 봉우리, 거의 0 (대부분 구간) + 급격한 봉우리 | 어려움 |
\(\beta_1\) 은 모든 추정 방법이 잘 잡을 것 — 단순한 정현파라서 어떤 기저로도 표현 가능. \(\beta_2\) 는 좁은 봉우리(특히 sd=0.03 인 첫 봉우리)가 적은 수의 기저로는 표현하기 어렵다.
3.3 회귀자 데이터 생성
회귀자 \(X_i(t)\) 는 다음 합으로 구성:
\[ X_i(t) = Z_i \cdot t + U_i + \eta_i(t) + \zeta_i(t), \]
- \(Z_i \sim N(1, 0.2^2)\): 선형 기울기 잡음
- \(U_i \sim \text{Unif}[0, 5]\): 무작위 절편
- \(\eta_i(t) \sim N(0, 1)\) i.i.d. 잡음
- \(\zeta_i(t) = \sum_{k=1}^{10} \frac{1}{k}\{Z_{1k} \sin(2\pi t k) + Z_{2k} \cos(2\pi t k)\}\): 매끄러운 무작위 변동
이 데이터 생성 모형은 현실적 회귀자 를 시뮬레이션한다 — 매끄러운 추세 + 잡음 + 무작위 변동의 합.
3.4 반응 변수
\[ Y_i = \int X_i(t) \beta(t) \, dt \cdot 0.01 + \varepsilon_i, \quad \varepsilon_i \sim N(0, 0.4^2). \]
(0.01 스케일링은 \(X\) 의 큰 진폭을 보정).
3.5 시뮬레이션 결과 1: \(\beta_1\) (매끄러운 정현파)
예상 결과: 세 방법 모두 진짜 함수에 매우 가깝게 추정 (Kokoszka & Reimherr, 2017, Figure 4.4).
| 방법 | 결과 |
|---|---|
| FPCA 회귀 | 진짜 함수와 거의 같음 |
| 기저 전개 (벌점 없음) | 약간의 거친 진동, 평균적으로 진짜 함수 |
| 거칠기 벌점 | 가장 매끄러운 추정, 진짜 함수에 가장 가까움 |
해석: 매끄러운 진짜 함수에서는 세 방법이 모두 비슷하게 작동한다. 거칠기 벌점은 약간의 추가 정밀도를 주지만, 차이가 크지 않다.
3.6 시뮬레이션 결과 2: \(\beta_2\) (좁은 봉우리)
예상 결과: 방법 간 명확한 차이 (Kokoszka & Reimherr, 2017, Figure 4.5).
| 방법 | 결과 |
|---|---|
| FPCA 회귀 | 두 번째·세 번째 봉우리는 잘 잡음, 첫 번째 좁은 봉우리는 평탄화 |
| 기저 전개 (벌점 없음) | FPCA와 거의 같음, 약간 더 날카로움 |
| 거칠기 벌점 | 과평활 — 모든 봉우리가 평탄화됨 |
해석: 거친 진짜 함수에서는 거칠기 벌점이 너무 강한 매끄러움을 강제하여 봉우리를 잃는다. FPCA 회귀와 단순 기저 전개가 비슷한 성능, 둘 다 첫 번째 좁은 봉우리는 어려워한다.
3.7 Goldsmith and Scheipl (2014) 의 실증 분석
Kokoszka는 Goldsmith and Scheipl (2014) 의 결과를 인용한다 — “여러 실제 데이터에서 추정 방법의 예측 성능이 데이터셋에 따라 다르다” (Kokoszka & Reimherr, 2017, §4.7).
이는 위 시뮬레이션 결과와 일치한다. 데이터의 특성 (진짜 \(\beta\) 의 매끄러움 정도, 잡음 구조 등) 이 어느 방법이 최선인지 결정한다. 따라서 실무에서는 항상 여러 방법을 시도하고 비교 해야 한다.
3.8 비유: 의료 영상 처리 알고리즘 비교
자기공명영상(MRI) 의 잡음 제거 알고리즘은 여러 종류가 있다 — 가우시안 평활, 비국소 평균, 웨이블릿 임계, 딥러닝 등. 어느 알고리즘이 최선인지는 영상의 성질(촬영 부위·잡음 종류·해상도)에 의존한다. 한 알고리즘이 항상 최선인 경우는 거의 없다. 함수 회귀의 추정 방법 선택도 같은 원리이다.
3.9 실무 가이드라인
- 세 방법 모두 적용:
pfr()인자를 바꿔 빠르게 실행 가능. - 시각적 비교: \(\widehat{\beta}(t)\) 곡선을 같은 그림에 겹쳐 그려 패턴 확인.
- 예측 성능 비교: CV 또는 hold-out 표본에서 RMSE 계산.
- 도메인 지식 반영: 매끄러움이 자명한 도메인(기후) 에서는 거칠기 벌점, 봉우리가 중요한 도메인(생체 신호) 에서는 FPCA 회귀나 기저 전개가 적합.
4 비선형 함수 회귀의 동기
4.1 선형 모형의 한계
§4.4~§4.6에서 다룬 모형은 모두 선형이다:
\[ Y_i = \alpha + \int \beta(s) X_i(s) \, ds + \varepsilon_i. \]
이 모형은 “\(X_i(s)\) 의 값이 두 배가 되면 \(Y_i\) 의 영향도 두 배” 를 가정한다. 이는 강한 가정이며 항상 성립하지 않는다.
4.2 비선형성이 필요한 사례
| 사례 | 비선형성의 형태 |
|---|---|
| 약물 농도 → 효과 | 임계값 + 포화 (S-curve) |
| RT-PCR 형광 → 초기 농도 | 로그-선형 |
| 식품 스펙트럼 → 화학 성분 | 흡광-농도 비선형 (Beer-Lambert 법칙) |
| 신경 영상 → 인지 점수 | 임계값 효과 |
이런 사례에서 선형 모형 적합은 잘 안 되거나, 적합도는 좋아도 외삽에서 실패한다.
4.3 비선형 함수 회귀의 두 가지 전략
§4.8은 두 가지 비선형 접근을 다룬다.
| 접근 | 모형 | 해석 가능성 |
|---|---|---|
| 함수 GAM | \(Y = \alpha + \int f(X(t), t) \, dt + \varepsilon\) | 중간 (이변량 함수 \(f\)) |
| 완전 비모수 | \(Y = m(X) + \varepsilon\) | 낮음 (functional \(m\)) |
전자는 “비선형이지만 가법(additive)”, 후자는 “완전 자유(black-box)”. 비선형성의 정도가 다르다.
5 함수 GAM (Continuously Additive Model)
5.1 모형 정의
\[ Y_i = \alpha + \int f(X_i(t), t) \, dt + \varepsilon_i, \quad i = 1, \ldots, N. \]
여기서 \(f: \mathbb{R} \times [0, 1] \to \mathbb{R}\) 은 미지의 매끄러운 이변량 함수 이다.
이를 continuously additive model 이라고도 부른다.
5.2 선형 모형의 일반화
선형 모형은 함수 GAM의 특수 경우이다 — \(f(x, t) = \beta(t) \cdot x\) 일 때:
\[ \int f(X_i(t), t) \, dt = \int \beta(t) X_i(t) \, dt. \]
함수 GAM은 \(f\) 가 첫 인자에 대해 비선형일 수 있다. 즉 각 시점 \(t\) 에서 “\(X_i(t)\) 의 비선형 변환” 을 적분.
5.3 직관
함수 GAM은 다음을 허용한다:
- 각 시점 \(t\) 마다 \(X_i(t)\) 와 \(Y\) 의 관계가 비선형.
- 시점에 따라 비선형성의 형태가 달라짐.
비유: 선형 모형은 “모든 시점에서 같은 비례” 로 곡선을 합산한다. 함수 GAM은 “각 시점이 자신만의 응답 곡선” 을 가지고, 그 응답들을 적분으로 합산한다. 한 그룹의 합창이 아니라, 각 멤버가 자신의 부분을 부르는 합창과 같다.
5.4 추정: 텐서 곱 스플라인
\(f(x, t)\) 는 이변량 함수이므로 추정에 텐서 곱 스플라인이 사용된다:
\[ f(x, t) \approx \sum_{i=1}^{I} \sum_{\ell=1}^{L} f_{i\ell} B_i^*(x) B_\ell(t), \]
여기서:
- \(B_i^*(x)\): \(x\) 방향의 스플라인 기저 (\(I\) 개)
- \(B_\ell(t)\): \(t\) 방향의 스플라인 기저 (\(L\) 개)
- \(f_{i\ell}\): 추정할 계수 (총 \(I \times L\) 개)
5.5 텐서 곱 기저의 의미
각 기저 \(B_i^*(x) B_\ell(t)\) 는 “\(x\) 방향에는 \(B_i^*\) 의 모양, \(t\) 방향에는 \(B_\ell\) 의 모양” 인 2차원 표면이다.
| 다변량 회귀 | 함수 GAM |
|---|---|
| 회귀 계수 벡터 \(\boldsymbol{\beta}\) | 회귀 표면 \(f(x, t)\) |
| 단일 차원 기저 \(B_k\) | 텐서 곱 기저 \(B_i^*(x) B_\ell(t)\) |
| 계수 \(\beta_k\) | 계수 \(f_{i\ell}\) |
5.6 두 방향의 기저가 다를 수 있는 이유
\(x\) 의 범위 (예: \(X_i(t)\) 의 값 분포)와 \(t\) 의 범위 (예: \([0, 1]\))는 의미가 다르다. 따라서 두 방향의 기저 종류가 다를 수 있다 (Kokoszka & Reimherr, 2017, §4.8):
- \(t\) 방향: B-spline (시간 도메인에 자연스러움)
- \(x\) 방향: 다른 스플라인 또는 정규 분포 변환된 기저
5.7 벌점화
\(f\) 의 차원이 \(I \times L\) 로 매우 클 수 있으므로 §4.5와 같은 벌점이 필요하다. 보통 두 방향에 별도 매끄러움 벌점:
\[ \lambda_x \int\!\!\int (\partial_x^2 f)^2 \, dx \, dt + \lambda_t \int\!\!\int (\partial_t^2 f)^2 \, dx \, dt. \]
두 매끄러움 모수 \(\lambda_x, \lambda_t\) 를 REML로 자동 선택.
5.8 refund::af() 의 사용
library(refund)
# 함수 GAM 적합
fit_gam <- pfr(Y ~ af(X, k = c(20, 20)))
# k = c(I, L): x-방향과 t-방향의 기저 수
# 적합된 f(x, t) 표면 시각화
plot(fit_gam, scheme = 2) # 2D contouraf() 는 pfr 안에서 함수 GAM 회귀자를 표시한다. 내부적으로 mgcv::gam 의 텐서 곱 스플라인을 호출한다 (McLean et al. 2014).
5.9 장단점
장점:
- 비선형성 허용 — 선형 모형이 잡지 못하는 패턴 포착.
- 해석 가능 — 추정된 \(f(x, t)\) 를 시각화로 검토.
refund가 통합 인터페이스 제공.
단점:
- 모수 수 폭증 (\(I \times L\)) → 표본 크기 요구 증가.
- 두 방향 매끄러움 모수 동시 추정의 어려움.
- 해석이 선형 \(\beta(t)\) 보다 어려움.
6 완전 비모수 functional regression
6.1 모형 정의
\[ Y_i = m(X_i) + \varepsilon_i, \quad i = 1, \ldots, N. \]
여기서 \(m: L^2 \to \mathbb{R}\) 은 미지의 functional (함수를 입력으로, 스칼라를 출력으로 하는 사상)이다. \(m\) 의 형태에 어떠한 모수적 가정도 없다.
Ferraty and Vieu (2006) 의 모노그래프가 이 framework의 표준 참조이다.
6.2 모수적 모형과의 비교
| 모형 | 가정 | 추정 대상 |
|---|---|---|
| 선형 | \(m(X) = \alpha + \int \beta X\) | 함수 \(\beta(t)\) |
| 함수 GAM | \(m(X) = \alpha + \int f(X(t), t) \, dt\) | 이변량 함수 \(f(x, t)\) |
| 완전 비모수 | 어떠한 형태도 가능 | functional \(m\) 자체 |
완전 비모수가 가장 자유롭지만, 가장 어려운 추정 문제이다.
6.3 추정: Nadaraya-Watson 풍
새 회귀자 \(x \in L^2\) 에서 \(m(x)\) 를 추정하는 자연스러운 방법:
\[ \widehat{m}(x) = \sum_{i=1}^{N} w_i(x) Y_i, \quad \sum_{i=1}^{N} w_i(x) = 1. \]
가중치 \(w_i(x)\) 는 “\(X_i\) 가 \(x\) 에 가까울수록 큰 가중치” 를 부여한다. 흔한 형태:
\[ w_i(x) = \frac{K(h^{-1} d(x, X_i))}{\sum_{i'=1}^{N} K(h^{-1} d(x, X_{i'}))}. \]
- \(K\): 비음 감소 커널 함수 (예: 정규 밀도, Epanechnikov)
- \(d(\cdot, \cdot)\): 함수 사이의 거리 측도
- \(h\): 대역폭 (bandwidth) — 매끄러움 모수
6.4 핵심 직관
새 곡선 \(x\) 에 대한 \(Y\) 예측은 “\(x\) 와 비슷한 훈련 곡선들의 \(Y\) 값 가중 평균” 이다.
비유: K-Nearest Neighbors 회귀와 같은 정신. 다만 거리가 유클리드가 아니라 함수 거리이고, 이산 가까움이 아니라 커널 가중 평균이다.
6.5 대역폭 \(h\) 의 역할
\(h\) 가 모든 것을 결정한다.
| \(h\) | 효과 |
|---|---|
| 작음 | 가까운 \(X_i\) 만 가중치 받음 → 작은 편향, 큰 분산 |
| 큼 | 많은 \(X_i\) 가 가중치 받음 → 큰 편향, 작은 분산 |
이는 비모수 회귀의 표준 편향-분산 트레이드오프의 함수 버전이다. 최적 \(h\) 는 표본 크기·잡음 수준·\(m\) 의 매끄러움에 의존하며, 흔히 CV로 선택한다.
6.6 거리 \(d\) 의 선택
거리 함수 \(d(\cdot, \cdot)\) 의 선택이 또 다른 핵심 요소이다.
선택 1: \(L^2\) 거리
\[ d(x, y) = \|x - y\| = \left(\int (x(t) - y(t))^2 \, dt\right)^{1/2}. \]
가장 자연스러운 선택이지만 항상 최적은 아니다.
선택 2: 도함수 거리 (의미함수, semi-metric)
\[ d(x, y) = \|x'' - y''\| = \left(\int (x''(t) - y''(t))^2 \, dt\right)^{1/2}. \]
곡선이 충분히 매끄러우면 도함수가 더 많은 차별 정보를 담는다.
6.7 의미함수 (semi-metric) 의 본질
도함수 거리의 흥미로운 성질: \(d(x, y) = 0\) 인 두 함수가 같지 않을 수 있다 — \(x\) 와 \(y\) 가 같은 도함수를 가지면 \(x - y\) 가 상수일 수 있다.
이는 일반 거리(metric)의 정의를 위반한다 (positivity 부재). 그러나 통계적으로는 합리적이다 — “함수의 모양은 같지만 평균값만 다른 경우” 를 같은 것으로 본다.
이를 의미함수(semi-metric) 라 한다. Functional regression에서는 의미함수가 자주 더 좋은 성능을 준다 (Ferraty & Vieu, 2006).
6.8 거리 선택의 실용적 가이드
| 상황 | 추천 거리 |
|---|---|
| 곡선 전체 모양이 정보 | \(L^2\) 거리 \(\|x - y\|\) |
| 곡선이 매우 매끄럽고 도함수가 의미적 | 도함수 거리 \(\|x'' - y''\|\) |
| 평균값이 무관 | 정규화 후 \(L^2\) |
| 공변 구조가 중요 | FPC 점수의 가중 거리 |
여러 거리를 시도하고 예측 성능으로 비교하는 것이 표준 절차이다.
6.9 장단점
장점:
- 가장 일반적 — 어떤 형태의 비선형 관계도 표현.
- 가정이 적음 — 모수적 모형 위반에 robust.
- 직관적 — kNN 회귀의 자연 일반화.
단점:
- 차원의 저주 — 함수 공간의 차원이 무한이라 데이터가 sparse.
- 외삽 위험 — 훈련 데이터에서 멀리 떨어진 \(x\) 에서 신뢰도 낮음.
- 거리 선택의 자의성 — 최적 거리가 도메인에 의존.
- 해석 어려움 — \(\widehat{m}\) 은 black box, \(\widehat{\beta}(t)\) 같은 패턴 시각화 불가.
6.10 함수 분류·딥러닝과의 관계
완전 비모수 functional regression은 함수 입력 머신러닝의 토대이다:
- 함수 SVM, 함수 Random Forest, 함수 신경망 모두 같은 정신 — 함수 거리·표현 + 비모수 학습.
- 최근 발전: 1D CNN, RNN, Transformer가 곡선 데이터를 직접 입력으로 받음 (deep functional regression).
- Ferraty & Vieu의 고전적 nonparametric framework 가 통계적 시각, 딥러닝이 알고리즘적 시각을 제공.
7 선형 vs 비선형 선택의 실무 가이드
7.1 선형으로 충분한 경우
| 신호 | 의미 |
|---|---|
| 잔차에 명백한 비선형 패턴 없음 | 선형 가정 적합 |
| 도메인 지식이 선형성 시사 (예: 흡광도-농도) | 선형 채택 |
| 해석 가능성이 핵심 | 선형 추천 (직접 패턴 시각화) |
| 표본 크기 작음 | 선형 (모수 적음) |
7.2 비선형이 필요한 경우
| 신호 | 의미 |
|---|---|
| 잔차에 비선형 패턴 명백 | 비선형 시도 필요 |
| 도메인이 임계값·포화 시사 | 비선형 채택 |
| 표본 크기 충분 (\(N > 200\)) | 비선형 가능 |
| 외삽 없음 (예측 범위가 훈련 범위 안) | 비모수 가능 |
7.3 단계별 접근 권장
- 선형 모형부터 시도 (
pfr(Y ~ lf(X))). - 잔차 분석 — 비선형 패턴 탐지.
- 패턴이 있으면 함수 GAM 시도 (
pfr(Y ~ af(X))). - GAM도 부족하면 비모수 (Ferraty & Vieu의 NPFDA framework).
- 항상 예측 성능을 CV로 비교.
비유: 환자 진료에서 가장 단순한 가설(감기)부터 검사하고, 증상이 맞지 않으면 더 복잡한 가설로 옮기는 것과 같다. 처음부터 가장 복잡한 모형을 쓰면 데이터에 과적합되거나 해석이 어려워진다.
8 R 코드: 함수 GAM 시연
8.1 비선형 데이터 생성
선형 모형으로는 적합되지 않는 데이터를 시뮬레이션한다.
library(refund)
library(ggplot2)
set.seed(42)
n <- 500
grid <- seq(0, 1, length.out = 101)
# 회귀자: 각 시점에서 정규 분포
X <- matrix(rnorm(n * length(grid), mean = 1, sd = 0.5),
nrow = n, ncol = length(grid))
# 매끄럽게 만들기
for (i in 1:n) {
X[i, ] <- smooth.spline(grid, X[i, ], spar = 0.7)$y
}
# 비선형 응답: f(x, t) = sin(2 pi t) * x^2
Y_nonlinear <- numeric(n)
for (i in 1:n) {
fX_t <- sin(2 * pi * grid) * X[i, ]^2
Y_nonlinear[i] <- sum(fX_t) * (grid[2] - grid[1])
}
Y_nonlinear <- Y_nonlinear + rnorm(n, sd = 0.1)8.2 선형 vs 함수 GAM 비교
# Method 1: 선형 회귀 (잘못된 모형)
fit_lin <- pfr(Y_nonlinear ~ lf(X, bs = "ps", k = 30))
# Method 2: 함수 GAM (올바른 모형)
fit_gam <- pfr(Y_nonlinear ~ af(X, k = c(20, 20)))
# 적합도 비교 (in-sample)
cat("Linear model: R² =", round(summary(fit_lin)$r.sq, 3), "\n")
cat("GAM model: R² =", round(summary(fit_gam)$r.sq, 3), "\n")
# 예측 성능 (out-of-sample)
n_train <- 400
train_idx <- sample(1:n, n_train)
test_idx <- setdiff(1:n, train_idx)
fit_lin_train <- pfr(Y_nonlinear[train_idx] ~ lf(X[train_idx, ], bs = "ps", k = 30))
fit_gam_train <- pfr(Y_nonlinear[train_idx] ~ af(X[train_idx, ], k = c(20, 20)))
# Test set 예측
pred_lin <- predict(fit_lin_train,
newdata = list(X = X[test_idx, ]))
pred_gam <- predict(fit_gam_train,
newdata = list(X = X[test_idx, ]))
rmse_lin <- sqrt(mean((Y_nonlinear[test_idx] - pred_lin)^2))
rmse_gam <- sqrt(mean((Y_nonlinear[test_idx] - pred_gam)^2))
cat("Test RMSE (linear):", round(rmse_lin, 4), "\n")
cat("Test RMSE (GAM):", round(rmse_gam, 4), "\n")예상 결과: 데이터가 비선형이므로 GAM의 RMSE가 선형보다 명백히 작다.
8.3 추정된 \(f(x, t)\) 표면 시각화
plot(fit_gam, scheme = 2,
main = "Estimated f(x, t) — should resemble sin(2 pi t) * x^2",
xlab = "x", ylab = "t")이 표면이 진짜 \(f(x, t) = \sin(2\pi t) \cdot x^2\) 와 비슷한지 확인. 형태가 일치하면 GAM이 비선형 패턴을 정확히 잡았다는 증거.
8.4 비모수 functional regression 시연
refund 에는 직접 구현이 없으므로 fda.usc 패키지의 fregre.np 사용.
library(fda.usc)
# 함수 데이터 객체 생성
X_fdata <- fdata(X, argvals = grid)
# 비모수 functional regression (Nadaraya-Watson 풍)
fit_np <- fregre.np(X_fdata, Y_nonlinear,
metric = metric.lp, # L^p 거리
Ker = Ker.norm) # 정규 커널
cat("NP regression R²:",
round(1 - sum((Y_nonlinear - predict(fit_np, X_fdata))^2) /
sum((Y_nonlinear - mean(Y_nonlinear))^2), 3), "\n")fregre.np 의 핵심 인자:
| 인자 | 역할 |
|---|---|
metric |
함수 거리 (\(L^p\), 도함수 거리, 의미함수) |
Ker |
커널 함수 |
h |
대역폭 (미지정 시 자동) |
8.5 거리 선택의 영향
# L^2 거리
fit_l2 <- fregre.np(X_fdata, Y_nonlinear,
metric = metric.lp, p = 2, Ker = Ker.norm)
# 1차 도함수 거리
fit_d1 <- fregre.np(X_fdata, Y_nonlinear,
metric = semimetric.deriv, nderiv = 1,
Ker = Ker.norm)
# 2차 도함수 거리
fit_d2 <- fregre.np(X_fdata, Y_nonlinear,
metric = semimetric.deriv, nderiv = 2,
Ker = Ker.norm)
# 거리별 R² 비교
for (label in c("L2", "D1", "D2")) {
fit <- get(paste0("fit_", tolower(label)))
pred <- predict(fit, X_fdata)
r2 <- 1 - sum((Y_nonlinear - pred)^2) /
sum((Y_nonlinear - mean(Y_nonlinear))^2)
cat(label, "distance: R² =", round(r2, 3), "\n")
}거리 선택에 따라 \(R^2\) 가 크게 달라질 수 있다. 데이터에 가장 적합한 거리를 CV로 선택하는 것이 표준 절차이다.
9 정리: Chapter 4의 마무리
9.1 §4.7 refund 패키지의 핵심
- 통합 인터페이스:
pfr()한 함수로 세 추정 방법 호출. - 헬퍼 함수:
lf()(선형),fpc()(FPCA),af()(GAM). - 자동 매끄러움: REML 기반 mixed model framework로 \(\lambda\) 자동 선택.
- 시뮬레이션 결과: 매끄러운 \(\beta_1\) 에서 세 방법 비슷, 거친 \(\beta_2\) 에서 거칠기 벌점이 oversmooth.
- 실무 권장: 항상 여러 방법 시도, 시각적·정량적 비교.
9.2 §4.8 비선형 함수 회귀의 핵심
- 선형 한계: \(\int \beta X\) 모형은 비례 관계만 표현, 임계값·포화 등 부적합.
- 함수 GAM: \(Y = \alpha + \int f(X(t), t) \, dt + \varepsilon\), 이변량 매끄러운 함수 \(f\).
- 텐서 곱 스플라인: \(f(x, t) = \sum_{i, \ell} f_{i\ell} B_i^*(x) B_\ell(t)\).
refund::af(): 함수 GAM의 통합 R 인터페이스.- 완전 비모수: \(Y = m(X) + \varepsilon\), Nadaraya-Watson 풍 추정.
- 거리 선택: \(L^2\) vs 도함수 거리(의미함수) — 데이터 특성에 따라.
- 선택 가이드: 선형 → GAM → 비모수 단계별 접근.
9.3 Chapter 4 전체의 종합
§4.1 응용 사례에서 시작해 §4.8 비선형까지의 흐름을 한 눈에:
§4.1 사례 — 가솔린·Tecator·DTI: 곡선 → 스칼라 예측의 가치
↓
§4.2 표준 회귀 복습 — LS 추정량, 정규방정식, F-검정
↓
§4.3 함수 회귀의 어려움 — 무한차원 다공선성, C_X^{-1} 부재
↓
§4.4 기저 전개 — 무한차원을 K차원에 사영
↓
§4.5 거칠기 벌점 — λ로 매끄러움 자동 통제
↓
§4.6 FPCA 회귀 — 데이터 기반 기저로 다공선성 자동 해결
↓
§4.7 refund — 통합 R 인터페이스, 시뮬레이션 비교
↓
§4.8 비선형 — 함수 GAM, 비모수 functional regression
핵심 통찰:
- 함수 회귀는 무한차원 모수의 정칙화 문제.
- 정칙화 양식(절단·연속, 결정적 기저·데이터 기반)이 추정 방법을 구별.
- 모든 방법이 한 framework — Ch.3의 적분 연산자 — 위에서 통합.
- 선형 가정 위반 시 GAM·비모수로 확장 가능.
9.4 다음 챕터 미리보기
- Ch.5 (함수 반응 모형): 출력도 함수인 회귀. 함수-on-스칼라, 함수-on-함수.
- Ch.6 (함수 GLM): 비정규 반응(이진·카운트). 다발성 경화증 분류 등.
- Ch.7 (희소 FDA): 곡선이 불규칙·희소 시점에서만 관측되는 경우. PACE 방법.
이후 모든 챕터가 Ch.4의 framework — 함수 모수 + 적분 연산자 + 정칙화 + 통합 R 인터페이스 — 위에서 전개된다.
10 관련 주제
선행 지식
- FDA 3.3 — 선형 변환과 공분산 연산자
- FDA 4.0 — 스칼라-on-함수 회귀 개관
- FDA 4.1~4.2 — 응용 사례와 표준 다중 회귀 복습
- FDA 4.3~4.4 — 함수 회귀의 어려움과 기저 전개 추정
- FDA 4.5~4.6 — 거칠기 벌점 추정과 FPCA 회귀
후속 주제
관련 개념
- GAM (일반화 가법 모형) — 함수 GAM의 다변량 사례
- Nadaraya-Watson 비모수 회귀 — 완전 비모수 functional regression의 다변량 사례
- Mixed Model과 REML —
refund의 매끄러움 모수 추정 방법 - 딥러닝 기반 함수 데이터 분석 — 비모수 framework의 현대적 확장