如何绘制系统相关性趋势图?解析常见方法与实例

2026-09-06 0 阅读

在数据分析与系统研究中,绘制系统相关性趋势图是一种直观展示变量之间关系变化的方法。这种图表有助于我们理解系统内部各组成部分之间的相互作用,以及它们随时间或其他变量变化的关系。以下将详细介绍几种常见的绘制系统相关性趋势图的方法,并结合实例进行说明。

1. Pearson 相关系数法

Pearson 相关系数是一种衡量两个变量线性相关程度的指标,其取值范围在 -1 到 1 之间。当相关系数为 1 或 -1 时,表示完全正相关或完全负相关;当相关系数为 0 时,表示无相关。

实例

假设我们有两个变量:A 和 B,代表某城市每年的降雨量和对应的降水量。我们可以使用 Python 的 scipy 库来计算 Pearson 相关系数,并绘制趋势图。

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import pearsonr

# 假设数据
years = np.arange(2000, 2023)
rainfall = np.random.normal(500, 100, len(years))
precipitation = np.random.normal(500, 100, len(years))

# 计算相关系数
corr, _ = pearsonr(rainfall, precipitation)

# 绘制趋势图
plt.figure(figsize=(10, 5))
plt.plot(years, rainfall, label='Rainfall')
plt.plot(years, precipitation, label='Precipitation')
plt.title(f'Rainfall vs Precipitation (Pearson Correlation: {corr:.2f})')
plt.xlabel('Year')
plt.ylabel('Amount')
plt.legend()
plt.show()

2. Spearman 秩相关系数法

Spearman 秩相关系数是一种非参数的秩相关系数,适用于不满足正态分布的数据。它通过比较两个变量的秩次来衡量它们的相关性。

实例

继续使用上述降雨量和降水量的数据,我们可以计算 Spearman 秩相关系数,并绘制趋势图。

from scipy.stats import spearmanr

# 计算 Spearman 秩相关系数
spearman_corr, _ = spearmanr(rainfall, precipitation)

# 绘制趋势图
plt.figure(figsize=(10, 5))
plt.plot(years, rainfall, label='Rainfall')
plt.plot(years, precipitation, label='Precipitation')
plt.title(f'Rainfall vs Precipitation (Spearman Correlation: {spearman_corr:.2f})')
plt.xlabel('Year')
plt.ylabel('Amount')
plt.legend()
plt.show()

3. 自相关函数(ACF)

自相关函数是一种衡量时间序列数据与其自身滞后值之间相关性的方法。它可以帮助我们识别时间序列中的周期性变化。

实例

假设我们有一组时间序列数据,代表某城市一年的气温变化。我们可以使用 Python 的 statsmodels 库来计算自相关函数,并绘制趋势图。

import statsmodels.api as sm
from statsmodels.graphics.tsaplots import plot_acf

# 假设数据
temperatures = np.random.normal(25, 5, 365)

# 计算自相关函数
model = sm.tsa.Acfd(temperatures)
fig, ax = plt.subplots(figsize=(10, 5))
plot_acf(model, ax=ax)
plt.title('Autocorrelation Function (ACF)')
plt.show()

4. Granger 因果关系检验

Granger 因果关系检验是一种用于判断两个时间序列变量之间是否存在因果关系的方法。如果变量 A 在统计上可以预测变量 B 的未来值,那么我们可以说变量 A 是变量 B 的 Granger 原因。

实例

假设我们有两个时间序列变量:股票价格和利率。我们可以使用 Python 的 statsmodels 库来执行 Granger 因果关系检验,并绘制趋势图。

from statsmodels.tsa.api import VAR

# 假设数据
stock_prices = np.random.normal(100, 10, 365)
interest_rates = np.random.normal(2, 0.5, 365)

# 建立模型
model = VAR(data=np.column_stack((stock_prices, interest_rates)))
results = model.fit(maxlags=10, ic='aic')

# 检验 Granger 因果关系
print(results.summary())

通过以上方法,我们可以绘制出系统相关性趋势图,从而更好地理解系统内部各组成部分之间的关系。在实际应用中,根据具体问题和数据特点选择合适的方法至关重要。

分享到: