ks频率直方图的密度

ksdensity of frequency histogram

我想在一张图上绘制多个频率直方图,但是,我的频率图参差不齐且不美观。如下代码所示:

mmin = min([Data]);
mmax = max([Data]);
figure(1);n = hist(Data, x);
f = n/sum(n);
plot(x,f,'r','LineWidth',3)

为了让它顺利,我查看了 ksdensity 并根据以下代码创建了下图:

[f,xi] = ksdensity(data);
figure(1)
plot(xi,f);

但是,我注意到我的图表不再在 y 轴上绘制频率。无论如何可以使用 ksdensity 来纠正此更改?与我的频率直方图相比,我真的很喜欢图表的外观,并希望继续使用 ksdensity,除非有更好的建议。

谢谢!

数据样本: https://www.dropbox.com/s/4ax2cuvugvqxjh6/splicing_attempt2_normalized_combined.txt?dl=0

技巧就在这里,我认为您没有正确计算直方图中的频率。你忽略了 bin 宽度。您的频率应该是每个位置的 SNP 数量 ,这需要除以每个 bin 的(可能是分数的)位置数。

试试这个:

Data = rand(1, 1e4);

figure(1);
[n, c] = hist(Data, 20);
dc = abs(c(2) - c(1));

f = n./(dc * sum(n));
plot(c,f,'r','LineWidth',3)

[~,f_kde,xi] = kde(Data);
line(xi,f_kde);

我没有 Statistics Toolbox,所以我改用文件交换 kde 函数,但两者的工作方式相同。

如果第一个图表确实是您想要的,那么做一点代数运算,而不是将直方图值除以 bin 宽度,而是将 kdensity 值乘以相同的 bin 宽度。

正如我在其他 histogram answer 中提到的,有多种方法可以为直方图选择最佳 bin 宽度。为了方便,我这里选了20个