2017-06-19 56 views
3

我用我的預測高斯過程。現在讓我們假設我已預測存儲在大小爲1900 X 1的x中的值。現在我想檢查它的分佈是否遵循高斯分佈。我需要這個來比較其他方法預測值如NN,KNN的分佈函數,以判斷哪一個遵循平滑高斯或正態分佈函數檢查天氣預測值遵循高斯分佈還是不使用matlab?

我該怎麼做?如果我能以數字數據的形式得到一些結果,那就更好了。代碼編寫如下,
m = mean(ypred); % mean of r s = std(ypred); % stdev of r pd = makedist('Normal','mu',m,'sigma',s); % make probability distribution with mu = m and sigma = s [h,p] = kstest(ypred,'CDF',pd); % calculate probability that it is a normal distribution ypred值是從matlab的fitrgp獲得的輸出。 ypred值的樣品附連here

[figure]2是測量值和預測值的殘差qq_plot

+0

我不明白,如果你的預測基於高斯過程:那麼根據定義,這些數據通常是分佈式的?不是? – obchardon

+0

是的,但我正在比較NN,KNN等其他方法,並想知道其中哪一個遵循平滑高斯函數或正態分佈函數 –

+0

我做了,但是我正在尋找數值結果。 QQ情節全是關於圖形的結果。 –

回答

0

,您可以撥打One-sample Kolmogorov-Smirnov test

x = 1 + 2.*randn(1000,1); % just some random normal distributed data, replace it with your actual 1900x1 vector. 

m = mean(x); % mean of r 
s = std(x); % stdev of r 
pd = makedist('Normal','mu',m,'sigma',s); % make probability distribution with mu = m and sigma = s 
[h,p] = kstest(x,'CDF',pd); % calculate probability that it is a normal distribution 

哪裏p是,它遵循正態分佈,h = 1如果零假設與0.05的顯着拒絕的概率。由於零假設是「遵循正態分佈」,所以h = 0意味着它是正態分佈的。

由於x在這個例子中是從正態分佈抽樣,最有可能的是h = 0p > 0.05。如果你運行上面的代碼與

x = 1 + 2.*rand(1000,1); % sampled from uniform distribution 

h將最有可能是1和p<0.05。當然,您可以將所有東西寫成一行,以避免創建mspd

+0

您使用的r值。這個r值是來自我的預測值還是測量的輸入值?如果沒有,那麼我怎麼能把輸出結果放入代碼中。從你的代碼看來,你用於輸入值。如何將我的預測值添加到此代碼中? –

+0

我可以看到,但我的問題是變量你用於輸入或預測的輸出結果,我在這種情況下是x? –

+0

使用你的代碼後,我從兩種方法得到這些值是,p = 6.5987e^-09和p = 2.2983e^-11。這是什麼意思?獲得p = 6.5987e^-09的方法是否比p = 2.2983e^-11方法更爲順暢? –