【问题标题】:How can I plot this kind of smoothed probability distribution in Matlab?如何在 Matlab 中绘制这种平滑的概率分布?
【发布时间】:2011-04-15 00:42:37
【问题描述】:

【问题讨论】:

  • 你知道 pdf 的公式吗?
  • 如图所示,这不是概率分布——它甚至不是函数。也许应该交换轴?
  • @Matt:这是一个概率分布。按照惯例,轴是交换的,但这并不意味着这不是概率分布。你可以有你想要的轴。
  • @yoda:这只是为了演示过程。假设分布是否为对数正态分布。 equation to your pdf 是什么意思?
  • 你的 pdf(概率密度函数)应该有一个描述它的方程。你可能知道,但不明白我所说的 pdf 是什么意思。有关如何将其绘制为对数正态的说明,请参见下面的答案。

标签: matlab plot distribution probability


【解决方案1】:

如果你有 PDF 的方程,你可以简单地为指定的 x 值绘制它。例如,

正态分布

pNormal=@(x)1/sqrt(2*pi)*exp(-(x.^2)/2);
x=linspace(-4,4,1e3);
plot(x,pNormal(x));

对数正态分布

pLogNormal=@(mu,sigma,x)1./(x*sigma*sqrt(2*pi)).*exp(-((log(x)-mu)./(sqrt(2)*sigma)).^2);
x=linspace(0,10,1e3);
mu=0;sigma=1;
plot(x,pLogNormal(mu,sigma,x));

您可以根据需要更改sigmamux。为x>0 定义了对数正态分布。

【讨论】:

    【解决方案2】:

    这是一个使用内核平滑器的示例。 (以防您不知道什么分布描述了您的数据样本)

    % generate some random data
    X1 = 10 + randn(100,1);
    X2 = 15 + 2*randn(75,1);
    X3 = 25 + 3*randn(125,1);
    X = vertcat(X1,X2,X3);
    
    % use a kernel smoother to model X
    foo = fitdist(X,'kernel')
    
    % inspect the methods of foo
    methods(foo)
    
    % Plot the pdf of foo
    range = linspace(min(X), max(X), 100);
    bar = pdf(foo, range)
    plot(range, bar)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-27
      • 1970-01-01
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多