如何插值以填充百分位数范围?

时间:2017-11-21 10:21:33

标签: matlab

我的值为10-25th百分位数范围0.49,25-50百分位数是1.36(这是峰值),第50-75百分位数是0.18,> 90百分位数为0.15

我想插入范围> 5,5-,第75-90百分位数的值。如何在MATLAB中做到这一点?

如果我假设正态分布,其峰值为1.36(25-50th百分位数)(如附图所示),如何插入未知百分位数范围的值?

image

1 个答案:

答案 0 :(得分:1)

实际上,为了找到百分位值而执行插值对我来说并不是很好。如果您正在处理normal distribution并且其参数(musigma)已知,那么您正在寻找的是norminv函数(官方文档:{{3 }})。

  

X = norminv(P,mu,sigma)使用计算正常CDF的倒数   相应的平均μ和标准差sigma   P.中的相应概率.sigma中的参数必须是   正值,P中的值必须位于区间[0 1]。

例如,您可以找到包含95%标准正态分布值的区间:

norminv([0.025 0.975],0,1)

这是您使用mu=10sigma=3.5找到正态分布的第99个百分位数的方法:

norminv(0.99,10,3.5)

如果您不了解这些参数,可以从实际拥有的数据中估算出这些参数。普通家庭的参数是meanstandard deviation;一旦了解它们,就完整地描述了基础分布。实际上:

  • 正常分布的mean位于第25百分位和第75百分位之间。平均这两个值来近似它。
  • 在正态分布中,第25百分位数和第75百分位数之间的差异约为其standard deviation的1.35倍。因此,取上述值之间的差异除以1.35,以获得standard deviation的近似值。

如果您想使用linear interpolation,请查看interp1https://mathworks.com/help/stats/norminv.html)。