2015-12-02 309 views
0

我想知道是否有方法來計算異常值直方圖的情節。我想繪製一個隨機變量的頻率,這個隨機變量非常小,分佈在零附近。然而,在我考慮的大多數情況下,我也有一個讓事情複雜化的異常點。有沒有辦法在R/Matlab中調整x軸的縮放比例,以便我可以捕獲我正在考慮的隨機變量的分佈,並顯示異常值?因爲獲得繪圖的正常方法導致所有值都被認爲是零,我想要顯示它們是如何分佈在零附近的。因此,理想情況下,我希望將零附近的比例表示爲非常小的數字,並且比間隔(不一定必須與實際距離零的距離成比例)之間的間隔表示異常值的分檔。我不想從樣本中刪除異常值。如何計算直方圖中的異常值? - R/Matlab

在R/Matlab中可能會出現這種情況嗎?任何其他建議將受到歡迎。

編輯:問題不在於識別異常值併爲它們使用不同的顏色。問題在於調整x軸上的比例,以便我可以觀察變量的分佈以及在圖中包含異常值。

+0

使用直方圖塊也離羣的選擇:你可以表示每個繪製在圖中的單獨的標記異常值。如果沒有太多的異常值,這可能會起作用。 – mikkola

+0

@SamDickson你提到我的問題中描述的問題與我的不同。 Ander Biguri的解決方案是我一直在尋找的。我只需要稍微修改一下,就像我在其他評論中所描述的那樣。 – Masher

回答

2

下一個代碼將完成這項工作,但您需要更改軸的Xticklabels以使它們顯示異常值的實際值。

A=rand(1000,1)*0.1; 
A(1:10)=10; 


% modify the data for plotting pourposes. Get the outliers closer 
expected_maximum_value=1; % You can compute this useg 3*sigma maybe? 
distance_to_outliers=0.5; 
outlier_mean=mean(A(A>expected_maximum_value)); 
A(A>expected_maximum_value)=A(A>expected_maximum_value)-outlier_mean+distance_to_outliers; 

% plot 
h=histogram(A,'BinWidth',0.01) 

%% trick the X axis 
ax=gca; 
ax.XTickLabel{end-1}=[ax.XTickLabel{end-1} '//']; 
ax.XTickLabel{end}=['//' num2str(outlier_mean)]; 

enter image description here

+0

感謝您的回答!經過一些試驗和錯誤,我設法實現你的解決方案,它幾乎完美的工作。我還有一個問題。我的規模上的數字非常小,在劇情結束時x10-4。當我應用你的技巧並以某種方式替換標籤時,我失去了這個x10-4。你知道如何實施你的解決方案而不會失去它嗎?再次非常感謝您的幫助:) – Masher

+0

@Masher我的第一個建議是將'distance_to_outliers'的值減小到3 * sigma(假設爲高斯數據)或'2 * expected_maximum_value'。否則你需要用蜱做更難的技巧。 –

+0

我會試試這種方式,謝謝你的幫助:) – Masher