非齐次隐马尔可夫模型预测降雨量

时间:2013-10-29 22:27:44

标签: matlab machine-learning hidden-markov-models knn em

我是HMM的新手,但我已经阅读了足够的文献资料。我正在开展一个项目,我将用大气参数预测降雨量。

我有四个可观察到的大气特征(湿度,温度,风,海平面高度)10年。我还有降雨量数据。

据我所知,每天都会根据空间降雨情况确定天气状况。所以这就是问题所在。假设我有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中编码。

您可以附带您的示例或任何可以解释在程序中实施的过程的来源。

1 个答案:

答案 0 :(得分:0)

HMM具有离散数量的状态,因此您的第一步将是定义您的状态。一旦你有明确定义的状态,为你的状态提出一个编号方案,并编写一个可以接受给定时间段内数据的函数,并输出对应于该状态的状态编号。

一旦你有一个将数据映射到州号的函数(我们称之为get_state),你可以按如下方式创建状态转移矩阵:

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

矩阵i,j的第T个元素现在为您提供从州ij的转换计数。您可以将其转换为转换概率,如下所示:

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

观察对国家的依赖性更难。您必须弄清楚如何将观察到的数据转换为概率密度函数或概率质量函数。您可以从单个状态获得多个观察到的分布,而不是将温度,湿度等组合到一个观察中。

这显然不是一个完整的实现,但希望它足以为您提供一个起点。