2013-10-29 47 views
1

我是HMM的新手,但我已經閱讀了足夠的文獻。我正在研究一個項目,其中我將使用大氣參數預測降雨量。使用非均勻隱馬爾可夫模型預測降雨量

我有氣氛(溼度,溫度,風,海拔高度)爲10年的4個可觀察到的特性。我也有降雨量數據。

按照我可以理解,每一天的天氣狀態將被空間降雨的基礎上指定的。所以這裏有這個問題。假設我有100天的數據。

降雨= {1,2,3,4 ... 100}。所以如果我想生成天氣狀態,我應該怎麼做?

允許假設

temperature = { 30 to 45, some kind of distribution } 
humidity = { 25 to 80 } 
wind = { 60 to 100 } 
sea level height = { 35 to 90 } 

如何找到

  • P(X_0)初始參數,
  • P(X_T | X_T-1)的狀態轉移矩陣,
  • P(Y_t | X_T)的觀察狀態的依賴

我是否需要一些聚類來生成狀態?

我在MATLAB中編寫它。

你可以跟你的榜樣或可以解釋程序來執行程序的任何來源。

+0

正如@nispio在下面的答案中指出的,HMM基本上是用離散值狀態和輸出變量構造的。你可能想看看[卡爾曼濾波器](http://en.wikipedia.org/wiki/Kalman_filter)([tutorial](http://bilgin.esme.org/BitsBytes/KalmanFilterforDummies.aspx)),它是相同的模型,但使用連續值狀態和輸出 - 可能是您的數據集的更好類型的模型。 – lmjohns3

回答

0

的HMM具有狀態的離散數,所以你的第一步是定義你的狀態。一旦你有明確的狀態,爲你的狀態提出一個編號方案,並編寫一個函數,它可以接受給定時間段內的數據,並輸出對應於該狀態的狀態編號。現在

T = zeros(num_states); 
for day = 2:num_days 
    s1 = get_state(data(day-1)); 
    s2 = get_state(data(day)); 
    T(s1,s2) = T(s1,s2) + 1; 
end 

矩陣Ti,j個元素:

一旦你有一個函數(讓我們稱之爲get_state),其地圖數據的國家數量,你可以創建你的狀態轉移矩陣如下給你從ij的轉換計數。您可以將其轉化爲轉換概率如下:

M = bsxfun(@rdivide,T+1,sum(T+1,2)); 

觀察對狀態的依賴性更難。您將不得不弄清楚如何將觀測數據轉換爲概率密度函數或概率質量函數。您可以從單個狀態多次觀察分佈,而不是將溫度,溼度等組合成單個觀察值。

這顯然不是一個完整的實現,但希望它是足以讓你一個起點。