আমি কীভাবে কোনও সিরিজে ডেটা পয়েন্টের সংখ্যা হ্রাস করব?


11

আমি 10 বছরেরও বেশি সময় ধরে পরিসংখ্যান অধ্যয়ন করি না (এবং তারপরে কেবলমাত্র একটি প্রাথমিক কোর্স), তাই আমার প্রশ্নটি বুঝতে কিছুটা কঠিন।

যাইহোক, আমি যা করতে চাই তা হল একটি সিরিজের ডেটা পয়েন্টের সংখ্যা হ্রাস করা। X- অক্ষটি পরিমাপের শুরু থেকে মিলিসেকেন্ডের সংখ্যা এবং y- অক্ষটি সেই বিন্দুটির জন্য পড়া reading

প্রায়শই হাজার হাজার ডেটা পয়েন্ট থাকে তবে আমার কেবল কয়েকশো প্রয়োজন হতে পারে। সুতরাং আমার প্রশ্নটি: আমি কীভাবে ডেটা পয়েন্টের সংখ্যা হ্রাস করব?

প্রক্রিয়াটি কী বলা হয়? (সুতরাং আমি এটি গুগল করতে পারি) কোনও পছন্দসই অ্যালগরিদম আছে (আমি এটি সি # তে প্রয়োগ করব)

আশা করি আপনি কিছু ক্লু পেয়ে গেছেন আমার সঠিক পরিভাষার অভাবের জন্য দুঃখিত।


সম্পাদনা করুন: আরও বিশদ এখানে আসে:

আমার যে কাঁচা ডেটা পেয়েছে তা হ'ল হার্টের ডেটা এবং শেষ বিট থেকে মিলসেকেন্ডের সংখ্যা আকারে। ডেটা প্লট করার আগে আমি প্রথম নমুনা থেকে মিলিসেকেন্ডের সংখ্যা এবং প্রতিটি ডেটা পয়েন্টে বিপিএম (প্রতি মিনিটে বীট) গণনা করি (60000 / বারানস্লস্টবিট)।

আমি ডেটা ভিজ্যুয়ালাইজ করতে চাই, অর্থাৎ এটি একটি লাইন গ্রাফে প্লট করুন। আমি গ্রাফের পয়েন্টের সংখ্যা হাজার থেকে কয়েকশ করে কমিয়ে আনতে চাই।

একটি বিকল্প হ'ল সিরিজের প্রতি সেকেন্ডের জন্য গড় বিপিএম গণনা করা, বা সম্ভবত প্রতি 5 সেকেন্ড বা তারপরে। এটি বেশ সহজ হত যদি আমি জানতাম যে আমার সেই পিরিয়ডগুলির প্রত্যেকের জন্য কমপক্ষে একটি নমুনা থাকবে (5 সেকেন্ডের ব্যবধানের ব্যবধান)।


আমি এটি ভুলে গেছি: এক্স-অক্ষ বরাবর পয়েন্টগুলি বিভিন্ন ব্যবধান সহ আসে।

আমি নিশ্চিত যে আমি বুঝতে পারি না। আপনার কি Y- অক্ষ নেই?

ওহ দুঃখিত. আমি ভুল লিখেছি। আমি এখন উপরে এটি পরিবর্তন করেছি।

আমি আপনাকে আরও কিছু তথ্য সরবরাহ করা প্রয়োজন মনে করি। উদাহরণস্বরূপ, আমি এখনও গ্রাফটি কল্পনা করতে পারি না। তোমার লক্ষ্য কি?

আচ্ছা দুঃখিত. আমি উপরে আরও কিছু বিবরণ যুক্ত করেছি।

উত্তর:


10

আপনার দুটি সমস্যা রয়েছে: অনেকগুলি পয়েন্ট এবং কীভাবে বাকী পয়েন্টগুলি সুগম করবেন।

আপনার নমুনা পাতলা

আপনার যদি বাস্তব সময়ে আগত অনেকগুলি পর্যবেক্ষণ থাকে, আপনি সর্বদা আপনার নমুনাটি সরু করার জন্য সাধারণ এলোমেলো নমুনা ব্যবহার করতে পারেন । দ্রষ্টব্য, এটির জন্যও সত্য, পয়েন্টের সংখ্যাটি খুব বড় হতে হবে।

ধরুন আপনার কাছে N পয়েন্ট রয়েছে এবং আপনি কেবল সেগুলির মধ্যে এন চান । তারপরে একটি পৃথক ইউনিফর্ম ইউ (0, এন -1) বিতরণ থেকে এন এলোমেলো সংখ্যা তৈরি করুন । এই আপনি ব্যবহার পয়েন্ট হবে।

আপনি প্রতিটি বিন্দুতে এই ক্রমানুসারে, অর্থাত্ কাজ করতে চান, তাহলে আপনি এটি ব্যবহার করতে বা না হয় তাহলে, শুধুমাত্র সম্ভাব্যতা সঙ্গে একটি বিন্দু গ্রহণ সিদ্ধান্ত নেন পি । সুতরাং আপনি যদি পি = 0.01 নির্ধারণ করেন তবে আপনি একশতে 1 পয়েন্ট (গড়) গ্রহণ করবেন।

যদি আপনার ডেটা অসমভাবে ছড়িয়ে পড়ে এবং আপনি কেবল পয়েন্টের পাতলা ঘন অঞ্চলগুলি করতে চান তবে কেবল আপনার পাতলা ফাংশনটিকে কিছুটা পরিশীলিত করুন। উদাহরণস্বরূপ, পি পরিবর্তে , কি সম্পর্কে:

1pexp(λt)

যেখানে হ'ল ধনাত্মক সংখ্যা এবং শেষ পর্যবেক্ষণের পর থেকে সময়। যদি দুটি পয়েন্টের মধ্যে সময় বড় হয়, অর্থাৎ বড় তবে পয়েন্টটি গ্রহণের সম্ভাবনা এক হবে। বিপরীতে, দুটি পয়েন্ট একসাথে কাছাকাছি থাকলে, একটি পয়েন্ট গ্রহণের সম্ভাবনা ।λtt1p

আপনি মান নিয়ে পরীক্ষা করার প্রয়োজন হবে এবং ।λp

মসৃণকরণ

সম্ভবত একটি সাধারণ চলমান গড় টাইপ স্কিমের মতো কিছু। অথবা আপনি কার্নেল স্মুথ (যেমন অন্যদের পরামর্শ অনুসারে) এর চেয়ে আরও উন্নত কিছু যেতে পারেন । আপনার খুব সতর্কতা অবলম্বন করা উচিত না সেজন্য আপনাকে সতর্কতা অবলম্বন করা উচিত, যেহেতু আমি ধরে নিয়েছি যে আপনার দৃশ্যে খুব দ্রুত হঠাৎ ড্রপ তোলা উচিত।

এই ধরণের স্টাফের জন্য সি # লাইব্রেরি উপলব্ধ থাকতে হবে ।

উপসংহার

যদি প্রয়োজন হয় পাতলা, তারপর মসৃণ।


আহ, আকর্ষণীয়, তবে আমার এটি অনুমানযোগ্য হওয়া দরকার, অর্থাত প্রতিবার ডেটা দেখলে একই ফলাফল পাওয়া উচিত have

সেক্ষেত্রে আপনি যে পয়েন্টগুলি চয়ন করেছেন তার এন সূচকগুলি তৈরি করুন এবং সেই সূচিগুলি সংরক্ষণ করুন।
csgillespie

বা নমুনা দেওয়ার আগে বীজ আরএনজিতে সংরক্ষণ করুন।
ডার্ক এডেলবুয়েটেল

বীজ সম্পর্কে ডার্কের সমাধান সম্ভবত আরও ভাল বিকল্প।
csgillespie

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

9

ঠিক আছে, আমি মনে করি আপনি যে শব্দটির সন্ধান করছেন তা হ'ল "নমুনা", তবে কেন আপনি এটি করতে চান তা আমি নিশ্চিত নই। হাজার হাজার ডেটা পয়েন্ট খুব বেশি নয়। অথবা আপনি কি সামান্য দূরত্বের সমান পয়েন্টের সংখ্যক সংখ্যক প্লট করতে দেখছেন? এটিকে সাধারণত "বিনিং" বলা হয়।

আপনার লক্ষ্যটি কী কোনও দৃশ্যায়ন তৈরি করা যায়? সেক্ষেত্রে, আপনি কাঁচা তথ্য রাখতে চান, এটিকে একটি স্ক্যাটারগ্রাফ হিসাবে প্লট করতে পারেন, তারপরে কিছুটা কেন্দ্রীয় প্রবণতা (রিগ্রেশন লাইন, স্প্লাইন, যাই হোক না কেন) ওভারলে করে টেকহোম বার্তাটি যা কিছু করা উচিত তা যোগাযোগ করতে পারেন।

বা আপনার সংখ্যাটি কোনওভাবে সংখ্যার সাথে সংক্ষিপ্তসার করার জন্য? সেক্ষেত্রে আপনি নিজের সমস্যাটি আরও বিশদে ব্যাখ্যা করতে চাইতে পারেন!


হ্যাঁ, ভিজ্যুয়ালাইজেশনটি আমি যা চাই তা চাই। আমি প্রশ্নটিতে আরও কিছু তথ্য যুক্ত করেছি।

স্মুথিং লাইন দিয়ে কাঁচা ডেটা প্লট করা সেকেন্ডিং।
JoFrhwld

মসৃণ লাইনের সাহায্যে কাঁচা ডেটা প্লট করা --- আপনি বিপিএমের পরিবর্তনের জন্য পৃথক ভিজ্যুয়ালাইজেশন হিসাবে কালক্রমে প্লট করতেও পারেন।
জন

5

গড় গণনা ডেটা পয়েন্টের সংখ্যা হ্রাস করার চেয়ে আলাদা ডেটাसेटকে বাড়ে। যদি প্রতি মিনিটে একটি হৃদস্পন্দন অন্য হৃদস্পন্দনের চেয়ে অনেক দ্রুত হয় তবে আপনি আপনার স্মুথ প্রক্রিয়াটির মাধ্যমে সংকেতটি হারাবেন।

আপনি যদি 125-125-0-125-125 কে সংক্ষিপ্ত বিবরণ হিসাবে 100 কে হিসাবে গল্প বলে থাকেন যা আপনার স্মুথিংয়ের মাধ্যমে ডেটা বলে।

কখনও কখনও হৃদয় এমনকি বীট এড়িয়ে যায় এবং আমি বিশ্বাস করি যে এটি এমন একটি ইভেন্ট যা আকর্ষণীয় তবে হার্ট রেটের চক্রান্ত করা ডেটা দেখতে চায়।

আমি তাই প্রস্তাব করব যে আপনি যেমন একটি সূত্র সঙ্গে দুটি পয়েন্ট মধ্যে দূরত্ব গণনা d=sqrt((time1-time2)^2 + (bpm1-bpm2))

আপনি আপনার প্রোগ্রামে ন্যূনতম দূরত্ব নির্ধারণ করেছেন। তারপরে আপনি আপনার ডেটা দিয়ে পুনরাবৃত্তি করুন এবং প্রতিটি পয়েন্টের পরে নিম্নলিখিত সমস্ত পয়েন্টগুলি মুছবেন যার জন্য d আপনার নূন্যতম দূরত্বের চেয়ে ছোট।

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


আকর্ষণীয় পোস্টিং। আমি এটিও খতিয়ে দেখব। তোমার ধারনা সম্ভবত ঠিক.

2

বিপিএম যদি অনেকগুলি নমুনার উপরে একই রকম থাকে (বা আপনি যে বিষয়ে উদ্বিগ্ন হন না এমনভাবে কিছু পরিবর্তন করে) আপনি নিজের ডেটাটি এমন একটি গুরুত্বপূর্ণ অঙ্কে ছাঁটাই করতে পারেন যা আপনি প্রকৃত পক্ষে যত্নবান হন এবং তারপরে দৈর্ঘ্য এনকোডিং চালান।

উদাহরণস্বরূপ, আরে এই ডেটা:

0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

এই আউটপুট আছে

rle(data)
Run Length Encoding
  lengths: int [1:3] 10 15 15
  values : num [1:3] 0 1 2

1

আপনি পর্যাপ্ত তথ্য সরবরাহ করছেন না। আপনি কেন ডেটা পয়েন্ট হ্রাস করতে চান? কয়েক হাজার আজকাল কিছুই নেই।

প্রদত্ত যে আপনি প্রতিবার একই ডেটা দেখতে একই ফলাফল চান আপনি সম্ভবত বিন গড় গড় করতে চান। আপনার এক্স-অক্ষে আপনার পরিবর্তনশীল ব্যবধান রয়েছে। আপনি কি এটি ধারাবাহিক করার চেষ্টা করছেন? সেক্ষেত্রে আপনি সম্ভবত 50 মেসি বা 100 এর একটি বিন প্রস্থ নির্ধারণ করবেন এবং তারপরে সেখানে সমস্ত পয়েন্ট গড় করুন। আপনার যে সেটটি চান সেটির আকারের ডাটা পয়েন্টগুলি হ্রাস করার জন্য বিনের প্রস্থটিকে তত বড় করুন।

আপনি কেন ডেটা থেকে মুক্তি পাচ্ছেন তার কারণ ছাড়াই উত্তর দেওয়া সত্যিই একটি কঠিন প্রশ্ন।


আচ্ছা দুঃখিত. আমি উপরে আরও কিছু বিবরণ যুক্ত করেছি।

1

আপনার ডেটা পয়েন্টগুলি হ্রাস করার জন্য, আপনি রামার – ডগলাস – পিউকার অ্যালগরিদম ব্যবহার করতে পারেন যা বোঝা এবং বাস্তবায়ন করা খুব সহজ। নমুনাযুক্ত সিগন্যালটি মূলটির সাথে খুব মিল থাকবে।

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