পর্যায়ক্রমিক ডেটা ফিট করার জন্য পর্যায়ক্রমিক স্প্লাইনস


10

এই প্রশ্নের একটি মন্তব্যে ব্যবহারকারী @ হুবহু পর্যায়ক্রমিক ডেটা ফিট করার জন্য স্প্লাইজের একটি পর্যায়ক্রমিক সংস্করণ ব্যবহারের সম্ভাবনার উল্লেখ করেছেন। আমি এই পদ্ধতিটি সম্পর্কে আরও জানতে চাই, বিশেষত স্প্লাইনগুলি সংজ্ঞায়িত সমীকরণগুলি এবং কীভাবে সেগুলি বাস্তবে প্রয়োগ করা যায় (আমি বেশিরভাগই একজন Rব্যবহারকারী, তবে যদি প্রয়োজন হয় তবে আমি ম্যাটল্যাব বা পাইথনের সাথে করতে পারি)। এছাড়াও, তবে এটি একটি "ভাল লাগছে", ত্রিকোণমিত্রিক বহুবর্ষীয় ফিটিংয়ের ক্ষেত্রে সম্ভাব্য সুবিধাগুলি / অসুবিধাগুলি সম্পর্কে জেনে রাখা ভাল হবে, যা আমি সাধারণত এই ধরণের ডেটা নিয়েই করি (যদি প্রতিক্রিয়া খুব মসৃণ না হয়, সেক্ষেত্রে আমি পর্যায়ক্রমিক কার্নেল সহ গাউসিয়ান প্রক্রিয়াতে স্যুইচ করি)।


2
আমার অন্য প্রশ্নের উত্তর চেক করুন। stats.stackexchange.com/questions/225729/…
দু

@ hxd1011 ধন্যবাদ, আমি টিপটির প্রশংসা করি। শেষ পর্যন্ত আমি ঠিক করলাম দু'বার তথ্যকে সদৃশ করবো, এভাবে তিনটি টানা এক অভিন্ন ডেটা থাকবে, এবং স্প্লাইনটি কেন্দ্রীয় তৃতীয়টিতে ফিট করবে fit আপনার উল্লেখ করা উত্তরটি এটি বিকল্প সমাধান হিসাবেও নির্দেশ করে।
ডেল্টাভিও

1
@ ডেল্টাইভ যদি আপনি আপনার মন্তব্যে কোনও উত্তরে রূপান্তর করতে পারেন এবং আরও কিছু বিশদ সরবরাহ করতে পারেন তবে আমার মনে হয় কিছু সমাধান করার পক্ষে এটি উত্তম উত্তর এবং ভাল প্রশ্ন।
অ্যাডমো

@ অ্যাডামো এই পরামর্শের জন্য ধন্যবাদ, তবে বছরের এই সময়টিতে আমি কিছুটা জলাবদ্ধ হয়েছি :-) তবে চেষ্টা করব। আমার প্রথমে সেই কোডটি পুনরুদ্ধার করা উচিত ...
ডেল্টাভিও

উত্তর:


5

স্প্লিংসগুলি সম্ভবত জটিল, অ-রৈখিক কার্যকরী ফর্মগুলির মডেল করতে রিগ্রেশন মডেলিংয়ে ব্যবহৃত হয়। একটি স্প্লিন স্মুটেড ট্রেন্ডটি টুকরোচক ধারাবাহিক বহুবচন নিয়ে গঠিত যার প্রতিটি ব্রেকপয়েন্টে বা গিঁটে শীর্ষস্থানীয় সহগ পরিবর্তন হয়। স্প্লাইনটি ট্রেন্ডের বহুপদী ডিগ্রির পাশাপাশি ব্রেকপয়েন্টগুলির ক্ষেত্রেও নির্দিষ্ট করা যেতে পারে। কোভেরিয়েটের একটি স্প্লাইন উপস্থাপনা পর্যবেক্ষণকৃত মানগুলির একটি একক ভেক্টরকে ম্যাট্রিক্সে প্রসারিত করে যার মাত্রা বহুপদী ডিগ্রি এবং নট সংখ্যা।

একটি পর্যাবৃত্ত splines সংস্করণ নিছক কোনো রিগ্রেশন একটি পর্যাবৃত্ত সংস্করণ: ডেটা সময়ের দৈর্ঘ্য প্রতিলিপি করে কাটা হয়। সুতরাং উদাহরণস্বরূপ, ইঁদুরগুলির উপর একটি মাল্টি-ডে পরীক্ষায় ডিউরানাল ট্রেন্ডের মডেলিংয়ের জন্য পরীক্ষার পুনর্নির্মাণের সময়টি 24 ঘন্টা ইনক্রিমেন্টে প্রয়োজন হবে, তাই 154 তম ঘন্টা 10 (154 = 6 * 24 + 10) এর মডুলো 24 মান হবে। যদি আপনি কাটা ডেটাতে লিনিয়ার রিগ্রেশন ফিট করেন তবে এটি ট্রেন্ডটির জন্য করাত-দাঁত তরঙ্গরূপটি অনুমান করবে। আপনি যদি পিরিয়ডের কোথাও কোনও পদক্ষেপের জন্য ফিট করেন তবে এটি একটি বর্গাকার তরঙ্গরূপ হবে যা এই সিরিজটির সাথে খাপ খায়। স্প্লাইনটি আরও অনেক পরিশীলিত তরঙ্গটি প্রকাশ করতে সক্ষম। splinesপ্যাকেজে এটির মূল্য কী, এর জন্য একটি ফাংশন রয়েছে periodicSplineযা ঠিক এটি করে।

আমি আর-এর ডিফল্ট স্প্লাইন "বিএস" বাস্তবায়ন ব্যাখ্যার জন্য দরকারী মনে করি না। সুতরাং আমি নীচে আমার নিজস্ব স্ক্রিপ্ট লিখেছি। নট দিয়ে ডিগ্রি এর একটি , এই উপস্থাপনাটি প্রথম কলামগুলিকে স্ট্যান্ডার্ড বহুপদী প্রতিনিধিত্ব করে, কলামগুলি ( ) কেবল ) হিসাবে মূল্যায়ন করা হয় যেখানে নটগুলির প্রকৃত ভেক্টর।এন কে পি পি + আই আমি এন কে এস পি + আই = ( এক্স - কে আই ) পি আই ( এক্স < কে আই ) কেpnkpp+iinkSp+i=(Xki)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
}

সামান্য কেস অধ্যয়নের জন্য, 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

আমার স্প্লাইন ১.১-ডিগ্রির জন্য প্রথম সেটটি হ'ল প্রথম ব্রেকেমপয়েন্টের পিছনে প্রথম ডোমেনের বহুপদী প্রবণতা। রৈখিক শব্দটি হ'ল উত্সের স্পর্শকের opeাল, এক্স = 0। এটি প্রায় 1 যা সাইনোসয়েডাল বক্ররেখা (কোস (0) = 1) এর ডেরাইভেটিভ দ্বারা নির্দেশিত হবে, তবে আমাদের অবশ্যই মনে রাখতে হবে যে এগুলি প্রায় অনুমান এবং qu চতুর্ভুজ প্রবণতা বহির্ভূত করার ত্রুটি প্রবণ ত্রুটি। চতুর্ভুজ শব্দটি একটি নেতিবাচক, অবতল আকারকে নির্দেশ করে। স্প্লাইন ২.২ শব্দটি প্রথম চতুর্ভুজ slাল থেকে একটি পার্থক্য নির্দেশ করে, যা 0.4 পজিটিভ শীর্ষস্থানীয় সহগকে একটি anর্ধ্বমুখী, উত্তল আকৃতির নির্দেশ করে। সুতরাং আমরা এখন স্প্লাইন আউটপুট জন্য ব্যাখ্যা উপলব্ধ আছে এবং সেই অনুসারে অনুমান এবং অনুমান বিচার করতে পারেন।π/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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.