(20)一元线性回归及显著性检验(Slope趋势分析)
本文由SCY原创,转载注明出处。
时间序列趋势分析
时序趋势分析是一种重要的统计技术,用于分析随时间变化的数据模式。以下是一些常用的时序趋势分析方法:
-
线性和非线性趋势分析:
通过线性回归或非线性回归模型,可以估计时间序列数据的趋势。例如,一元线性回归可以用来估计线性趋势,而多项式回归或指数回归可以用来估计非线性趋势。
-
季节分解(Seasonal Decomposition):
季节分解可以分离出时序数据中的趋势、季节性和随机组成部分。例如,可以使用STL(Seasonal and Trend decomposition using Loess)或季节分解的经典方法。
-
时间序列平滑(Time Series Smoothing):
时间序列平滑方法,如移动平均和指数平滑,可以用来估计时间序列数据的趋势。
-
自相关和偏自相关分析(Autocorrelation and Partial Autocorrelation Analysis):
通过计算时间序列数据的自相关和偏自相关函数,可以识别数据中的循环模式和趋势。
-
时间序列分解(Time Series Decomposition):
将时间序列分解为趋势、周期和随机噪声组件,通常使用模型如X-12-ARIMA或其变体。
-
时间序列模型(Time Series Modeling):
ARIMA(自回归整合移动平均模型)、ETS(错误、趋势、季节性模型)和状态空间模型等可以用于分析时间序列的趋势和周期性。
-
波段分析(Wavelet Analysis):
波段分析可以在不同的时间尺度上识别时序数据的趋势和周期性。
-
Mann-Kendall趋势检验和Sen的斜率估计:
这些非参数方法用于检测时间序列数据的趋势并估计变化的速度。
-
突变点分析(Changepoint Analysis):
用于识别时间序列数据中的结构变化,例如趋势的改变或方差的改变。
-
谱分析(Spectral Analysis):
通过分析时序数据的频率域特性来识别周期性和趋势。
一元线性回归和Mann-Kendall检验
本文重点介绍一元线性回归和Mann-Kendall检验的原理和R语言实现步骤,以1980——2020年的降雨数据为例。
一元线性回归和Mann-Kendall检验是分析时间序列趋势的两种不同方法,它们各自有其特点和适用场景。下面是对它们的比较和联系的说明:
- 基本原理:
一元线性回归是基于参数的统计方法,它假设数据之间存在线性关系,并试图找到描述这种关系的线性方程。它提供了估计的斜率和截距,以及相关的统计测试,以评估这种关系的显著性和强度。
Mann-Kendall检验是一种非参数的统计方法,用于检测时间序列数据中的单调趋势,而不假设数据之间的特定关系。它基于数据的秩次,而不是数据的实际值。
- 假设:
一元线性回归通常需要满足一些基本假设,例如误差的正态性和独立性,以及数据的线性关系。当数据不满足这些假设时,线性回归的结果可能会受到影响。
Mann-Kendall检验作为非参数检验,不需要数据满足正态分布或其他分布假设,因此它对异常值和非正态数据更具鲁棒性。
- 输出:
一元线性回归提供了详细的模型参数(例如斜率和截距)和预测值,同时也提供了模型的显著性检验结果。
Mann-Kendall检验主要提供了趋势的显著性检验结果,但不提供具体的模型参数或预测值。
- 适用场景:
当数据具有明确的线性关系,并且满足线性回归的基本假设时,一元线性回归是一个很好的选择。
当数据可能有单调趋势,但不一定是线性的,或者当数据可能包含异常值或不满足正态分布假设时,Mann-Kendall检验可能是一个更好的选择。
- 联系:
两者都可以用于分析时间序列数据中的趋势,但方法和假设有很大的不同。
在某些情况下,它们可以互补使用。例如,可以首先使用Mann-Kendall检验来确定是否存在显著的趋势,然后使用一元线性回归来估计趋势的具体参数。
- 扩展:
Mann-Kendall检验可以与Sen的斜率估计结合使用,以提供趋势的斜率估计,这在一定程度上类似于一元线性回归提供的斜率估计。
一元线性回归
一元线性回归用于研究一个变量(自变量)如何线性影响另一个变量(因变量)。以下是一元线性回归的基本原理和步骤:
数学模型:
一元线性回归假设两个变量之间存在线性关系,可以用下面的方程式表示:
$$ Y = \beta_0 + \beta_1X + \varepsilon $$
其中:
- ( Y ) 是因变量的值,
- ( X ) 是自变量的值,
- ( $\beta_0$ ) 是截距项,
- ( $\beta_1$ ) 是斜率项,
- ( $\varepsilon$ ) 是误差项。
参数估计:
一元线性回归的目标是找到最佳的 ( $\beta_0$ ) 和 ( $\beta_1$ ),使得模型的预测值与实际值的差异(误差平方和,$SSE$)最小。这通常通过最小二乘法(OLS)实现,它的基本思想是最小化所有观测值的残差平方和,即:
$$SSE = \sum_{i=1}^n (Y_i - (\beta_0 + \beta_1X_i))^2 $$
通过对 $SSE$ 关于 $\beta_0$ 和 $\beta_1$ 的偏导数并令其为零,可以解得 $\beta_0$ 和 $\beta_1$ 的估计值。
显著性检验:
一旦得到了 $\beta_0$ 和 $\beta_1$ 的估计值,通常会进行假设检验来评估这些参数是否显著不为零。这涉及到计算$t$统计量和对应的$p$值。如果$p$值低于某个预定的显著性水平(通常为0.05),则认为参数是显著的。
模型评估:
模型评估通常包括计算 $R^2$ (决定系数)和调整 $R^2$,以评估模型对数据的拟合程度。$R^2$ 表示模型解释的数据变异的比例。
预测:
使用得到的 $\beta_0$ 和 $\beta_1$ 估计值,可以对新的 $X$ 值做预测,并计算预测区间,以估计预测的不确定性。
模型诊断:
模型诊断是检查模型是否满足回归分析的基本假设,例如误差的正态性、独立性和方差齐性。这可以通过残差图、正态概率图和其他诊断图来完成。
案例分析
Mann-Kendall检验和Sen斜率估计
Mann-Kendall(MK)检验和Sen的斜率估计是两种常用的非参数方法,用于分析时间序列数据中的趋势。下面是它们的基本原理介绍:
Mann-Kendall检验:
Mann-Kendall检验是一种非参数检验,用于确定一个数据序列中是否存在单调的趋势。它不需要数据满足特定的分布假设,因此对于非正态分布的数据很有用。MK检验的基本步骤如下:
-
对于序列中的每一对数据点($x_i$, $x_j$),计算符号统计量 ($S$):
$$S = \sum_{i=1}^{n-1} \sum_{j=i+1}^n \text{sign}(x_j - x_i)$$
其中$\text{sign}(x_j - x_i)$是符号函数,如果 $x_j$ > $x_i$ 则值为 +1,如果 $x_j$ < $x_i$ 则值为 -1,如果 $x_j$ = $x_i$ 则值为 0。 -
计算检验统计量 $U$ 和对应的 $p$ 值以判断趋势是否显著。
Sen的斜率估计:
Sen的斜率估计是一种非参数方法,用于估计数据序列中的趋势斜率。它通过计算所有可能的数据点对之间的斜率,然后取这些斜率的中位数作为趋势斜率的估计。Sen的斜率估计的基本步骤如下:
-
对于序列中的每一对数据点$(x_i, y_i)$ 和 $(x_j, y_j)$,计算斜率:
$$d_k = \frac{(y_j - y_i)}{(x_j - x_i)}$$
其中 $1 \leq i < j \leq n$。 -
从所有计算得到的斜率 $d_k$ 中,取中位数作为Sen的斜率估计:
$$b_{\text{Sen}} = \text{median}(d_k)$$
Sen的斜率估计可以提供一个关于时间序列数据趋势的稳健(对异常值不敏感)的估计,而Mann-Kendall检验可以提供这种趋势是否显著的证据。通常,这两种方法可以结合使用,以提供对数据趋势的全面理解。在时间序列趋势分析中,MK检验通常用于检测趋势的显著性,而Sen的斜率估计用于量化趋势的大小。