气象中EOF的理解

  EOF方法在气象分析中经常用到,接触好长时间,也没有弄清楚他到底在干嘛。为什么这么做是可行的?这里面的计算都有什么意义呢?
  看了一些矩阵理解方面的内容后,对EOF算是有了一些粗浅的理解,现在试着去阐述一下其中的院里,好厘清自己对EOF理解。

文章目录

    • 几篇参考文章
    • EOF分析——Empirical Orthogonal Function analysis
      • EOF的计算过程
    • EOF的理解
      • 内积与投影
      • 线性空间


几篇参考文章

下面这几篇文章对我帮助很大,值得一看:
  1、PCA的数学原理
  2、eof-Mathematical Description
  3、理解矩阵(一)
  4、理解矩阵(二)
  5、理解矩阵(三)
  6、PCA算法是怎么跟协方差矩阵/特征值/特征向量勾搭起来的?
  7、什么是协方差,怎么计算?为什么需要协方差?


EOF分析——Empirical Orthogonal Function analysis

  经验正交函数分析方法——常用EOF分析指代,在地球环境科学中经常使用。EOF分析总的目标是通过将时空数据集转化成物理量的空间模态和与之相联系时间上的投影(时间序列),来简化该时空数据集。这些空间模态就是EOFs,可以被看作是方差对应的基函数(空间中的一组基向量)。相关的时间投影是主要成分(PCs),是EOFs的时间系数。
  EOF分析只是以方差对应的基对数据进行了新的表达。而原始数据集完全可以由EOFs和PCs重建出来。但是在实践中,我们通常只对EOFs的一个子集感兴趣。单个的EOFs有时可能会有一个合理的物理解释与之对应,另外我们可能希望的是用有限的几个EOFs来重建原始数据集,这些EOFs可以根据对应的方差来选择。

EOF的计算过程

  对于一个时空数据集,观测点位于空间中m个地点—— x 1 , x 2 , . . . , x m x_1, x_2,...,x_m x1,x2,...,xm,观测时间是长为 n n n的时间序列—— t 1 , t 2 , . . . t n t_1,t_2,...t_n t1,t2,...tn。这些观测值可以用一个 M × N M×N M×N的矩阵F来表示, F F F的行是某个地点在观测期内所有时间点的观测值,而列是某个时间点上地图上所有观测点的观测值。下面的异常矩阵 A A A F F F矩阵中的每个元素减去时间均值(即各行均值)而得到的。
(1) A = [ a 1 , 1 a 1 , 2 … a 1 , n a 2 , 1 a 2 , 2 … a 2 , n ⋮ ⋮ ⋱ ⋮ a m , 1 a m , 1 … a m , n ] A= \left[ \begin{matrix} a_{1,1} & a_{1,2} & \dots & a_{1,n} \\ a_{2,1} & a_{2,2} & \dots & a_{2,n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m,1} & a_{m,1} & \dots & a_{m,n} \end{matrix} \right]\tag{1} A=a1,1a2,1am,1a1,2a2,2am,1a1,na2,nam,n(1)
  一个常用的计算EOF的方法是首先计算协方差矩阵 R = A T A R=A^TA R=ATA,接着算得特征值:
(2) R = P Λ P − 1 R=P{\Lambda}P^{-1} \tag{2} R=PΛP1(2)
  其中P的列是特征向量(EOF——即为模态), Λ \Lambda Λ的对角线上的值是对应的特征值(EOF所对应的方差),时间系数PCs的 P P P矩阵可以通过A在EOFs上的投影计算得来:
P = A C P=AC P=AC
注:这一段来自文献2,其中另有SVD计算方法可以参考


EOF的理解

  理解EOF的本质,可以帮我们更好的认识EOF和解释EOF的各个模态,最重要的是让我们有了一个处理问题的方法,不久你就会发现,这个方法稍微变下或者应用在不同数据集上,将能很好地帮助我们分析数据。
  对于EOF的本质的疑问可能包括:EOF为什么可以帮助我们来分解时空场?方差、模态这些到底是什么东西?这跟矩阵计算有什么关联?为什么要算协方差矩阵?为什么要减掉每行的均值?
  解决以上疑问可能要从矩阵和向量的计算讲起(如有可指摘和探讨的地方,尽可提出,以便讨论)

内积与投影

  线性空间中的元素也称作向量,向量具有大小和方向,在不少人的印象中可能就是一个形象化的箭头。而两个向量的内积是这样定义的:
(1) ( a 1 , a 2 , … , a m ) T ⋅ ( b 1 , b 2 , … , b m ) T = a 1 b 1 + a 2 b 2 + ⋯ + a m b m \left( \begin{matrix} a_{1},a_{2} , \dots ,a_{m} \end{matrix} \right)^T \cdot \left( \begin{matrix} b_{1},b_{2} , \dots ,b_{m} \end{matrix} \right)^T = a_1b_1+a_2b_2+\dots+a_mb_m\tag{1} (a1a2am)T(b1b2bm)T=a1b1+a2b2++ambm(1)
  两个向量内积的结果是一个实数,计算很容易,但这个实数有什么意义呢?下面我们分析其几何意义。若有 A 、 B A、B AB两个m维向量,我们知道m为向量可以等价表示为m维空间中的一条从原点出发的有向线段。为简单起见假设 A 、 B A、B AB都是二维向量,则 A = ( x 1 , y 1 ) , B = ( x 2 , y 2 ) A=(x_1,y_1),B=(x_2,y_2) A=(x1,y1),B=(x2,y2)。则在二维平面上 A 、 B A、B AB可表示为两条有向线段,见下图:
  
  
  

线性空间

  对于在某个时间 i ∈ [ 1 , n ] i\in[1, n] i[1,n]测得的空间数据,我们可将其抽象为一个向量,向量中的每个值对应m个站点的测量值:
(1) A = [ a 1 , i a 2 , i ⋮ a m , i ] A= \left[ \begin{matrix} a_{1,i} \\ a_{2,i} \\ \vdots \\ a_{m,i} \end{matrix} \right]\tag{1} A=a1,ia2,iam,i(1)
  对于该向量
  
  

  在三个基的坐标系中,有一个3×n的矩阵,实际上是
  

你可能感兴趣的:(统计,EOF,数学)