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