একটি নির্ধারিত সংকেত পর্যায়ক্রমিক কিনা তা আমি কীভাবে নির্ধারণ করব?


12

আমি জানতে চাই যে কীভাবে আমি নির্ধারণ করতে পারি যে কোনও সিরিজের ডেটা পর্যায়ক্রমিক কিনা।

আমি ফুরিয়ার ট্রান্সফর্ম / সিরিজ ব্যবহার করতে চাই। আমার ডেটা হয় এপরিওডিক দেখায়

[111100001111000110010101010000101]

বা পর্যায়ক্রমিক

[11001100110011001100]

এবং এটি স্বয়ংক্রিয়ভাবে কী তা আমার সিদ্ধান্ত নেওয়া উচিত। কোন সংকেত পর্যায়ক্রমিক কিনা তা নির্ধারণ করতে আমি কোন ধরণের বিশ্লেষণ বা গণনা সম্পাদন করতে পারি?

উত্তর:


14

আমি পর্যায়ক্রমিকতা নির্ধারণের জন্য একটি সাধারণীকরণের অটোকোররিলেশন করব । এটি পিরিয়ড সহ পর্যায়ক্রমিক হলে ফলাফলের প্রতিটি পি নমুনায় আপনার পিকগুলি দেখতে হবে । "1" এর একটি সাধারণ ফলাফল নিখুঁত সাময়িক সময়ের বোঝায়, "0" সেই সময়কালে কোনও পর্যায়ক্রমিকতা বোঝায় না এবং অসম্পূর্ণ সময়ের মধ্যে মানগুলি বোঝায়। স্বতঃসিদ্ধকরণ করার আগে ডেটা সিকোয়েন্স থেকে ডেটা সিকোয়েন্সের গড়কে বিয়োগ করুন কারণ এটি ফলাফলকে পক্ষপাতিত্ব করবে।পিপি

কম ওভারল্যাপিং নমুনা থাকার কারণে শিখরগুলি কেন্দ্র থেকে আরও দূরে হ্রাস পেতে থাকে। ওভারল্যাপিং নমুনার শতাংশের বিপরীত দ্বারা ফলাফলগুলি গুণ করে আপনি সেই প্রভাবটি হ্রাস করতে পারেন।

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

ইউ(এন)=একজন(এন)*এন|এন-এন|
ইউ(এন)একজন(এন)এনএন

সম্পাদনা: অনুক্রমগুলি পর্যায়ক্রমিক হয় কিনা তা কীভাবে বলা যায় এটির একটি উদাহরণ example নিম্নলিখিত মাতলাব কোড।

s1 = [1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 0 1 0 1];
s1n = s1 - mean(s1);
plot(xcorr(s1n, 'unbiased'))

Xcorr ফাংশনের "নিরপেক্ষ" প্যারামিটারটি আমার উপরের আমার সমীকরণে বর্ণিত স্কেলিংটি করতে বলে। অটো-পারস্পরিক সম্পর্ক স্বাভাবিক হয় না, যদিও, কেন কেন্দ্রের শিখরটি 1 টির পরিবর্তে 0.25 এর কাছাকাছি থাকে That এটি গুরুত্বপূর্ণ নয়, যতক্ষণ না আমরা যতক্ষণ মনে রাখি কেন্দ্রের শিখরটি নিখুঁত সম্পর্ক is আমরা দেখতে পাই যে বাইরেরতম প্রান্তগুলি ব্যতীত অন্য কোনও অনুরূপ পিক নেই। এগুলি কোনও কারণ নয় কারণ সেখানে কেবলমাত্র একটি মাত্র নমুনা ওভারল্যাপিং রয়েছে, সুতরাং এটি অর্থবহ নয়।

অ পর্যাবৃত্ত

s2 = [1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0];
s2n = s2 - mean(s2);
plot(xcorr(s2n, 'unbiased'))

এখানে আমরা দেখতে পাই যে ক্রমটি পর্যায়ক্রমিক কারণ এখানে কেন্দ্রের শীর্ষের মতো একই প্রস্থের একাধিক নিরপেক্ষ অটোকোরিলেশন শিখর রয়েছে।

পর্যাবৃত্ত


3
একজন(এন)

1
@ পিটারক গুড পয়েন্ট
জিম ক্লে

আরে জিম, ধন্যবাদ..এই প্রোগ্রামিং শুরু করার জন্য আমি কিছুটা বিভ্রান্ত হয়ে পড়েছি, কারণ যেখানেই আমি স্বতঃসংশ্লিষ্টতা সম্পর্কে অনুসন্ধান করি সেখানে জটিল সূত্রগুলি খুঁজে পাই, আমি কোডটি পি থেকে পিরিয়ডের সাথে কীভাবে শীর্ষস্থান আবিষ্কার করব সেখান থেকে আমি সত্যিই ধারণাটি পাই না । আমার সাথে আমার কাছে ভি মানের একটি তালিকা রয়েছে [] = 00 110011001100 ..} এখন কীভাবে এগুলি স্বতঃসংশোধের সূত্রে রাখা যায় এবং এর পর্যায়ক্রমিক বা অন্য সময়কে কীভাবে নির্ধারণ করা যায় ... আপনি কি দয়া করে আমাকে একটু সহজ শুরু করতে পারেন ... অনেক ধন্যবাদ
সাফজাম

@ সাফজম আপনি যদি মাতলাব বা পাইথন (নমপি) ব্যবহার করছেন তবে তাদের ইতিমধ্যে স্বতঃসংশোধনের কাজ রয়েছে। আপনার যদি সি / সি ++ / জাভা / যা কিছু প্রয়োজন হয় তবে এখানে চেষ্টা করুন- dsprelated.com/showmessage/59527/1.php
জিম ক্লে

উদাহরণস্বরূপ আমি নিম্নলিখিত দুটি সিগন্যাল এস 1 উত্তর এস 2 ব্যবহার করেছি: এস 1 = [1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1] এস 2 = [1, 0, 1, 1, 1, 0 , 1, 0, 0, 0, 1] আর 1 = numpy.correlate (এস 1, এস 1, মোড = 'পূর্ণ') আর 2 = numpy.correlate (এস 2, এস 2, মোড = 'পূর্ণ') আমি এই চারটি লাইন একটিতে ব্যবহার করেছি পাইথন কোড আমি r1 = [1 2 1 2 4 2 3 6 3 4 8 4 3 6 3 2 4 2 1 1 1 1] এবং আর 2 = [1 0 1 1 2 0 3 2 3 6 6 2 3 2 3 0 2 1 1 0 1] আর 1 এবং আর 2 উভয়ই আকারের মতো একই রংধনু বক্ররেখা দেয় .. আমি কোডটিতে কীভাবে নির্ধারণ করতে পারি যে একটি সিগন্যাল পেরয়েডিক বা প্রায় পর্যায়ক্রমিক বা মোটেও পর্যায়ক্রমিক নয়, ধন্যবাদ
সাফজাম

4

জিমের উত্তর আমাকে এই পরিসংখ্যানগতভাবে কীভাবে পরীক্ষা করতে হবে তা ভাবতে পাঠিয়েছে। এটি আমাকে ডার্বিন-ওয়াটসন অটোকোররিলেশন পরীক্ষায় নিয়ে গেছে

এটির সাধারণীকরণটি হ'ল:

ডিওয়াট(τ)=Σএন=τএন-1[ইউ(এন)-ইউ(এন-τ)]2Σএন=0এন-1ইউ(এন)2

এবং সায়্লাব এ প্রয়োগ করার জন্য আমার প্রচেষ্টাটি হ'ল:

// http://en.wikipedia.org/wiki/Durbin%E2%80%93Watson_statistic
s1 = [1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 0 1 0 1];
s1n = s1 - mean(s1);
xs1 = xcorr(s1n,"unbiased");
N1 = length(xs1);

s2 = [1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0];
s2n = s2 - mean(s2);
xs2 = xcorr(s2n,"unbiased");
N2 = length(xs2);

dwstat1 = [];
dwstat2 = [];

for lag = 1:15,

    dxs1 = xs1((lag+1):N1) - xs1(1:(N1-lag));
    dxs2 = xs2((lag+1):N2) - xs2(1:(N2-lag));


    dwstat1 = [dwstat1 sum(dxs1.^2) / sum(xs1.^2)];
    dwstat2 = [dwstat2 sum(dxs2.^2) / sum(xs2.^2)];

end;

ডিওয়াট(τ)τ

যদি আমি আমাদের দুটি উদাহরণ সিকোয়েন্সের জন্য ফলাফলটি প্লট করি:

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

তারপরে এটি স্পষ্ট যে দ্বিতীয় ক্রমটি 4, 8 ইত্যাদির লগগুলিতে পারস্পরিক সম্পর্ক এবং 2, 6, ইত্যাদির ব্যবধানে পারস্পরিক সম্পর্ককে প্রদর্শন করে ex

ডিওয়াট(τ)


এই তথ্যের জন্য তোমাকে ধন্যবাদ. প্রকৃতপক্ষে আমি অজগরটিতে একটি প্রোগ্রাম তৈরি করছি যেখানে আমি 0 এবং 1 এর তালিকাগুলি পেয়েছি। আমি পর্যায়ক্রমিক, এলোমেলো, বার্সার ধরণের সিরিজ আলাদা করতে চাই। আমি অজগরের উপরের যুক্তিটি চেষ্টা করছি তবে "xcorr" ফাংশন পাইথনে নেই, তারপরে আমি numpy.correlate (lst, lst, মোড = 'পূর্ণ') ফাংশনটি ব্যবহার করেছি। এছাড়াও তালিকাগুলিতে 0s এবং 1s এর 70,000 তালিকা রয়েছে round আমি কেবলমাত্র এই তালিকাটি পর্যায়ক্রমিক কিনা তা নির্ধারণ করতে চাই ... যদি সামান্য কিছু সময়সীমা থাকে তবে আমি এড়াতে পারি। আরও কোনও ইঙ্গিত plz। আগাম ধন্যবাদ.
সাফজাম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.