How to filter out multiple outliers from a gradually changing dataset?
4 views (last 30 days)
Show older comments
I have a set of arrays which should show a gradually increasying pattern. However, there are some instances where the gradual increase is not observed. I used filloutliers command with linear but it was found that there were multiple outliers. I will demonstrate a few instances of them in the figure below: Figure 1 shows a gradual increasing data. However, in Figure 2 and 3, there are multiple points that are outliers. Figure 4 has multiple instances of outliers. And, in figure 5 and 6, there are 7 points (out of 15) that are out of the trend.
I tried findchangepts but it also works only for a single point. I would appreciate if there can be a way to transform these lines to gradually changine lines. It should be noted that all the set of data points are always 15.
I am trying to reconstruct the rest of the data points similar to figure 1. I would appreciate if there is a possibility of achieving it.
Thanks in advance.
load("a_data.mat")
figure
tiledlayout(3,3)
for i = 1:9
nexttile
title(string(i))
hold on
adata = a(:,i);
plot(adata,'b-')
bdata = filloutliers(adata,"linear");
plot(bdata,'r.:')
box on; grid on
hold off
end
0 Comments
Accepted Answer
Chunru
on 13 Mar 2024
Adjust the threshold:
websave("a_data.mat", "https://www.mathworks.com/matlabcentral/answers/uploaded_files/1641186/a_data.mat");
load("a_data.mat")
figure
tiledlayout(3,3)
for i = 1:9
nexttile
title(string(i))
hold on
adata = a(:,i);
plot(adata,'b-')
bdata = filloutliers(adata, "linear", "percentiles", [20 80]);
plot(bdata,'r.:')
box on; grid on
hold off
end
More Answers (0)
See Also
Categories
Find more on Curve Fitting Toolbox 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!