如何找到时序数据中线性的趋势(一)

简介: 如何找到时序数据中线性的趋势(一)

线性趋势

下面是带有趋势的时序数据:

https://raw.githubusercontent.com/FlorinAndrei/misc/master/qdata.csv

让我们加载它,看看它是什么样子:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import mean_squared_error, r2_scoreser = pd.read_csv('qdata.csv', index_col=0, squeeze=True)
serx
0     473.917764
1       75.324825
2     -306.969479
3       53.271476
4     372.966686
          ...    
95   4650.550473
96   4604.573344
97   4891.704638
98   5265.948162
99   5618.909339
Name: y, Length: 100, dtype: float64plt.plot(ser)
plt.show()

image.png

好的,这里有一个趋势。我们假设它是线性的,我们来做线性回归来找出答案。这是线性回归的一个直接应用。上面导入的sklearn库拥有我们进行回归所需要的一切。

X = ser.index
X = np.reshape(X, (len(X), 1))
y = ser.valuesmodel = LinearRegression()
model.fit(X, y)
trend = model.predict(X)plt.plot(y)
plt.plot(trend)
plt.legend(['data', 'trend'])
plt.show()

image.png

看起来很合适,但可能不是很合适。让我们从数据中减去趋势,看看非趋势数据是什么样的:

detr = [y[i] - trend[i] for i in range(0, len(y))]
plt.plot(detr)
plt.title('data detrended in a linear fashion')
plt.show()

image.png

不是很令人信服。数据中仍有一个凹的趋势。最初的趋势可能不是线性的。

让我们计算数据和我们提取的趋势之间的RMSE和R²。

r2 = r2_score(y, trend)
rmse = np.sqrt(mean_squared_error(y, trend))
print('r2:', r2)
print('rmse', rmse)
r2: 0.8782399672701933
rmse 553.6078593008505
目录
相关文章
|
1月前
|
机器学习/深度学习 数据挖掘 Python
时序数据的分类及质心的计算
时序数据的分类及质心的计算
【分布鲁棒】多源动态最优潮流的分布鲁棒优化方法
【分布鲁棒】多源动态最优潮流的分布鲁棒优化方法
|
1月前
R语言中固定与随机效应Meta分析 - 效率和置信区间覆盖
R语言中固定与随机效应Meta分析 - 效率和置信区间覆盖
|
1月前
|
机器学习/深度学习 监控 自动驾驶
新视频分析技术TDViT发布:提升稠密视频分析效率
【2月更文挑战第16天】新视频分析技术TDViT发布:提升稠密视频分析效率
43 1
新视频分析技术TDViT发布:提升稠密视频分析效率
|
1月前
|
数据可视化 测试技术
R语言线性混合效应模型(固定效应&随机效应)和交互可视化3案例
R语言线性混合效应模型(固定效应&随机效应)和交互可视化3案例
|
1月前
R语言估计多元标记的潜过程混合效应模型(lcmm)分析心理测试的认知过程
R语言估计多元标记的潜过程混合效应模型(lcmm)分析心理测试的认知过程
|
10月前
|
算法
基于有序模式的度量对多变量时间序列进行非线性分析研究(Matlab代码实现)
基于有序模式的度量对多变量时间序列进行非线性分析研究(Matlab代码实现)
|
8月前
|
数据可视化 数据挖掘
R实战 | 置换多元方差分析(以PCoA的PERMANOVA分析为例)
R实战 | 置换多元方差分析(以PCoA的PERMANOVA分析为例)
381 0
|
10月前
|
存储 数据可视化 数据挖掘
知识点丨重测序数据进行kinship亲缘关系分析、构建IBS矩阵的方法与介绍
知识点丨重测序数据进行kinship亲缘关系分析、构建IBS矩阵的方法与介绍
知识点丨重测序数据进行kinship亲缘关系分析、构建IBS矩阵的方法与介绍
|
算法 Go
差异分析|DESeq2完成配对样本的差异分析
差异分析|DESeq2完成配对样本的差异分析
348 0
差异分析|DESeq2完成配对样本的差异分析