How to filter out multiple outliers from a gradually changing dataset?

6 ビュー (過去 30 日間)
UH
UH 2024 年 3 月 13 日
コメント済み: UH 2024 年 3 月 14 日
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

採用された回答

Chunru
Chunru 2024 年 3 月 13 日
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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSmoothing and Denoising についてさらに検索

製品


リリース

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by