为什么MATLAB中的内核平滑函数ksdensity会导致值大于1?

Ale*_*lex 2 matlab

我有一组样本,S,我想找到它的PDF.问题是,当我使用ksdensity时,我得到的值大于1!

[f,xi] = ksdensity(S)
Run Code Online (Sandbox Code Playgroud)

在数组f中,大多数值都大于1!你能告诉我问题是什么吗?谢谢你的帮助.

例如:

S=normrnd(0.3035, 0.0314,1,1000);
ksdensity(S)
Run Code Online (Sandbox Code Playgroud)

A. *_*nda 5

ksdensity顾名思义,估计连续变量的概率密度函数.概率密度可以大于1,它们实际上可以从零向上具有任意值.对概率的约束是它们在一个穷尽的可能范围内的总和必须是1.对于概率密度,约束是整个值范围内的积分是1.

ksdensity可以在Matlab中获得估计的pdf的积分的粗略近似,如下所示:

sum(f) * min(diff(xi))
Run Code Online (Sandbox Code Playgroud)

假设值xi是等间距的.该表达式的值应约为1.

如果在您的应用程序中您认为此近似值不足以接近1,则可能需要指定估计点网格(第二个参数pts),使得间距更精细或范围比自动生成的更宽ksdensity.