【发布时间】:2015-01-23 15:48:06
【问题描述】:
图片优先:
如您所见,我有一组正态分布。出于演示目的,有反馈说这些图应该“标准化”,因为我理解将绘图值设置为某个最大值并且绘图的曲率设置为适合这个无论如何。目标是让这些图更容易在视觉上进行比较——我希望这是有道理的。我在这个情节中使用histfit。
您知道一些方法,我怎样才能使这些图表更具可比性?
编辑: 由于它被标记为重复,事实并非如此。我并不是真的在寻找适合直方图的概率密度,我想为每个概率密度曲线设置一个最大值。我知道市场主题,只是找不到我的答案。
编辑2:
这些是我的代码的摘录以及他们产生的解决方案:
[f1,x1] = hist(data1);
[f2,x2] = hist(data2);
[f3,x3] = hist(data3);
avg = mean(data1);
stdev = std(data1);
VERT1 = sort(data1);
y1 = exp(- 0.5 * ((VERT1 - avg) / stdev) .^ 2) / (stdev * sqrt(2 * pi));
y11 = y1/max(data1);
avg = mean(data2);
stdev = std(data2);
VERT2 = sort(data2);
y2 = exp(- 0.5 * ((VERT2 - avg) / stdev) .^ 2) / (stdev * sqrt(2 * pi));
y22 = y2/max(data2);
%
avg = mean(data3);
stdev = std(data3);
VERT3 = sort(data3);
y3 = exp(- 0.5 * ((VERT3 - avg) / stdev) .^ 2) / (stdev * sqrt(2 * pi));
y33 = y3/max(data3);
为清楚起见直接链接:http://i.imgur.com/YPrcM3R.jpg
来自this explanation 我明白了:
[f1,x1] = hist(data1);
[f2,x2] = hist(data2);
[f3,x3] = hist(data3);
avg = mean(data1);
stdev = std(data1);
VERT1 = sort(data1);
y1 = exp(- 0.5 * ((VERT1 - avg) / stdev) .^ 2) / (stdev * sqrt(2 * pi));
avg = mean(data2);
stdev = std(data2);
VERT2 = sort(data2);
y2 = exp(- 0.5 * ((VERT2 - avg) / stdev) .^ 2) / (stdev * sqrt(2 * pi));
avg = mean(data3);
stdev = std(data3);
VERT3 = sort(data3);
y3 = exp(- 0.5 * ((VERT3 - avg) / stdev) .^ 2) / (stdev * sqrt(2 * pi));
h1 = bar(x1,f1/trapz(x1,f1));hold on;
h2 = bar(x2,f2/trapz(x2,f2),'r');hold on;
h3 = bar(x3,f3/trapz(x3,f3),'g');hold on;
plot(VERT1,y1,'b-');hold on;
plot(VERT2,y2,'r-');hold on;
plot(VERT3,y3,'g-');hold off;
结果为:
希望这能解释一切。
【问题讨论】:
-
您可以将每个直方图除以其最大值...
-
为什么不能缩放它们? normalisation of audio signal and reverting to original matlab 可能会给你一些提示。
-
要规范化直方图(或 pdf),以确保其 面积 为 1。例如,请参阅 here
-
@KrystianMeresiński:也许你应该向我们展示你想要的东西,而不是让我们猜测和失败......在绘制你正在寻找的曲线之前/之后写一点怎么样?
-
你可能没有意识到,但这是确实是that other question的复制品;同样的答案也适用于此。正如@LuisMendo 上面写的那样,所有概率密度曲线的面积都应该等于 1。你应该听从给你的明智建议。不要开始弄乱分布的宽度或平均值以使它们“看起来更好”。
标签: matlab plot normal-distribution