Ich versuche die (unbekannten) ursprünglichen Datenpunkte zu schätzen, die in die Berechnung eines (bekannten) gleitenden Durchschnitts einflossen. Allerdings weiß ich einige der ursprünglichen Datenpunkte, und ich bin mir nicht sicher, wie Sie diese Informationen verwenden.Rückwärtsberechnung von Originaldaten von einem bekannten gleitenden Durchschnitt
Ich verwende die Methode in den Antworten hier angegeben: https://stats.stackexchange.com/questions/67907/extract-data-points-from-moving-average, aber in MATLAB (mein Code unten). Diese Methode funktioniert ziemlich gut für große Datenpunkte (> 1000), aber weniger gut mit weniger Datenpunkten, wie Sie es erwarten würden.
window = 3;
datapoints = 150;
data = 3*rand(1,datapoints)+50;
moving_averages = [];
for i = window:size(data,2)
moving_averages(i) = mean(data(i+1-window:i));
end
length = size(moving_averages,2)+(window-1);
a = (tril(ones(length,length),window-1) - tril(ones(length,length),-1))/window;
a = a(1:length-(window-1),:);
ai = pinv(a);
daily = mtimes(ai,moving_averages');
x = 1:size(data,2);
figure(1)
hold on
plot(x,data,'Color','b');
plot(x(window:end),moving_averages(window:end),'Linewidth',2,'Color','r');
plot(x,daily(window:end),'Color','g');
hold off
axis([0 size(x,2) min(daily(window:end))-1 max(daily(window:end))+1])
legend('original data','moving average','back-calculated')
Jetzt sagen, ich kenne ein paar der ursprünglichen Datenpunkte. Ich habe Probleme herauszufinden, wie ich diese Informationen verwenden könnte, um den Rest genauer zu berechnen. Danke für jede Hilfe.