北太天元學(xué)習(xí)45:分位數(shù)-分位數(shù)畫圖(qqplot)簡介
今天要介紹的分位數(shù)有一個(gè)特列是中位數(shù),這個(gè)大家在初中就學(xué)過了,中位數(shù)是分位數(shù)的是對應(yīng)0.5的分位數(shù)。
設(shè)X是一個(gè)隨機(jī)變量,累積分布函數(shù)(Cumulative Distribution Function,CDF)
是一個(gè)用來描述概率分布的函數(shù),它通常被用來描述一個(gè)實(shí)隨機(jī)變量的概率分布情況。
CDF的定義是,對于一個(gè)給定的實(shí)隨機(jī)變量X,其累積分布函數(shù)定義為
F(x)=P(X<=x)
其中 P(X<=x) 表示隨機(jī)變量X小于或等于x]的概率。
在很多情況下,F(xiàn)(x) 是一個(gè)單調(diào)遞增的函數(shù),因此可以找到它的反函數(shù)( 或者稱為
F(x) 的逆, the inverse of the CDF). alpha = F(x) 的逆
x =? F^{-1} (alpha),
例如 設(shè)f(t)是標(biāo)準(zhǔn)正態(tài)分布的概率密度函數(shù), 那么F(x) = \int_{-\infty}^ x f(t) d t 是標(biāo)準(zhǔn)正態(tài)分布的累積分布函數(shù), 我們要求 x 使得 F(x) = 0.975,
通過查表或者使用北太天元軟件的命令 norminv(0.975), 可以求得 x = 1.9600 。
概率統(tǒng)計(jì)的文獻(xiàn)中經(jīng)常用 Z_{0.975} = 1.9600,? 說 1.9600 是 Z 值,
也1.9600就是正態(tài)分布在 0.975 的分位數(shù)。
標(biāo)準(zhǔn)正態(tài)分布在 0 的分位數(shù)是負(fù)無窮,在1的分位數(shù)是正無窮, 在0.5的分位數(shù)是0,
對應(yīng)0.5的分位數(shù)有一個(gè)大家熟悉的名字: 中位數(shù)。
上面談到的分位數(shù)對概率密度函數(shù)是已知的情況下給出的,如果僅僅給我們一些數(shù)據(jù),
如
x = [ -0.8222??? 0.3757??? 0.0385??? 0.5831?? -0.9786]
如何確定它的中位數(shù)呢? 我們在初中的時(shí)候就學(xué)習(xí)了,如果數(shù)據(jù)的個(gè)數(shù)n 是個(gè)奇數(shù),
那么 把數(shù)據(jù)從小到大排序,排序后的 第 (n+1)/2 個(gè)數(shù)就是中位數(shù),如果
n是個(gè)偶數(shù), 那么定義 第 n/2 和? n/2 + 1 個(gè)數(shù)的平均數(shù)定義為中位數(shù)。
針對我們這個(gè)例子, 我們可以用下面的代碼求出中位數(shù)
(>> 表示在北太天元命令行窗口輸入的命令, 然后回車,執(zhí)行的結(jié)果顯示在命令下邊)
>> x = [-0.8222??? 0.3757??? 0.0385??? 0.5831?? -0.9786]
x =
?? -0.8222??? 0.3757??? 0.0385??? 0.5831?? -0.9786
>> xx =sort(x)? % 從小到大排序
xx =
?? -0.9786?? -0.8222??? 0.0385??? 0.3757??? 0.5831
>> n = length(x)? %向量的長度,也就是數(shù)據(jù)的個(gè)數(shù)
n =
?? 5
>> xx(? (n+1)/2)?? %排序后的第 (n+1)/2 個(gè)數(shù)是中位數(shù)
ans =
??? 0.0385
我們還是以下面的數(shù)據(jù)為例子來介紹如何計(jì)算分位數(shù),
x = [ -0.8222??? 0.3757??? 0.0385??? 0.5831?? -0.9786]
注意,現(xiàn)在我們不知道這組數(shù)據(jù)是服從哪個(gè)分布的隨機(jī)變量的采樣。
我們首先對它從小到大排序得到
xx = [ -0.9786?? -0.8222??? 0.0385??? 0.3757??? 0.5831]
我們還想通過它的累積分布函數(shù)的反函數(shù)來求分位數(shù)似乎有點(diǎn)困難了,
因?yàn)樗睦鄯e分布函數(shù)是什么我們也不知道, 我們似乎只能猜測X
是一個(gè)離散隨機(jī)變量,只能取值 xx(1), ..., xx(5),
而且只能猜測是等概率的, 也就是
P( X = xx(i) ) =? 1/5,?? i = 1, 2, 3, 4, 5.
有了上面的概率分布,我們就可以累積概率密度函數(shù)了
F(x) = P(X<=x)
這是一個(gè)階梯一樣的函數(shù),
?? ?在x < xx(1)的時(shí)候,F(xiàn)(x) = 0 ,
?? ?在 x = xx(1) 的時(shí)候 , F(x) = 1/5
?? ?在? x > xx(1) 且 x < xx(2) 時(shí) F(x) = 1/5 ,
?? ?在 x = xx(2) 的時(shí)候 , F(x) = 2/5
?? ?在? x > xx(2) 且 x < xx(3) 時(shí) F(x) = 2/5 ,
?? ?在 x = xx(3) 的時(shí)候 , F(x) = 3/5
?? ?...
?? ?...
?? ?在 x >= xx(5) 的時(shí)候 , F(x) = 5/5. ?
顯然,這個(gè)累積分布函數(shù)是一個(gè)分片常數(shù)的函數(shù),不是嚴(yán)格單調(diào)函數(shù),
因此是沒有反函數(shù)的, 因此也無法用累積分布函數(shù)來反函數(shù)來求分位數(shù)了。
但是根據(jù)這個(gè)分布函數(shù)來定義下面的分位數(shù)還是有一定合理的性的
定義
1/10 的分位數(shù)是 xx(1)
3/10 的分位數(shù)是 xx(2)
5/10 的分位數(shù)是 xx(3)
7/10 的分位數(shù)是 xx(4)
9/10 的分位數(shù)是 xx(5)
這個(gè)定義和我們前面討論的中位數(shù)的定義是相吻合的,恰好 5/10的分位數(shù)是 xx(3).
這個(gè)定義的來源,我們可以稍微探究一下,我們可以把上面得到離散隨機(jī)變量X改造為
一個(gè)連續(xù)隨機(jī)變量Y. 為此,我們先定義
d(2) = xx(2)-x(1),? ... , d(5) = xx(5)-xx(4),
定義好上面的相鄰點(diǎn)之間的距離之后,我們再定義
d(1) = d(2) / 2 ,?? d(6) = d(5)/2?? ?


然后我們定義Y的概率密度
P(Y < xx(1) - d(1) ) = 0? ,
P(xx(1)-d(1) <= Y < xx(1) )? =? ( 1/10 ) / d(1) ,
P(xx(1) <= Y < xx(2) )? =? ( 1/5 ) / d(2) ,
P(xx(2) <= Y < xx(3) )? =? ( 1/5 ) / d(3) ,
?? ?...
P(xx(4) <= Y < xx(5) )? =? ( 1/5 ) / d(5) ,
P(xx(5) <= Y <= xx(5)+d(6) )? =? ( 1/10 ) / d(5).

Y的累積分布函數(shù)在區(qū)間 [xx(1)-d(1), xx(5)+d(6)] 上是一個(gè)嚴(yán)格單調(diào)遞增的
函數(shù),因此是有反函數(shù)的,我們就用連續(xù)隨機(jī)變量Y的分位數(shù)代替離散隨機(jī)變量
X 的分位數(shù)。
我們可以用下面的北太天元的下面的腳本cdfEx1.m 來畫Y 得累積分布函數(shù)的圖像

其中用的m函數(shù)cdf_y的代碼我放在帖子的后面, 我就得到Y(jié)得累積分布函數(shù),可以看到Y(jié)得累積分布函數(shù)是一個(gè)分片線形函數(shù),而且在單調(diào)遞增,而且在一個(gè)區(qū)間內(nèi)是嚴(yán)格單調(diào)遞增的,其函數(shù)圖像如下:

數(shù)據(jù) ?
x = [ -0.8222??? 0.3757??? 0.0385??? 0.5831?? -0.9786]
排序成了
xx = [ -0.9786?? -0.8222??? 0.0385??? 0.3757??? 0.5831]
我們按照第一個(gè)定義,
1/10 的分位數(shù)是 xx(1)
3/10 的分位數(shù)是 xx(2)
5/10 的分位數(shù)是 xx(3)
7/10 的分位數(shù)是 xx(4)
9/10 的分位數(shù)是 xx(5)
我們僅僅能定義 alpha = 1/10, 3/10, ..., 9/10 處的分位數(shù), 有了第二個(gè)定義,
我們把x看成離散隨機(jī)變量X的取值, 然后定義連續(xù)隨機(jī)變量 Y,
然后用Y的分位數(shù)來定義X的分位數(shù),這個(gè)定義允許我們定義alpha 為任何值的
分位數(shù). 例如,alpha = 1/5 的分位數(shù)是 ( xx(1)+xx(2) )/ 2, 我將在配套視頻
講一講如何計(jì)算的。
會(huì)求分位數(shù)之后,我再講講如何畫分位數(shù)-分位數(shù)圖(qqplot).
下面我以北太天元代碼來給出步驟:
x = randn(1000,1);? % 這是我們的數(shù)據(jù)
xx = sort(x) ;? % 對x 進(jìn)行排序
m = length(xx); % 得到數(shù)據(jù)包含的樣本點(diǎn)的個(gè)數(shù)
alpha = ( double(1:m) - 0.5)/m ; % 兩種定義都可以定義分位數(shù)的點(diǎn)alpha
% xx 就是alpha點(diǎn)處的分位數(shù)
heng = norminv(alpha);? % 正態(tài)分布在這些alpha值處的分位數(shù)
plot(heng, xx, 'LineWidth', 5) ?
%分位數(shù)-分位數(shù)圖,其中橫坐標(biāo)是正態(tài)分布的分位數(shù), 縱坐標(biāo)是數(shù)據(jù)x的分位數(shù).
還可以參考我前面的帖子《北太天元上用腳本簡單實(shí)現(xiàn)qqplot的基本功能》
https://www.bilibili.com/read/cv26381520/?spm_id_from=333.999.0.0
這些分位數(shù)在數(shù)據(jù)分析和決策制定中被廣泛應(yīng)用,因?yàn)樗鼈兛梢詭椭覀兏玫乩斫夂徒忉寯?shù)據(jù)集。例如,在金融領(lǐng)域中,分位數(shù)可以用來評估投資組合的風(fēng)險(xiǎn)和收益之間的關(guān)系;在醫(yī)學(xué)領(lǐng)域中,分位數(shù)可以用來描述病情的嚴(yán)重程度和治療效果等等。
總之,分位數(shù)是數(shù)學(xué)和統(tǒng)計(jì)學(xué)中重要的概念,它們可以提供關(guān)于概率分布的有用信息,幫助我們更好地理解和解釋數(shù)據(jù)。
------------
北太天元代碼:? prob_y.m
% 北太天元根據(jù)數(shù)據(jù)生成一個(gè)連續(xù)分布的隨機(jī)變量Y 的概率密度函數(shù)
% x [input] 是一個(gè)向量,長度大于或者等于2
% y 要計(jì)算概率密度的點(diǎn) , 要求y是一個(gè)向量
function py ?= prob_y( x , ?y )
% ?假設(shè) x 是長度大于等于2的向量, 這里就不檢查了
if nargin == 0
x = rand(1,5);
y = 0.5;
end
n = ?length(x);
x = sort(x); % 對x 排序
x = ( x(:) )' ; ?%把數(shù)據(jù)轉(zhuǎn)成行向量
d = zeros(1,n+1);
for k= 2: n
d(k) = x(k)-x(k-1);
end
d(1) = d(2)/2;
d(n+1) = d(n)/2;
fendian = [ x(1)-d(1), ? ? x ? , ? x(n) + d(n+1)];
gailv = ?[ 0.5*1/n, ? 1/n * ones(1,n-1), 0.5*1/n];
概率密度 = [0, ?gailv ./ d, ?0];
序號(hào) = sum( y(:) > fendian, 2) ; ?%按行方向求和
py = 概率密度( 序號(hào)+1) ;
py = reshape(py, size(y)); % 轉(zhuǎn)成和y一樣形狀
end
-------
cdfEx1.m 的北太天元代碼
clf
close all
clear
x = [-0.8222 ? ?0.3757 ? ?0.0385 ? ?0.5831 ? -0.9786];
t = min(x)-1 : 0.01 : max(x) + 1 ;
ct = cdf_y(x,t);
plot(t ,ct, '-*', 'LineWidth', 5)
hold on
scatter(x, zeros(size(x)), 600, 'o','filled')
for i=1:length(x)
line( [x(i), x(i)] , [0,1])
end
hold off
title("Y的累積分布函數(shù)")
-----------
% 北太天元根據(jù)數(shù)據(jù)生成一個(gè)連續(xù)分布的隨機(jī)變量Y 的概率密度函數(shù)
% x [input] 是一個(gè)向量,長度大于或者等于2
% ?y 要計(jì)算累積分布函數(shù)概(cdf)的點(diǎn) , 要求y是一個(gè)向量
function py ?= cdf_y( x , ?y )
% ?假設(shè) x 是長度大于等于2的向量, 這里就不檢查了
if nargin == 0
x = [0, 0.2, 0.4, 0.6, 0.8,1];
y = 0.5;
end
n = ?length(x);
x = sort(x); % 對x 排序
x = ( x(:) )' ; ?%把數(shù)據(jù)轉(zhuǎn)成行向量
d = zeros(1,n+1);
for k= 2: n
d(k) = x(k)-x(k-1);
end
d(1) = d(2)/2;
d(n+1) = d(n)/2;
fendian = [ x(1)-d(1), ? ? x ? , ? x(n) + d(n+1)];
gailv = ?[ 0.5*1/n, ? 1/n * ones(1,n-1), 0.5*1/n];
概率密度 = [0, ?gailv ./ d, ?0];
ind = ?y(:) > fendian ; ?%
[r, c] = size(ind);
py =zeros(length(y), 1);
for ?m = 1:r
nz = sum(ind(m,:) );
if nz == 0
py(m) = 0;
elseif nz == length(fendian)
py(m) = 1;
else
py(m) = ? ?gailv(nz) * ( y(m) - fendian(nz) ) / ?(fendian(nz+1) - fendian(nz) ) ;
if (nz>1)
py(m) = py(m) + sum( gailv(1:nz-1) );
end
end
end
py = reshape(py, size(y)); % 轉(zhuǎn)成和y一樣形狀
end