Predicting change in data using a probabilistic method...

1 view (last 30 days)
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
Andrew Sanderson on 30 Dec 2011
Ha! Just tested it; turns out on say 20 items of data (taken from google finance) its got an average accuracy of 60% but for larger data sets its down at 35%... Also; any ideas on improving it but keeping the idea the same would be much appreciated! Cheers

Sign in to comment.

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!