Distributions

標準化二維直方圖並獲得邊緣

  • March 13, 2012

我有一個使用Matlab中的hist3函數生成的兩個向量s1s2的二維直方圖:

[hist2D, binC] = hist3([s1' s2']);

我通過以下方式使其總體積等於單位來對其進行標準化:

L = binC{1}(2) - binC{1}(1);
B = binC{2}(2) - binC{2}(1);
totalVolume = sum(sum(hist2D.*L*B));
prob2D = hist2D/totalVolume;

**問題:**這是標準化二維直方圖的正確方法嗎?

我還對s1s2的一維直方圖進行了標準化,如下所示。

[hist1, binCentres1] = hist(s1);
binWidth1 = binCentres1(2) - binCentres1(1);
prob1 = hist1 / (sum(hist1) * binWidth1);
%same for s2

**問題:**如何從歸一化的二維直方圖中獲得邊緣(一維)直方圖?

我已經嘗試通過以下方式執行此操作:

prob1M = sum(prob2D, 2); %extract marginal for s1
prob2M = sum(prob2D, 1); %extract marginal for s2

如果我這樣做正確,我希望prob1等於prob1M。我似乎走在了正確的軌道上,因為條形圖(下圖)看起來很相似,但在垂直軸上進行了縮放。也許我做錯了規範化?

prob1 和 prob1M 的條形圖

我也嘗試使用以下方法對 prob1M進行歸一化:

prob1M = prob1M / (sum(prob1M) * binWidth1);

**問題:**如果您從標準化的 2D 直方圖中獲得邊緣,是否仍然需要標準化?為什麼/為什麼不?

歸一化後, prob1和prob1M的**面積等於 1,其中面積計算為:

area = sum(binWidth1.*prob1)
%same for prob1M

但是,prob1prob1M(以及prob2prob2M)仍然略有不同:

prob1 = 0.9412 0.4412 0.3235 0.3235 0.2941 0.3235 0.3235 0.4118 0.4706 1.1471
prob1M = 0.9706 0.4706 0.3824 0.3235 0.3235 0.3235 0.3530 0.3824 0.4412 1.0295

謝謝你的建議。

密度可能很難處理。只要有可能,就用總概率來計算。

通常,直方圖以點數據開頭,例如這 10,000 個點:

散點圖

一個通用的 2D 直方圖通過一個集合來細分兩個變量的域(這裡是單位平方)不重疊的多邊形(通常是矩形或三角形)。對每個多邊形它指定密度(每單位面積的概率或相對頻率)。這計算為

這部分估計概率; 當它除以面積時,你得到密度。

二維直方圖

在此 2D 直方圖中,單位正方形已由寬度為矩形的矩形細分和身高.

二維直方圖通過體積表示概率(或相對頻率) :對於每個多邊形,高度和底的乘積,或密度 * 面積,返回. 作為檢查,總概率是通過對所有多邊形的體積求和獲得的:

這等於團結,因為它應該。(在上圖中,直方圖高度範圍為幾乎達到; 總體積是.)

要獲得邊際密度(例如,沿 x 軸),您可以將該軸在切割點處分割成箱. (允許這些長度不等。)每個 bin確定二維區域的垂直切片(由所有點組成為此)。讓我們稱之為條帶. 與任何 (1D) 直方圖一樣,計算(或估計)每個 bin 內的總概率並除以 bin 寬度以獲得直方圖值。總概率通常估計為與該條相交的多邊形中的概率之和:

將此值除以給出邊際分佈直方圖的值. 對每個垃圾箱重複此操作。

邊際

x 邊緣直方圖為藍色,y 邊緣直方圖為紅色。每一個的總面積為.

引用自:https://stats.stackexchange.com/questions/24568

comments powered by Disqus