আর টি ব্যবহার করে টাইম সিরিজের এসটিএল প্রবণতা


27

আমি আর আর সময় সিরিজের বিশ্লেষণে নতুন। আমি দৈনিক তাপমাত্রার সময় সিরিজের দীর্ঘ (40 বছর) প্রবণতাটি অনুসন্ধান করার চেষ্টা করছি এবং বিভিন্ন অনুমানের চেষ্টা করেছি। প্রথমটি হ'ল একটি সাধারণ লিনিয়ার রিগ্রেশন এবং দ্বিতীয়টি হ'ল essতু দ্বারা টাইম সিরিজের মৌসুমী ক্ষয়।

পরবর্তীকালে এটি প্রদর্শিত হয় যে alতু উপাদান ট্রেন্ডের চেয়ে বেশি। তবে, আমি কীভাবে প্রবণতাটি মাপবো? আমি কেবল একটি সংখ্যা চাই যা বলার প্রবণতা কতটা শক্তিশালী।

     Call:  stl(x = tsdata, s.window = "periodic")
     Time.series components:
        seasonal                trend            remainder               
Min.   :-8.482470191   Min.   :20.76670   Min.   :-11.863290365      
1st Qu.:-5.799037090   1st Qu.:22.17939   1st Qu.: -1.661246674 
Median :-0.756729578   Median :22.56694   Median :  0.026579468      
Mean   :-0.005442784   Mean   :22.53063   Mean   : -0.003716813 
3rd Qu.:5.695720249    3rd Qu.:22.91756   3rd Qu.:  1.700826647    
Max.   :9.919315613    Max.   :24.98834   Max.   : 12.305103891   

 IQR:
         STL.seasonal STL.trend STL.remainder data   
         11.4948       0.7382    3.3621       10.8051
       % 106.4          6.8      31.1         100.0  
     Weights: all == 1
     Other components: List of 5   
$ win  : Named num [1:3] 153411 549 365  
$ deg  : Named int [1:3] 0 1 1   
$ jump : Named num [1:3] 15342 55 37  
$ inner: int 2  
$ outer: int 0

এখানে চিত্র বর্ণনা লিখুন

উত্তর:


20

আমি stl()এটির জন্য বিরক্ত করব না - প্রবণতাটি উত্তোলনের জন্য স্বল্প স্মুথারের জন্য ব্যবহৃত ব্যান্ডউইদথ যে আপনি দেখেন ছোট আকারের ওঠানামার ফলে খুব দূরে, ছোট। আমি একটি অ্যাডিটিভ মডেল ব্যবহার করব। স্যামন উডের জিএএমএস বইয়ের ডেটা এবং মডেল কোডটি ব্যবহার করে এখানে একটি উদাহরণ রয়েছে:

require(mgcv)
require(gamair)
data(cairo)
cairo2 <- within(cairo, Date <- as.Date(paste(year, month, day.of.month, 
                                              sep = "-")))
plot(temp ~ Date, data = cairo2, type = "l")

কায়রো তাপমাত্রা তথ্য

প্রবণতা এবং মৌসুমী উপাদানগুলির সাথে একটি মডেল ফিট করুন --- সতর্কতা এটি ধীর:

mod <- gamm(temp ~ s(day.of.year, bs = "cc") + s(time, bs = "cr"),
            data = cairo2, method = "REML",
            correlation = corAR1(form = ~ 1 | year),
            knots = list(day.of.year = c(0, 366)))

লাগানো মডেলটি দেখতে এমন দেখাচ্ছে:

> summary(mod$gam)

Family: gaussian 
Link function: identity 

Formula:
temp ~ s(day.of.year, bs = "cc") + s(time, bs = "cr")

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  71.6603     0.1523   470.7   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Approximate significance of smooth terms:
                 edf Ref.df       F p-value    
s(day.of.year) 7.092  7.092 555.407 < 2e-16 ***
s(time)        1.383  1.383   7.035 0.00345 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

R-sq.(adj) =  0.848  Scale est. = 16.572    n = 3780

এবং আমরা এর মাধ্যমে প্রবণতা এবং মরসুমের পদগুলিকে কল্পনা করতে পারি

plot(mod$gam, pages = 1)

কায়রো লাগানো ট্রেন্ড এবং seasonতু

এবং যদি আমরা পর্যবেক্ষণ করা ডেটাতে ট্রেন্ডটি প্লট করতে চাই তবে আমরা ভবিষ্যদ্বাণী দিয়ে এর মাধ্যমে এটি করতে পারি:

pred <- predict(mod$gam, newdata = cairo2, type = "terms")
ptemp <- attr(pred, "constant") + pred[,2]
plot(temp ~ Date, data = cairo2, type = "l",
     xlab = "year",
     ylab = expression(Temperature ~ (degree*F)))
lines(ptemp ~ Date, data = cairo2, col = "red", lwd = 2)

কায়রো লাগানো ট্রেন্ড

বা প্রকৃত মডেলের জন্য একই:

pred2 <- predict(mod$gam, newdata = cairo2)
plot(temp ~ Date, data = cairo2, type = "l",
     xlab = "year",
     ylab = expression(Temperature ~ (degree*F)))
lines(pred2 ~ Date, data = cairo2, col = "red", lwd = 2)

কায়রো লাগানো মডেল

এটি কেবল একটি উদাহরণ, এবং আরও গভীর-বিশ্লেষণে কয়েকটি অজানা তথ্য রয়েছে এই বিষয়টি মোকাবেলা করতে পারে তবে উপরেরটি একটি ভাল সূচনা পয়েন্ট হওয়া উচিত।

প্রবণতাটি কীভাবে পরিমাপ করা যায় সে সম্পর্কে আপনার বক্তব্য হিসাবে - ভাল এটি একটি সমস্যা, কারণ প্রবণতা রৈখিক নয়, আপনার stl()সংস্করণ বা আমি দেখানো জিএএম সংস্করণেও নয়। যদি এটি হয়, আপনি পরিবর্তন হার (opeাল) দিতে পারে। যদি আপনি জানতে চান যে স্যাম্পলিংয়ের সময়কালে অনুমানিত প্রবণতা কতটা পরিবর্তিত হয়েছে, তবে আমরা অন্তর্ভুক্ত করা ডেটা ব্যবহার করতে পারি predএবং কেবলমাত্র ট্রেন্ডের উপাদানটিতে সিরিজের শুরু এবং শেষের মধ্যে পার্থক্যটি গণনা করতে পারি :

> tail(pred[,2], 1) - head(pred[,2], 1)
    3794 
1.756163

সুতরাং রেকর্ড শুরুর চেয়ে তাপমাত্রা গড়ে 1.76 ডিগ্রি উষ্ণ হয়।


চার্টটি দেখে আমি মনে করি ফারেনহাইট এবং সেলসিয়াসের মধ্যে কিছু বিভ্রান্তি থাকতে পারে।
হেনরি

ভাল স্পটেড - আমি কয়েক মাস ধরে একই রকম কাজ করছি এবং ডেটা সি ডিগ্রিতে রয়েছে অভ্যাসের জোর!
মনিকা পুনরায় ইনস্টল করুন - জি সিম্পসন

ধন্যবাদ গ্যাভিন, একটি খুব সুন্দর এবং বোধগম্য উত্তর। আমি আপনার পরামর্শ চেষ্টা করব। Stl () ট্রেন্ডের উপাদানটি প্লট করা এবং লিনিয়ার রিগ্রেশন করা কি ভাল ধারণা?
পাকোমেট

1
@ প্যাকোমেট - না, সত্যই না, যদি না আপনি উপরের মতো বাকীগুলিতে স্বতঃসংশোধনের জন্য অ্যাকাউন্ট তৈরি করে এমন মডেল ফিট করেন না। আপনি এর জন্য জিএলএস ব্যবহার করতে পারেন ( gls()প্যাকেজ এনএলএম)। তবে উপরের শো কায়রো হিসাবে দেখায় এবং এসটিএল আপনার ডেটার পরামর্শ দেয়, প্রবণতাটি লিনিয়ার নয়। যেমন, একটি রৈখিক প্রবণতা উপযুক্ত হবে না - কারণ এটি ডেটা সঠিকভাবে বর্ণনা করে না। আপনার এটি আপনার ডেটাতে চেষ্টা করা দরকার, তবে আমি যেমন একটি এমএম দেখায় তা যদি ডেটাতে সবচেয়ে উপযুক্ত হয় তবে তা রৈখিক প্রবণতায় অবনতি ঘটায়।
মনিকা পুনরায় ইনস্টল করুন - জি সিম্পসন

1
@ Andreas-h আমি এটি করব না; এসটিএল প্রবণতা বেশি লাগানো আছে। এআর () কাঠামোর সাথে গ্যাম ফিট করুন এবং ট্রেন্ডটির ব্যাখ্যা করুন। এটি একটি উপযুক্ত রিগ্রেশন মডেল দেবে যা আপনার পক্ষে আরও বেশি কার্যকর হবে।
মনিকা পুনরায় ইনস্টল করুন - জি সিম্পসন

4

গ্যাভিন একটি খুব গভীর উত্তর সরবরাহ করেছেন, তবে একটি সহজ এবং দ্রুত সমাধানের জন্য, আমি stl ফাংশন t.window প্যারামিটারটিকে এমন একটি মান হিসাবে সেট করার পরামর্শ দিচ্ছি যা টিএস ডেটার ফ্রিকোয়েন্সিটির একাধিক । আমি আগ্রহের অনুমানক সময়কাল ব্যবহার করব (উদাহরণস্বরূপ, ডুরানাল রেজোলিউশন ডেটা সহ দশকের ট্রেন্ডগুলির জন্য 3660 এর মান)। আপনি লেখকের গবেষণামূলক প্রবন্ধে বর্ণিত stl2 প্যাকেজটিতেও আগ্রহী হতে পারেন । আমি গ্যাভিনের পদ্ধতিটি আমার নিজের ডেটাতে প্রয়োগ করেছি এবং এটি খুব কার্যকর।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.