স্প্লাইনস ব্যবহার করে ঘনত্বের ফাংশনের স্থানীয় চূড়ান্ত সন্ধান করা


15

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

সুতরাং, আমার প্রশ্নগুলি:

  1. কোন ফাংশন দেওয়া হয়েছে splinefun, কোন পদ্ধতিগুলি স্থানীয় ম্যাক্সিমাকে খুঁজে পাবে?
  2. কোন ফাংশনটি ব্যবহার করে ফিরে এসেছে তার ডেরিভেটিভগুলি খুঁজে পাওয়ার কোনও সহজ / মানক উপায় আছে splinefun?
  3. সম্ভাব্যতা ঘনত্ব ফাংশনের স্থানীয় ম্যাক্সিমার সন্ধানের জন্য আরও ভাল / মানক উপায় কি?

রেফারেন্সের জন্য, নীচে আমার ঘনত্ব ফাংশনের একটি প্লট রয়েছে। আমি যে অন্যান্য ঘনত্বের ফাংশন নিয়ে কাজ করছি তা ফর্মের মতো। আমার বলা উচিত যে আমি আরে নতুন, তবে প্রোগ্রামিংয়ে নতুন নই, তাই আমার যা প্রয়োজন তা অর্জনের জন্য একটি স্ট্যান্ডার্ড গ্রন্থাগার বা প্যাকেজ থাকতে পারে। ঘনত্ব ফাংশন

আপনার সাহায্যের জন্য ধন্যবাদ!!


'প্রতিবেশীদের আশেপাশে অনুসন্ধান করুন' পদ্ধতির জন্য কেন বিপুল পরিমাণ ডেটা সমস্যা বলে আমি স্পষ্ট নই। density()প্রতিটি ডাটামের ঘনত্ব অনুমান করে না, এটি n মানগুলির ঘনত্বের অনুমান করে , যেখানে n একটি ব্যবহারকারী-নির্দিষ্ট পরামিতি যেখানে ডিফল্ট মান n = 512 রয়েছে
onestop

এর জন্য আমার এন 2 ^ 15 এবং এটি মনে হচ্ছে যে পয়েন্ট-বাই-পয়েন্ট পর্যায়ে ডেটাটির অনেক বৈচিত্র রয়েছে। আমি আশেপাশের পদ্ধতির অনুরূপ কিছু ব্যবহার করে (সর্বাধিক / মিনিট অনুসন্ধানকারী) লেখার চেষ্টা করেছি msExtrema {msProcess}এবং সহনশীলতা সেটিংসের সাথে খেলতে পেরে কেবলমাত্র কয়েকজনকেই সর্বাধিক কিছু সনাক্ত করতে সক্ষম হয়েছি।
অ্যারোনলেভিন

2
কোডটির দিকে তাকালে এটি প্যাকেজটির msExtremaজন্য একটি সহজ মোড়ক , যা আপনি কেবল স্থানীয় ম্যাক্সিমা চাইলে স্থানীয় মিনিমা না চাইলে সরাসরি ব্যবহার করা ভাল better আমি দেখতে পাচ্ছি না কেন ডিফল্ট ব্যবহার করে সমস্ত স্থানীয় ম্যাক্সিমা খুঁজে পাবে না। দক্ষতার জন্য বড় উদ্বেগ হওয়ার জন্য 2 ^ 15 = 32768 এত বড় হওয়া উচিত নয়। peakssplus2Rspan=3
onestop

স্প্লাইনফুন দ্বারা ফিরিয়ে ফাংশনটির একটি আর্গুমেন্ট "ডেরিভ" থাকে যা ডিফল্টরূপে 0 হয়। প্রথম ডেরাইভেটিভের জন্য ডেরিভ = 1 সেট করুন।
সায়ান

1
হুম, peaksবগি হিসাবে দেখা যাচ্ছে: এটির max.colডিফল্ট সেটিংসের সাথে এটি কল করে ties.method = "random", যা কেবল এলোমেলোভাবে বন্ধনগুলি ভেঙে দেয় না তবে টাই ঘোষণার জন্য 1e-5 এর তুলনামূলক সহনশীলতাও সেট করে। পূর্ববর্তীটি বিভ্রান্তিকর, পরে এখানে অবশ্যই আপনি যা চান তা নয়। peaks()এমন একটি strictপ্যারামিটারও নেয় যা দুর্বলভাবে নথিভুক্ত থাকে এবং ফাংশনের কোডটি দেখে কিছুই করে না। আহ, ব্যবহারকারীর অবদানযুক্ত সফ্টওয়্যার লাইব্রেরির আনন্দ! আপনি সম্ভবত এটি ঠিক করতে সক্ষম হবেন, আপনি যেমন বলেছেন যে আপনি প্রোগ্রামিংয়ে নতুন নন,
onestop

উত্তর:


14

আপনি যা করতে চান কেমোমেট্রিক্সে শিখর সনাক্তকরণ বলে। এর জন্য আপনি বিভিন্ন পদ্ধতি ব্যবহার করতে পারেন। আমি এখানে খুব সহজ পদ্ধতির প্রদর্শন করি।

require(graphics)
#some data
d <- density(faithful$eruptions, bw = "sj")

#make it a time series
ts_y<-ts(d$y)

#calculate turning points (extrema)
require(pastecs)
tp<-turnpoints(ts_y)
#plot
plot(d)
points(d$x[tp$tppos],d$y[tp$tppos],col="red")

সমস্ত সমাধানগুলির মধ্যে এটি সবচেয়ে ভাল কাজ করেছে। ১. ফলোআপ প্রশ্ন: টার্নপয়েন্টগুলির সাথে সহনশীলতা টগল করার কোনও উপায় আছে কি? ঘনত্বের ক্রিয়াকলাপটির দীর্ঘ-পুচ্ছ অংশে প্রচুর পিক এবং উপত্যকার স্থান পেয়েছে। ২. ফলোআপ প্রশ্ন # 2: সহনশীলতা নির্ধারণ করার একটি ভাল উপায় কী?
অ্যারোনলেভিন

বিজ্ঞাপন 1. আমি মনে করি না। এটি সময় সিরিজের এলোমেলোতা পরীক্ষা করার উদ্দেশ্যে করা হয়, সুতরাং ফাংশনটির এটির প্রয়োজন নেই। আপনি নিজের একটি শীর্ষের প্রাসঙ্গিকতা / তাত্পর্য পরীক্ষা করার চেষ্টা করতে পারেন। উদাহরণস্বরূপ, আপনি পাড়ার বিরুদ্ধে একটি টি-টেস্ট করতে পারেন (যেখানে আপনি কীভাবে প্রতিবেশী হওয়া উচিত তা সিদ্ধান্ত নিতে পারেন)। অথবা (ভর) স্পেকট্রোম্যাট্রি বা অন্যান্য বিশ্লেষণী রসায়ন পদ্ধতি থেকে ডেটা মূল্যায়নের জন্য আপনি আর প্যাকেজগুলিতে আরও নমনীয় ফাংশনটি সন্ধান করতে পারেন।
রোল্যান্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.