Predicting change in data using a probabilistic method...
Show older comments
Ok guys / girls - Very coarse way of predicting a change in data; the idea of the algorithm is to register a counter value when it thinks there will be a change in the direction of data. The code is below;
function [output] = analyseTrends(data,threshold)
%%Check for a threshold
if (isempty(threshold) == 1)
threshold = 0.3;
end
%%Generate information about the data
L = length(data);
dfdt = gradient(data);
dd = sign(dfdt);
%%Initialie Variables
store = [];
test = 'true';
i = 1;
succession_count = 0;
probability = 0;
%%Calculate a probability of change in the direction of data
for i = 2 : L;
if (dd(i) ~= dd(i-1))
probability = 0;
succession_count = 0;
else
succession_count = succession_count + 1;
if (succession_count == 1);
probability = 0.25;
elseif (succession_count == 2);
probability = 0.85;
elseif (succession_count == 3);
probability = 0.95;
elseif (succession_count == 4);
probability = 0.20;
else
...
end
end
if (rand(1) <= probability)
store = [store;i];
probability = 0;
succession_count = 0;
else
...
end
end
output{1} = store;
output{2} = dd;
end
If you then look at output{1} and output{2} we can see output{1} is the point at which the counter is registered, and output{2} is the sign of the gradients between each point. Okay my question is this: is the value being stored in output{1} the index before the change in sign of the gradients e.g:
output{1} = [3 5]
output{2} = [1 1 1 -1 -1 1]
I hope you understand the question!
1 Comment
Andrew Sanderson
on 30 Dec 2011
Answers (0)
Categories
Find more on Descriptive Statistics and Visualization in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!