1

我是 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 中对其进行编码。

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

4

1 回答 1

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-th 元素现在为您提供从 state到T的转换计数。您可以将其转换为转换概率,如下所示:ij

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

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

这显然不是一个完整的实现,但希望它足以给你一个起点。

于 2013-10-30T00:09:13.190 回答