直方图产生的值低于预期

问题描述

让我们将 X 定义为:

enter image description here

以及与之相关的对象:

enter image description here

我想计算函数跟随的值,并用Y的特征值将其绘制在同一图上。

enter image description here

我目前的工作

# Define dimensions of X 
N=700;
T=900;
lambda=N/T;

# Randomize X
x=randn(N,T);
# Estimate standard deviation
s=std(x(:));
# Now we estimate y and it's eigenvalues
y=x*x'/T;
l=eig(y);
# Calculating lambda_plus and lambda_minus
lambda_plus=(s^2)*(1+sqrt(lambda))^2;
lambda_minus=(s^2)*(1-sqrt(lambda))^2;
x_lim = linspace(0.1,3,10^3)
# Taking into account indicator function
  if (x_lim <= lambda_plus && x_lim>= lambda_minus);
    smth=(1./(2*pi*lambda*x_lim*s^(2))).*sqrt((lambda_plus-x_lim).*(x_lim-lambda_minus));
  else 
    smth = 0
  endif
  # normalize histogram
  [f,p] = hist(l,nbins = 20)
 hold on;
   bar(p,f / sum(f));
 plot(x_lim,smth)

这个函数的问题是输出如下所示:

enter image description here

这看起来并不像应该的那样。根据{{​​3}},这两个图应该收敛得更显着。我在互联网上发现了 wikipedia 非常相似的图,它们看起来像这样:

somewhere

我的问题是:我做错了什么?我是否选择了错误的比例?正如我在第二个绘图函数中看到的,它的值比我的少得多,但我不知道它的计算有什么问题。你能帮我解释一下我做错了什么吗?

解决方法

是的,这是一个规模问题。您正在将直方图标准化为

bar(p,f / sum(f));

产生所有条形高度的单位总和。相反,您应该使用

bar(p,f / sum(f) / (p(2)-p(1)));

生产单位面积