矩阵中平均值任一侧的百分位数 - MATLAB
Percentiles either side of the mean across a matrix - MATLAB
我有一个这种形式的数据矩阵:
5400 5700 6200 5200 6100 5500
5500 5900 7000 5900 6200 6000
6100 10300 7500 6200 6500 6600
6800 10900 7900 9400 9600 6600
7300 12500 10600 13000 10000 7900
7300 15700 10600 13200 14000 9200
11700 16200 11000 14900 14600 10800
12500 16500 11800 18100 14600 12900
13400 17000 19200 19300 16900 17100
14000 18700 20900 19700 17700 17700
14600 18800 22900 20200 17900 18500
15000 20800 24400 20800 19900 18700
15700 21100 25400 21500 22300 19700
16800 22000 26400 21700 22300 23300
实际矩阵要大得多。
我想为每一行计算两个值,以百分位数描述平均值的变化范围,即“高于平均值的所有值中有 95% 低于 X,所有值中有 95% 低于 X平均落在 Y 以上。
最好的方法是什么?
类似于:
a = prctile(tcIED',0.90)
只产生一个值 - 这似乎也不准确(低于预期)。
您的方法是正确的,但是 prctile
需要 百分比(介于 0 和 100 之间)。所以:
a = prctile(tcIED.', 90);
或者,等效地,使用 quantile
和 比例 (在 0
和 1
之间):
a = quantile(tcIED.', 0.9);
例如,根据您的数据,您得到
>> a(1)
ans =
6190
这意味着数据矩阵第 1 行中大约 90% 的值小于或等于 6190
。
我有一个这种形式的数据矩阵:
5400 5700 6200 5200 6100 5500
5500 5900 7000 5900 6200 6000
6100 10300 7500 6200 6500 6600
6800 10900 7900 9400 9600 6600
7300 12500 10600 13000 10000 7900
7300 15700 10600 13200 14000 9200
11700 16200 11000 14900 14600 10800
12500 16500 11800 18100 14600 12900
13400 17000 19200 19300 16900 17100
14000 18700 20900 19700 17700 17700
14600 18800 22900 20200 17900 18500
15000 20800 24400 20800 19900 18700
15700 21100 25400 21500 22300 19700
16800 22000 26400 21700 22300 23300
实际矩阵要大得多。
我想为每一行计算两个值,以百分位数描述平均值的变化范围,即“高于平均值的所有值中有 95% 低于 X,所有值中有 95% 低于 X平均落在 Y 以上。
最好的方法是什么?
类似于:
a = prctile(tcIED',0.90)
只产生一个值 - 这似乎也不准确(低于预期)。
您的方法是正确的,但是 prctile
需要 百分比(介于 0 和 100 之间)。所以:
a = prctile(tcIED.', 90);
或者,等效地,使用 quantile
和 比例 (在 0
和 1
之间):
a = quantile(tcIED.', 0.9);
例如,根据您的数据,您得到
>> a(1)
ans =
6190
这意味着数据矩阵第 1 行中大约 90% 的值小于或等于 6190
。