स्प्लिन का उपयोग प्रतिगमन मॉडलिंग में संभवतः जटिल, गैर-रैखिक कार्यात्मक रूपों के मॉडल के लिए किया जाता है। एक तली-भुनी चिकनी प्रवृत्ति में टुकड़े-टुकड़े में निरंतर बहुपद होते हैं जिनके प्रमुख गुणांक प्रत्येक ब्रेकपॉइंट या गाँठ में होते हैं। स्पलाइन को प्रवृत्ति के बहुपद डिग्री के साथ-साथ ब्रेकप्वाइंट के रूप में निर्दिष्ट किया जा सकता है। एक कोवरिएट का एक तख़्ता प्रतिनिधित्व मैट्रिक्स में देखे गए मानों के एकल वेक्टर का विस्तार करता है जिसका आयाम बहुपद डिग्री और नॉट की संख्या है।
एक आवधिक splines के संस्करण केवल किसी भी प्रतिगमन की एक आवधिक संस्करण है: डेटा अवधि की लंबाई की प्रतिकृति में काटा जाता है। उदाहरण के लिए, चूहों पर एक बहुउद्देश्यीय प्रयोग में एक द्विअर्थी प्रवृत्ति को मॉडलिंग करने के लिए प्रयोग के समय में 24 घंटे की वृद्धि की आवश्यकता होती है, इसलिए 154 वें घंटे में 10 (154 = 6 * 24 + 10) के 24 मूल्य होंगे। यदि आप कट डेटा पर एक रेखीय प्रतिगमन फिट करते हैं, तो यह प्रवृत्ति के लिए एक आरा-दांत तरंग का अनुमान लगाएगा। यदि आप इस अवधि में कहीं एक कदम समारोह में फिट होते हैं, तो यह एक वर्ग तरंग होगा जो श्रृंखला को फिट करता है। तख़्ता बहुत अधिक परिष्कृत तरंगिका को व्यक्त करने में सक्षम है। splines
पैकेज में क्या है इसके लिए, एक फ़ंक्शन है periodicSpline
जो वास्तव में ऐसा करता है।
मुझे व्याख्या के लिए उपयोगी आर के डिफ़ॉल्ट तख्तापलट "बी एस" कार्यान्वयन नहीं मिलता है। इसलिए मैंने नीचे अपनी स्क्रिप्ट लिखी। समुद्री मील के साथ डिग्री की एक , यह प्रतिनिधित्व पहले कॉलम को मानक बहुपद प्रतिनिधित्व देता है, कॉलम ( ) को केवल ) के रूप में मूल्यांकित किया जाता है। जहां समुद्री मील का वास्तविक वेक्टर है।पीnकपीपी + आईमैं ≤ nकएसपी + आई= ( एक्स)- केमैं)पीमैं( एक्स)< कमैं)क
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
}
एक छोटे से मामले के अध्ययन के लिए, 0 से (या ) के डोमेन पर एक साइनसोइडल प्रवृत्ति को प्रक्षेपित करें: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
मेरे spline1.1- डिग्री के लिए सहसंयोजकों का पहला सेट पहले ब्रेकपॉइंट के पीछे पहले डोमेन के लिए बहुपद प्रवृत्ति है। रेखीय शब्द मूल पर स्पर्शरेखा का ढलान है, एक्स = 0। यह लगभग 1 है जो साइनसोइडल वक्र (cos (0) = 1) के व्युत्पन्न द्वारा इंगित किया जाएगा, लेकिन हमें यह ध्यान रखना चाहिए कि ये अनुमानित हैं, और द्विघात प्रवृत्ति को से बाहर निकालने की त्रुटि का खतरा है त्रुटि के लिए। द्विघात शब्द एक नकारात्मक, अवतल आकार को इंगित करता है। Spline2.2 शब्द पहले द्विघात ढलान से एक अंतर को इंगित करता है, जो 0.4 सकारात्मक अग्रणी गुणांक का संकेत देता है, जो एक ऊर्ध्व, उत्तल आकृति को दर्शाता है। इसलिए अब हमारे पास तख़्ता आउटपुट के लिए उपलब्ध व्याख्या है और तदनुसार अनुमान और अनुमानों का न्याय कर सकते हैं।π/ २
मैं यह मानकर चल रहा हूं कि आपको डेटा की आवधिकता का पता है। यदि डेटा में वृद्धि या चलती औसत घटक की कमी है, तो आप एक लंबी श्रृंखला को 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