2013-03-19 116 views
5

我有一個關於正態分佈的問題(使用mu = 0sigma = 1)。操作數據以更好地擬合高斯分佈

讓我們說,我先打電話randn或normrnd這樣

x = normrnd(0,1,[4096,1]); % x = randn(4096,1) 

現在,評估x值如何般配正態分佈,我叫

[a,b] = normfit(x); 

,並有圖形支持

histfit(x) 

現在來到這個問題的核心:如果我對如何不滿意如何X適合給定的正態分佈,如何優化X爲了更好地適應預期正態分佈0意味着1標準偏差 ??有時會因爲一些表示值(在這種情況下,即),X適合真的很差預期高斯,所以我想操縱X線性或不的,它並沒有真正的問題在這一階段),以獲得更好的健身。

我想說我可以訪問統計工具箱。

編輯

  1. 我所做的例子有normrndrandn引起我的數據應該和預期有正常的分佈。但是,在這個問題中,這些功能只會有助於更好地理解我的關注。

  2. 是否可以應用最小二乘擬合?

  3. 一般來說我得到的分佈是類似以下內容: enter image description here

+1

也許你會更好的運氣比用僞隨機數,如果你的數據集是小準隨機數。 http://www.mathworks.com/help/stats/generating-quasi-random-numbers.html – Dan 2013-03-19 10:28:28

+0

如果您向我們展示您的發行版的外觀,那將有所幫助。 – Memming 2013-03-19 14:59:01

+0

你上傳的內容看起來很適合我。你可能只需要更多的樣本。 – Memming 2013-03-19 15:14:14

回答

3

也許,你可以去嘗試標準化輸入數據有均值= 0和sigma = 1 。就像這樣:

y=(x-mean(x))/std(x); 
+0

我正在玩這個瑣碎的技巧,這並沒有真正解決問題。順便說一句,謝謝你的支持 – fpe 2013-03-19 13:00:11

+2

你應該用'std'而不是'var'來標準化。也可以使用'zscore'。 – Memming 2013-03-19 14:57:39

+1

你是完全正確的。 – tashuhka 2013-03-19 17:15:49

1

如果你正在尋找一個非線性變換,將讓你看起來分佈正常,可以先估計累積分佈,然後取功能成分與標準的正常CDF的逆。通過這種方式,您可以通過可逆變換將幾乎任何分佈轉換爲法線。看看下面的示例代碼。

x = randn(1000, 1) + 4 * (rand(1000, 1) < 0.5); % some funky bimodal distribution 
xr = linspace(-5, 9, 2000); 
cdf = cumsum(ksdensity(x, xr, 'width', 0.5)); cdf = cdf/cdf(end); % you many want to use a better smoother 
c = interp1(xr, cdf, x); % function composition step 1 
y = norminv(c); % function composition step 2 
% take a look at the result 
figure; 
subplot(2,1,1); hist(x, 100); 
subplot(2,1,2); hist(y, 100); 
+0

如果你不平滑經驗CDF,這將是正常的,但做這種操縱的重點是什麼? :) – Memming 2013-03-19 15:22:37