梯子 發表於 2024-1-23 10:11:00

基于 R 语言的 MTM 多窗谱分析

<p>多窗谱分析(Multi-Taper Method,MTM)作为一种低方差、高分辨率的谱分析方法,可用于对气温、降水量等时间序列数据的周期性变化分析,且已在气候研究领域中得到了广泛应用。本文将介绍如何在 R 语言环境下,借助相关 R 包实现 MTM 分析,并导出分析结果。</p>
<h2 id="1-安装及加载-r-包">1 安装及加载 R 包</h2>
<p>在开始分析之前,我们需要加载两个关键的 R 包:<strong>astrochron</strong> 和 <strong>openxlsx</strong>。在 R 包管理器中,输入以下命令即可完成安装与加载:</p>
<pre><code class="language-R"># 安装 R 包
install.packages("astrochron") # 主要用于天文年代学研究,可进行 MTM 多窗谱分析
install.packages("openxlsx") # 可用于读写 Excel 文件

# 在 R 语言程序中加载对应 R 包
library(astrochron)
library(openxlsx)
</code></pre>
<h2 id="2-mtm-详细代码">2 MTM 详细代码</h2>
<h3 id="21-读取数据">2.1 读取数据</h3>
<p>假设我们的时间序列数据为 Excel 文件 "data.xlsx" 中的 "Sheet1" 工作表,可利用 openxlsx 包中的 read.xlsx 函数读取数据,如下所示:</p>
<pre><code class="language-R">data &lt;- read.xlsx("data.xlsx", sheet = "Sheet1")
str(data) # 查看数据结构
</code></pre>
<p>通过 str() 函数查看数据结构,确保数据正确读取并符合分析要求:</p>
<pre><code class="language-R">'data.frame':        122 obs. of2 variables:
$ Year: num1901 1902 1903 1904 1905 ...
$ Data: num1017 940 1481 1170 1320 ...
</code></pre>
<p>上方输出结果表明,data 有 122 条数据,分为 Year 和 Data 两列。其中 Year 为年份,Data 为对应年份的数据。</p>
<h3 id="22-执行-mtm-分析">2.2 执行 MTM 分析</h3>
<p>借助 astrochron 包中的 mtm 函数,可轻松进行 MTM 分析。代码如下:</p>
<pre><code class="language-R">mtm_result &lt;- mtm(data, ar1 = TRUE, output = TRUE)
str(mtm_result)
</code></pre>
<p>函数详细说明请参考文末的 astrochron CRAN 网站中的说明文档。</p>
<p>通过 str() 函数查看数据结构,结果如下所示:</p>
<pre><code class="language-R">'data.frame':        304 obs. of8 variables:
$ Frequency   : num0.00164 0.00328 0.00492 0.00656 0.0082 ...
$ Power       : num129.3 107.5 89.9 88.1 102.3 ...
$ Harmonic_CL : num5.36 21.59 42.52 49.04 34.42 ...
$ AR1_CL      : num52.8 37.4 24.8 23.5 33.6 ...
$ AR1_fit   : num134 134 134 134 134 ...
$ AR1_90_power: num214 214 214 214 214 ...
$ AR1_95_power: num245 245 245 245 245 ...
$ AR1_99_power: num311 311 311 311 311 ...
</code></pre>
<p>上方输出结果表明,mtm_result 分为八列。其中后续制图中主要会用到频率 (Frequency)、谱值 (Power) 以及 90%、95%、99%检验结果 (AR1_90_power, AR1_95_power, AR1_99_power)。</p>
<h3 id="23-将分析结果导出为-excel-文件">2.3 将分析结果导出为 Excel 文件</h3>
<p>利用 openxlsx 包中的 write.xlsx 函数,将 MTM 分析结果导出为 Excel 文件。</p>
<pre><code class="language-R">write.xlsx(mtm_result, "mtm_result.xlsx")
</code></pre>
<p>输出的表格可通过 Excel 或 Origin 等软件生成对应统计图。Origin 输出的结果图如下所示,其中周期值与 Frequency 数值互为倒数关系。</p>
<p><img src="https://img2024.cnblogs.com/blog/3085635/202504/3085635-20250427145733678-819996114.jpg"></p>
<p><strong>参考资料</strong>:</p>
<ol>
<li>江志红, 屠其璞, 施能. 多窗谱分析方法及其在全球变暖研究中的应用. 气象学报, 2001(4): 480-490.</li>
<li>许文锋, 张乐满, 范依捷, 等. 1470 年以来长江流域降水重建及其特征分析. 地理科学, 2024, 44(11): 2029-2038.</li>
<li>CRAN: Package astrochron</li>
<li>CRAN: Package openxlsx</li>
</ol><br><br>
来源:https://www.cnblogs.com/qsgeo/p/17981737
頁: [1]
查看完整版本: 基于 R 语言的 MTM 多窗谱分析