- 积分
- 25200
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2017-9-4
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 灭火器 于 2020-5-25 11:14 编辑
我们知道 REOF 的计算主要就是找出因子载荷的旋转矩阵,对于最常用的 varimax 法,《现代气候统计诊断与预测技术》中给出的算法是:既然无法一次找到旋转矩阵,那就逐步逐步地旋转两个轴,直至载荷的方差极大,公式如图一所示。但是在网络上搜索 EOF 分析的话,很容易找到这个网站:https://websites.pmc.ucsc.edu/~dmk/notes/EOFs/EOFs.html,其中提供的 varimax 的 MATLAB 代码用到的解法与《现代气候统计诊断与预测技术》一书不同,用的是 SVD 分解,代码片段如下:
- for i = 1 : it_max
- z = x * TT;
- B = x' * ( z.^3 - z * diag(squeeze( ones(1,p) * (z.^2) )) / p );
-
- [U,S,V] = svd(B);
-
- TT = U * V';
- d2 = d;
- d = sum(diag(S));
-
- % End if exceeded tolerance.
- if d < d2 * (1 + tol), break; end
-
- end
复制代码 看起来似乎是先随意设定一个旋转矩阵,再对某些量进行 SVD 后重新得到旋转矩阵,如此迭代直到条件满足。不知道这个算法出自什么教材/文献,想向论坛的各位请教一下这个原理。
|
|