
R語言與函數(shù)估計學習筆記(樣條方法)
樣條估計
如果函數(shù)在不同地方有不同的非線性度,或者有多個極值點,那么用多項式特別是低階多項式來完成擬合是非常不合適的。一種解決辦法是我們之前提到的近鄰多項式(或者稱局部多項式),另一種就是樣條——用分段的低階多項式逼近函數(shù)。
關于樣條,常用的有兩類,一類是多項式樣條,另一類是光滑樣條。
多項式樣條
多項式樣條的樣條基有很多,最為著名的是我們之前在函數(shù)逼近中提到的truncated power basis與B-spline basis。我們這里十分簡要的介紹一下B樣條,B樣條基下的函數(shù)逼近可以寫為:
其中
上式中否則取0.在R中splines包的函數(shù)bs()提供了B樣條估計,其調(diào)用格式為:
bs(x, df = NULL, knots = NULL, degree = 3, intercept = FALSE, Boundary.knots = range(x))
對于參數(shù)df值得說明的是df=degree+(Knots個數(shù)),attr(,“knots”)會顯示劃分點,我們常用的3次B樣條公式: df=k+3 (不含常數(shù)項)
我們以前面提到的essay data為例說明B樣條的估計情況:
easy <- read.table("D:/R/data/easysmooth.dat", header = T)
x <- easy$X
y <- easy$Y
m.bsp <- lm(y ~ bs(x, df = 6))
s = function(x) {
(x^3) * sin((x + 3.4)/2)
}
x.plot = seq(min(x), max(x), length.out = 1000)
y.plot = s(x.plot)
plot(x, y, xlab = "Predictor", ylab = "Response")
lines(x.plot, y.plot, lty = 1, col = 1)
lines(x, fitted(m.bsp), lty = 2, col = 2)
attr(bs(x, df = 6), "knots") #可以將看到,節(jié)點在不指定的情況下默認的是均勻樣條,當然,我們可以根據(jù)散點圖給#出節(jié)點的具體選擇。
## 25% 50% 75%
## -1.875 -0.250 1.375
m.bsp1 <- lm(y ~ bs(x, df = 6, knots = c(-2.5, -1, 2)))
lines(x, fitted(m.bsp1), lty = 3, col = 3)
AIC(m.bsp)
## [1] 718.1
AIC(m.bsp1)
## [1] 727.4
summary(m.bsp)
##
## Call:
## lm(formula = y ~ bs(x, df = 6))
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.790 -0.911 -0.065 0.892 4.445
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.816 0.622 2.92 0.0039 **
## bs(x, df = 6)1 -10.552 1.161 -9.09 < 2e-16 ***
## bs(x, df = 6)2 -7.127 0.755 -9.44 < 2e-16 ***
## bs(x, df = 6)3 0.813 0.926 0.88 0.3808
## bs(x, df = 6)4 -4.056 0.859 -4.72 4.5e-06 ***
## bs(x, df = 6)5 5.781 0.967 5.98 1.1e-08 ***
## bs(x, df = 6)6 -3.505 0.865 -4.05 7.4e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.42 on 193 degrees of freedom
## Multiple R-squared: 0.824, Adjusted R-squared: 0.819
## F-statistic: 151 on 6 and 193 DF, p-value: <2e-16
可以看到B樣條基本很接近真實函數(shù)了,summary(m.bsp)報告了各個系數(shù)的估計,帶入f(x)的B樣條基展開中即可得到一個顯式的表達式。
光滑樣條
雖然B樣條已經(jīng)很好了,但是理論與實踐都表明直接用最小二乘去求解系數(shù)效果不好,容易過擬合。一個可能的改進是光滑樣條。所謂的光滑樣條,就是在求解最小二乘時給估計函數(shù)f(x)加上了一定的懲罰,這個有點類似壓縮估計。我們這里采用最常用的光滑性懲罰,得到函數(shù)f(x)的估計m(x)滿足如下的懲罰最小二乘:
在R的splines包中提供了函數(shù)smooth.spline來求解光滑樣條
easy <- read.table("D:/R/data/easysmooth.dat", header = T) x <- easy$X y <- easy$Y s.hat <- smooth.spline(x, y) ## OUTPUT s.hat
## Call: ## smooth.spline(x = x, y = y) ## ## Smoothing Parameter spar= 0.7251 lambda= 0.0002543 (12 iterations) ## Equivalent Degrees of Freedom (Df): 11.56 ## Penalized Criterion: 380.9 ## GCV: 2.145
## OUTPUT PLOTS s <- function(x) { (x^3) * sin((x + 3.4)/2) } x.plot = seq(min(x), max(x), length.out = 1000) y.plot = s(x.plot) plot(x, y, xlab = "Predictor", ylab = "Response") lines(x.plot, y.plot, lty = 1, col = 1) lines(s.hat, lty = 2, col = 2)
最后我們來講一下怎么計算出m(x),這里我們使用Reinsch algorithm。Step 1: 計算向量Q′y.Step 2: 找到一個非0對角陣R+λQ′Q使得它可以進行Cholesky分解,有因子L,DStep 3: 解方程:(R+λQ′Q)γ=Q′yStep 4: 得到估值m=y?αQγ.上面的Q與R可以表示為:
上面的t表示節(jié)點。我們不妨來算算essay data的例子:
easy <- read.table("D:/R/data/easysmooth.dat", header = T)
x <- easy$X
y <- easy$Y
n <- length(y)
knots <- seq(min(x), max(x), length = n + 1)
h <- knots[-1] - knots[-n]
Q <- matrix(0, n, n - 2)
R <- matrix(0, n - 2, n - 2)
for (i in 1:(n - 2)) {
Q[i, i] = 1/h[i]
Q[i + 1, i] = -1/h[i] - 1/h[i + 1]
Q[i + 2, i] = 1/h[i + 1]
}
for (i in 2:(n - 2)) {
R[i, i] = 1/6 * (h[i] + h[i + 1])
R[i - 1, i] = h[i]/6
R[i, i - 1] = h[i]/6
}
R[1, 1] = 1/6 * (h[1] + h[2])
lambda <- 0.2
A <- R + lambda * t(Q) %*% Q
gamma <- solve(A, t(Q) %*% as.matrix(y))
g <- as.matrix(y) - lambda * Q %*% gamma
s <- function(x) {
(x^3) * sin((x + 3.4)/2)
}
x.plot <- seq(min(x), max(x), length.out = 1000)
y.plot <- s(x.plot)
plot(x, y, xlab = "Predictor", ylab = "Response")
lines(x.plot, y.plot, lty = 1, col = 1)
lines(x, g, lty = 2, col = 2)
在懲罰系數(shù)為0.2的情況下,擬合還是不壞的,不是嗎?至于為什么可以這樣算,我們只要注意到\int [m^{''}(x)]dx=m^'(x_i)QR^{-1}Q^'m(x_i),估計的問題就與我們十分熟悉的lasso,嶺回歸十分相像了。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關鍵? 在循環(huán)神經(jīng)網(wǎng)絡(RNN)家族中,長短期記憶網(wǎng)絡(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務的價值轉化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應用:從數(shù)據(jù)查詢到趨勢預判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應對策略? 長短期記憶網(wǎng)絡(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學方法在市場調(diào)研數(shù)據(jù)中的深度應用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉日期:解鎖數(shù)據(jù)處理的關鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎 ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03