我想出了一个 matlab 代码来绘制概率密度和累积图。我已经使用 matlab 来计算标准偏差和平均值。我的下一个任务是找到累积图的第 15 个和第 85 个百分位。我尝试使用 'prctile (prob, 15)' 来计算第 15 个百分位数,但它似乎与我从图中观察到的值不同。
还有其他方法可以找到第 15 和 85 个百分位数吗?
我想出了一个 matlab 代码来绘制概率密度和累积图。我已经使用 matlab 来计算标准偏差和平均值。我的下一个任务是找到累积图的第 15 个和第 85 个百分位。我尝试使用 'prctile (prob, 15)' 来计算第 15 个百分位数,但它似乎与我从图中观察到的值不同。
还有其他方法可以找到第 15 和 85 个百分位数吗?
正如您在累积图中看到的那样,这应该为您提供 15% 和 85% 的百分位值:
15_percentile = prob(find(prob<prctile(prob,15),1));
85_percentile = prob(find(prob>prctile(prob,85),1,'last'));
有几种方法可以计算百分位数(参见http://en.wikipedia.org/wiki/Percentile)
这里的问题是 MatLab 和 Excel 不同意(Excel 使用美国国家标准与技术研究所采用的定义......也是 R 的默认值)......如果您在 MatLab 之间交换数据和分析,值得考虑和 Excel。
如果你有统计工具箱(输入 help prctile),请使用 percentile 函数。
http://www.mathworks.com/help/stats/prctile.html
或者自己写!百分位数只是排序后的数据,并且值最接近您想要的百分位数(例如,如果您有 1000 个值,则您的第 15 个百分位数将是 (15/100)*1000=150th 值!确保您对数据进行排序最小到最大。
有一种特殊的方法可以处理样本之间的值,但这取决于您使用的定义。一些取最近的,另一些取两个样本之间的平均值,还有一些计算它们与样本的接近程度,并取一个与其成线性比例的值。