Matlab中cdf的非参数估计

时间:2017-03-26 18:42:58

标签: matlab statistics cdf

我在维度A的Matlab中有一个向量Nx1。我希望在A中的每个点获得非参数估计cdf,并将所有值存储在维B的向量Nx1中。我有哪些不同的选择?

我读过关于ecdfksdensity但我不清楚有什么区别,优点和缺点。任何方向都会受到赞赏。

2 个答案:

答案 0 :(得分:1)

这并不能完全回答您的问题,但您可以非常简单地计算经验CDF:

A = randn(1,1e3); % example Gaussian data
x_cdf = sort(A);
y_cdf = (1:numel(A))/numel(A);
plot(x_cdf, y_cdf) % plot CDF

enter image description here

这是有效的,因为根据定义,每个样本对(经验)CDF的贡献增加1/N。也就是说,对于小于最小样本的值,CDF等于0;对于最小样本和下一个最高样本之间的值,它等于1/N等。

这种方法的优点是你确切知道正在做什么。

如果您需要在规定 x - 轴值评估经验CDF:

A = randn(1,1e3); % example Gaussian data
x_cdf = -5:.1:5;
y_cdf = sum(bsxfun(@le, A(:), x_cdf), 1)/numel(A);
plot(x_cdf, y_cdf) % plot CDF

如果你有规定的 y -axis值,相应的 x -axis值根据定义是(经验)分布的分位数:

A = randn(1,1e3); % example Gaussian data
y_cdf = 0:.01:1;
x_cdf = quantile(A, y_cdf);
plot(x_cdf, y_cdf) % plot CDF

答案 1 :(得分:-1)

你想要ecdf,而不是ksdensity。

ecdf计算数据集的empirical distribution function。随着样本量的增加,这会收敛到基础人口的cumulative distribution function

ksdensity会根据您的数据计算kernel density estimation。随着样本量的增加,这会收敛到基础人口的probability density function

PDF告诉您在给定值附近的可能性。它在您的域上上下摆动,接近更可能的值并且接近不太可能的值。 CDF告诉您在给定值 以下的可能性。因此,它始终从您网域左端的零开始,并在您网域的右端单调增加到一个。