চলন্ত গড় থেকে ডেটা পয়েন্টগুলি নিষ্কাশন করবেন?


15

চলমান গড় ডেটা থেকে ডেটা পয়েন্টগুলি বের করা কি সম্ভব?

অন্য কথায়, যদি ডেটা সংস্থায় কেবল পূর্ববর্তী 30 পয়েন্টের সরল গড় হয় তবে মূল ডেটার পয়েন্টগুলি বের করা কি সম্ভব?

যদি তাই হয়, কিভাবে?


1
উত্তরটি একটি হ্যাঁ হ্যাঁ, তবে সঠিক প্রক্রিয়াটি নির্ভর করে যে ডেটার প্রাথমিক বিভাগটি চিকিত্সা করা হয় তার উপর। যদি এটি সহজভাবে বাদ দেওয়া হয় তবে আপনি কার্যকরভাবে 15 টি টুকরো হারিয়ে ফেলেছেন, আপনাকে রৈখিক সমীকরণের একটি নির্বিঘ্নিত সিস্টেমের সাহায্যে ছেড়ে চলে যায়। আপশটটি হ'ল সাধারণভাবে অনেকগুলি বৈধ উত্তর রয়েছে তবে আপনি এখনও কিছু অগ্রগতি করতে পারেন যদি হয় (ক) ছোট 15 টি চলন্ত গড়ের জন্য উইন্ডো (বা এরকম কিছু পদ্ধতি) ব্যবহার করা হয় বা (খ) আপনি অতিরিক্ত বাধা নির্দিষ্ট করতে পারেন সমাধান (প্রায় 15 মাত্রা 'সীমাবদ্ধতার মূল্য ...)। আপনি কোন পরিস্থিতিতে আছেন?
whuber

@ শুভ দেখার জন্য আপনাকে অনেক ধন্যবাদ! আমার ২ হাজার পয়েন্ট রয়েছে। প্রথম এমএ পয়েন্টটি সম্ভবত 30 টি মূল পয়েন্টের গড়। নির্ভুলতা একটি সাধারণ সঠিক ফলাফলের পরে দ্বিতীয়, খুব "সাম্প্রতিক" পয়েন্টগুলিতে সুনির্দিষ্টভাবে ভাল অনুমান। আপনি একটি তুলনামূলক সহজ পদ্ধতি সুপারিশ করতে পারেন? আগাম ধন্যবাদ!

1
(আপনি যদি মন্তব্য লিখতে পাঁচ মিনিটেরও বেশি সময় নেন ...)। আমি যা লিখতে চেয়েছিলাম তা হ'ল আপনি গড়কে ম্যাট্রিক্সের গুণন হিসাবে ভাবতে পারেন। মাঝের সারিগুলির তির্যকের আগে 1/30 * [1 1 1 ...] থাকবে। প্রশ্নটি হল, ম্যাট্রিক্সকে ইনভারটিভেবল করার জন্য আপনি কীভাবে আপনার ভেক্টরের সীমান্তে পয়েন্টগুলি মোকাবেলা করেন। আপনি ধরে নিয়েই এটি করতে পারেন যে এগুলি কম উপাদানগুলির চেয়ে বেশি গড়ের ফলাফল বা আপনি অন্যান্য প্রতিবন্ধকতাগুলি সম্পর্কে ভাবেন। মনে রাখবেন যে ম্যাট্রিক্স বিপরীতটি এটি বোঝার একটি সহজ উপায়, এটি সবচেয়ে কার্যকর নয় efficient আপনি সম্ভবত এটি করতে কোনও এফএফটি ব্যবহার করতে চান।
ফিবি

উত্তর:


4

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

library (Matrix)
library (matrixcalc)

# Feb-Mar-Apr through Nov-Dec-Jan temperature forecasts:

qtemps <- c(46.0, 56.4, 65.8, 73.4, 77.4, 76.2, 69.5, 60.1, 49.5, 41.2)

# Thus I need a 10x12 matrix, which is a band matrix but with the first
# and last rows removed so that each row contains 3 1's, for three months.
# Yeah, the as.matrix and all is a bit obfuscated, but the results of
# band are not what svd.inverse wants.

a <- as.matrix (band (matrix (1, nrow=12, ncol=12), -1, 1)[-c(1, 12),])
ai <- svd.inverse (a)

mtemps <- t(qtemps) %*% t(ai) * 3

যা আমার পক্ষে দুর্দান্ত কাজ করে। ধন্যবাদ @ ফাবি

সম্পাদনা: ঠিক আছে, আমার আরথকে পিথনে অনুবাদ করে, আমি পেয়েছি:

from numpy import *
from numpy.linalg import *

qtemps = transpose ([[46.0, 56.4, 65.8, 73.4, 77.4, 76.2, 69.5, 60.1, 49.5, 41.2]])

a = tril (ones ((12, 12)), 2) - tril (ones ((12, 12)), -1)
a = a[0:10,:]

ai = pinv (a)

mtemps = dot (ai, qtemps) * 3

(যা আর সংস্করণের তুলনায় ডিবাগ করতে অনেক বেশি সময় নিয়েছে First প্রথম কারণ আমি আর এর মতো পাইথনের সাথে তেমন পরিচিত নই, তবে এটি ইন্টারঅ্যাকটিভভাবে আর ব্যবহারের যোগ্য বলেও বেশি because)


@ গ্র্যাচাস: দুঃখিত, কোনও সি ++ লোক নয়, তবে আপনার যা প্রয়োজন তা আর্মাদিলো সি ++ লিনিয়ার বীজগণিত গ্রন্থাগার ( আরমা.সোর্সফোর্জন.নেট ) এ পাওয়া যেতে পারে, যা আরসিপিএআরমাডিলো প্যাকেজের মাধ্যমে আর-তে উপলব্ধ।
ওয়েইন

ঠিক আছে, দেখুন এটি আপনার পক্ষে কাজ করে কিনা। যদি তা হয় তবে আপনি আমার উত্তরটি বেছে নিতে পারেন ;-)
ওয়েন

পাইথনের এফওয়াইআইয়ের সেরা অনুশীলনগুলি পরম আমদানি করা হয়: পাইথন.অর্গ / দেবদেবী / পেপস / পেপ-0008 / # আমদানি যা অন্যান্য লোকের কোডটি পড়া এত সহজ করে দেয় কারণ আপনি আসলে জানেন যে ফাংশনগুলি আসার পরিবর্তে কোথা থেকে আসে you আপনি জানেন না প্রত্যেককে দেখুন। আশা করি এটি করার জন্য এটি আর মানের ছিল। অন্য কারও কোডে প্রতিটি ছোট ফাংশন সন্ধান করা সত্যিই আমার গিয়ারগুলি
পিষে

এছাড়াও পাইথন ইন্টারঅ্যাক্টিভিটি বা আইপাইথনের জুপিটার নোটবুক।
শব্দসুখে

17

আমি whuber একটি উত্তর একটি উত্তর দেওয়ার চেষ্টা করি। আসুন বলতে আপনি একটি বড় ভেক্টর আছে সঙ্গে এন =x এন্ট্রি। আপনি দৈর্ঘ্যের একটি উইন্ডো সঙ্গে একটি গড় চলন্ত গনা তাহলে= 30 , আপনি একটি ভেক্টর ম্যাট্রিক্স গুণ হিসাবে এই লিখতে পারেন Y = একটি এক্স এর ভেক্টর এক্স ম্যাট্রিক্স সঙ্গেn=2000=30y=Axx

A=130(1...10...001...10...0...1...100...01...1)

যা হয়েছে বেশী যা আপনি সারি ধরে এগিয়ে যেমন মাধ্যমে স্থানান্তরিত পর্যন্ত 30 জনকে ম্যাট্রিক্স শেষে আঘাত। এখানে গড় ভেক্টর ওয়াই এর 1970 টি মাত্রা রয়েছে। ম্যাট্রিক্সে 1970 টি সারি এবং 2000 কলাম রয়েছে। অতএব, এটি পরিবর্তনযোগ্য নয়।3030y19702000

আপনি যদি ম্যাট্রিক্সের সাথে পরিচিত না হন তবে একটি লিনিয়ার সমীকরণ সিস্টেম হিসাবে এটি সম্পর্কে ভাবেন: আপনি এক্স 1 , ভেরিয়েবল অনুসন্ধান করছেন x1,...,x2000y1y2

সমীকরণ সিস্টেমের (এবং ম্যাট্রিক্স) সমস্যাটি হচ্ছে এটির সমীকরণের চেয়ে অজানা। অতএব, আপনি নিজের অজানা x 1 , সনাক্ত করতে পারবেন না x1,...,xnxyx

একটি উপায় A3030AA

AAz=AyxyAz

2000x

reconstruction of original signal from moving average using the pseudoinverse

অনেকগুলি সংখ্যক প্রোগ্রামে সিউডো-ইনভারসেস সরবরাহ করা হয় (উদাঃ মতলব, অজগর ইত্যাদি)।

আমার উদাহরণ থেকে সিগন্যালগুলি তৈরি করার জন্য এখানে অজগর কোডটি থাকবে:

from numpy import *
from numpy.linalg import *
from matplotlib.pyplot import *
# get A and its inverse     
A = (tril(ones((2000,2000)),-1) - tril(ones((2000,2000)),-31))/30.
A = A[30:,:]
pA = pinv(A) #pseudo inverse

# get x
x = random.randn(2000) + 5
y = dot(A,x)

# reconstruct
x2 = dot(pA,y)

plot(x,label='original x')
plot(y,label='averaged x')
plot(x2,label='reconstructed x')
legend()
show()

আশা করি এইটি কাজ করবে.


এটি একটি দুর্দান্ত উত্তর, তবে আমি মনে করি আপনি ভুল হয়ে গিয়েছিলেন যখন আপনি বলেছিলেন যে "এটি y এবং Az এর মধ্যে চতুর্ভুজ দূরত্বকে হ্রাস করে"। আসলে y এবং Az একই জিনিস। যা হ্রাস করা হয় তা হল জেডের আদর্শ যা আমি চেষ্টা করেছি এমন আসল বিশ্বের সংকেতগুলির জন্য ভাল কাজ করে, তবে যদি আপনার আসল সংকেতটির অনেক বিদেশী থাকে তবে তেমন ভাল হয় না।
gdelfino

আমি অনুসরণ করি কিনা তা নিশ্চিত নই। y এবং Ax একই জিনিস, তবে y এবং Az নয় এটি সত্য যে এটি জেডের আদর্শকেও হ্রাস করে। এটি আমার উদাহরণগুলির জন্য কেন কাজ করে না তাও আমি দেখতে পাই না। নীল এবং লাল রেখাটি খুব সুন্দরভাবে মিলছে। আমি কি তোমার মন্তব্যে কিছু মিস করছি?
ফেবি

y হ'ল মুভিং এভারেজকে মূল সংকেত x থেকে গণনা করে A. দ্বারা গুণন করে procedure অতএব y = Az সুতরাং z এর আদর্শই হ্রাস পাবে। যদি মূল সংকেতটির একটি বৃহত্তর আদর্শ মান হয় তবে প্রক্রিয়াটি ভাল ফলাফল দেয় না। বৃহত্তর আদর্শ মান সহ একটি উদাহরণ সিগন্যাল নীচে:
gdelfino

{42.8, -33.7, 13.2, -45.6, 10.2, 35.8, -41.4, 20.253, 43.3429, -33.2735, 13.6135, -45.1067, 10.6346, 36.1352, -40.9703, 20.6616, 43.6796, -32.8966, 14.0406, -44.7001 , 36.4675, -40.7277, 20.8823, 43.7878, -32.7415, 13.9951, -44.7947, 11.044, 36.3873, -40.7117, 20.7505, 43.8204, -32.9399, 13.9129, -44.9549, 10.8703, 36.4559, -40.889 , 13.5468, -45.2374, 10.3787, 35.8235, -41.5161, 19.9717, 43.0658, -33.7125, 13.0321}
জিডিএলফিনো

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