我有第10-25百分位数范围的数值,即0.49
,25-50百分位数是1.36
(这是峰值),50-75百分位数是0.18
,>90百分位数是0.15
。
我想插值范围>5,5-10,75-90百分位数的值。如何在MATLAB中做到这一点?
如果我假设一个正态分布,其峰值是1.36
(第25至第50百分位数)(如图所示),如何插值未知百分位数范围的值?
发布于 2017-11-21 02:58:53
实际上,为了找到百分位数而执行插值对我来说不是很好。如果您正在处理一个normal distribution
,并且它的参数(mu
和sigma
)是已知的,那么您要寻找的是norminv
函数(正式文档:https://mathworks.com/help/stats/norminv.html)。
X= norminv( P,mu,sigma)用对应的平均值mu和标准差σ在P中对应的概率计算出法向of的逆,σ中的参数必须是正的,P中的值必须在0 1区间。
例如,您如何找到包含95%标准正态分布值的间隔:
norminv([0.025 0.975],0,1)
这就是如何用mu=10
和sigma=3.5
找到正态分布的第99百分位数。
norminv(0.99,10,3.5)
如果您不知道这些参数,您可以根据实际拥有的数据来估计它们。正常族的参数是mean
和standard deviation
;一旦它们被知道,底层的分布就会被完全描述。实际上:
mean
介于25和75百分位数之间。平均这两个值来逼近它。standard deviation
的1.35倍。因此,取上述值之间的差值,除以1.35,以获得standard deviation
的近似。如果您想使用linear interpolation
,请查看interp1
(https://mathworks.com/help/matlab/ref/interp1.html)。
https://stackoverflow.com/questions/47410624
复制相似问题