gpt4 book ai didi

Matlab 箱线图 : Use a specific percentile as the upper whisker OR remove redundant outliers after manual upper whisker edit

转载 作者:行者123 更新时间:2023-12-01 14:41:57 25 4
gpt4 key购买 nike

对于 MATLAB 中的箱线图,我想问一下是否可以使用特定的百分位数作为上须线。我想使用第 95 个百分位作为上部晶须,第 5 个百分位作为下部晶须。

MATLAB 的默认行为是使晶须长度 = 1.5 * IQR(第 75 个百分位数 - 第 25 个百分位数)并且此晶须长度可以更改为 IQR 的另一个倍数,但不能更改为特定的百分位数。请解释一下更改此方法的方法。

例如,对于以下100条数据:

50(重复80次),76(重复10次),91, 92, 93, 94, 95, 96, 97, 98, 99, 100

或在 MATLAB 中:

A([1:80],1) = 50; A([81:90],1) = 76; A([91:100],1) = [91:100]; boxplot(A)

有没有办法指定 95 甚至 76 在 mustache 内?还是上 mustache 的值(value)?

我已经使用以下代码调整了上部和下部晶须(尽管本例中不需要下部晶须);然而,此代码不会删除 mustache 内的异常值,从而使结果看起来不清楚。

p([1:2],1) =prctile(A,[5,95])
h = flipud(findobj(gca,'Tag','Upper Whisker'));
for j=1:length(h);
ydata = get(h(j),'YData');
ydata(2) = p(2,j);
set(h(j),'YData',ydata);
end
% Replace all y values of adjacent value
h = flipud(findobj(gca,'Tag','Upper Adjacent Value'));
for j=1:length(h);
ydata = get(h(j),'YData');
ydata(:) = p(2,j);
set(h(j),'YData',ydata);
end
% Replace lower end y value of whisker
h = flipud(findobj(gca,'Tag','Lower Whisker'));
for j=1:length(h);
ydata = get(h(j),'YData');
ydata(1) = p(1,j);
set(h(j),'YData',ydata);
end
% Replace all y values of adjacent value
h = flipud(findobj(gca,'Tag','Lower Adjacent Value'));
for j=1:length(h);
ydata = get(h(j),'YData');
ydata(:) = p(1,j);
set(h(j),'YData',ydata);
end

任何帮助将不胜感激!

谢谢!

最佳答案

您需要添加以下内容:

h = flipud(findobj(gca,'Tag','Outliers'));
for j=1:length(h);
ydata = get(h(j),'YData');
xdata = get(h(j),'XData');
remdata = (ydata >= p(1,j)) & (ydata <= p(2,j));
ydata(remdata) = [];
xdata(remdata) = [];
set(h(j),'XData',xdata,'YData',ydata);
end

关于Matlab 箱线图 : Use a specific percentile as the upper whisker OR remove redundant outliers after manual upper whisker edit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27962191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com