请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 59269|回复: 93

【原创】用NCL做主变量分析(PCA, EOF)

  [复制链接]

新浪微博达人勋

发表于 2012-2-23 00:09:08 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
【原创】用NCL做主变量分析(PCA, EOF)

EOF(Empirical Orthogonal Function, 又名Principal Component Analysis)方法:矢量变量(x1,x2, ... xn)计算得到的covariance矩阵或者correlation矩阵具有对称性。从数学上,对称矩阵可以对角化,得到特征值(eigenvalue)和特征矢量。由于对称矩阵对角化过程中可以保持矩阵trace不变的特点,可以知道这些特征值代表了在各个特征矢量上的variance.  具有高特征值的特征矢量代表了variance最大的方向,也就是所谓的principal component analysis。 El Nino, IOD 等现象的发现和总结,都有EOF分析的贡献。

关于EOF分析的基本原理,可以参考
Statistcal Methods in the Atmospheric Sciences, Daniel S.Wilks.
事实上这本书是从应用出发。还可以考虑一下其他数学的统计教材。注意,在大气中的名字是EOF, 在数学中的名字是PCA。

在NCL中已经有写好的EOF分析程序:
eof = eof_func(ori_data, neval, optEOF)  返回PC1, PC2, ....PCneval
ts   = eof_ts(ori_data, neval, optEOF)      返回在各个时间点上每个EOF function的“得分” (比如说PC1在这个时间的强弱)
rec = eof2data(eof, ts)                             利用PC1,PC2, ...., PCneval, 和“得分”重构原数据

其中, ori_data是input data. 比如说我们有一个观测站的数据,ori_data 是一个2维数组,第一个维度上是各个物理量(T, P, QV, U,V),第二个维度上是时间, 比如说300天(注意,NCL的EOF函数要求最后一个维度必须是时间)。那么ori_data就是 5x300的二维数组。
neval是你要返回的主变量数目,比如 3, 则返回前三个主变量(PC1, PC2, PC3)。
optEOF = True
optEOF@jopt = 0 利用covariance计算(利用correlation计算, 如果= 1)

另外,各个PC所占的比重可以在eof的attribute里查到。

在得到各个PC和ts之后,可以根据实际需要,继续进行下面的分析。

T

评分

参与人数 1金钱 +1 收起 理由
flyapple1992 + 1 很给力!

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-2-23 08:28:35 | 显示全部楼层
感谢楼主分享的原创材料!好久不见啦,嘿嘿
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-2-23 09:56:40 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-2-23 15:04:10 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-5-20 20:13:55 | 显示全部楼层
感谢楼主分享
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-11-6 10:05:17 | 显示全部楼层
还有没有一些关于El Nino, IOD 等现象有关的?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-11-6 13:49:22 | 显示全部楼层
cmc1986 发表于 2012-11-6 10:05
还有没有一些关于El Nino, IOD 等现象有关的?

你在做这方面研究么?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-11-6 15:47:02 | 显示全部楼层
ztftom 发表于 2012-11-6 13:49
你在做这方面研究么?

呵呵,刚刚开始做,因为阅读文章的时候发现ENSO、IOD的提出都与EOF紧密相关,所以只好再恶补一下基础知识了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-11-10 23:19:26 | 显示全部楼层
想请教一下楼主,ncl中有计算reof的函数或者程序吗?eof我已经用过,很好用。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-11-11 21:13:16 | 显示全部楼层
Sylvia 发表于 2012-11-10 23:19
想请教一下楼主,ncl中有计算reof的函数或者程序吗?eof我已经用过,很好用。

参考eos_func
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表