当前位置: 首页 > news >正文

wordpress 仿站命令媒体营销

wordpress 仿站命令,媒体营销,青岛网站建设在哪,网站定位时间序列在回归预测的领域的重要性,不言而喻,在数学建模中使用及其频繁,但是你真的了解ARIMA、AR、MA么?ACF图你会看么?? 时间序列数据如何构造???,我打过不少…
  • 时间序列在回归预测的领域的重要性,不言而喻,在数学建模中使用及其频繁,但是你真的了解ARIMA、AR、MA么?ACF图你会看么?? 时间序列数据如何构造???,我打过不少数学建模,但是都没有弄得很清楚;
  • 这篇将详细讲解了基础模型—AR的原理.

文章目录

  • 1、自回归(AR)详解
    • 1、简要说明
    • 2、原理讲解
    • 3、ACF图
  • 2、案例
    • 1、数据预处理
      • 1、导入库
      • 2、读取数据且预处理
    • 2、实现自回归模型
    • 3、模型预测
    • 4、数据分析和可视化
      • 1、原始数据时间序列图
      • 2、训练集和测试集的预测结构对比图
      • 3、残差分析
      • 4、正相关(ACF)
    • 5、结果分析

1、自回归(AR)详解

1、简要说明

  • 什么是自回归??

自回归:通过过去的数据预测当下的数据,是一个时间序列的基础模型,但是很有效,能够有效的捕捉数据随着时间的变化趋势。

  • 举例解释:

在日常生活中,我们知道一般情况下,当下的气温和前几天的温度是有关系的,比如说这3天很热,明天大概率也会很热,自回归(AR)就是这样的模型,通过前几天的气温预测今天的气温,如:

  1. 今天:20度,记为a,前天:18度,记为b,大前天:22度,记为c,需要预测明天的气温
  2. 明天气温 = k1 * a + k2 * b + k3* c + 随机误差, k1 、 k2 、k3 是权重,这个可以通过计算得出。

2、原理讲解

自回归公式(很像多元线性回归):

y t = c + ϕ 1 y t − 1 + ϕ 2 y t − 2 + ⋯ + ϕ p y t − p + ϵ t y_t=c+\phi_1y_{t-1}+\phi_2y_{t-2}+\cdots+\phi_py_{t-p}+\epsilon_t yt=c+ϕ1yt1+ϕ2yt2++ϕpytp+ϵt

  • ϕ p \phi_p ϕp这是自回归系数,表示当下p个时间点的数据对要预测的yt 这个时间点的重要程度;
  • c:常数项,就如我们一元回归方差,y = ax + b中的那个b
  • ϵ t \epsilon_t ϵt:误差项,用来随机生成数据,模拟波动,让预测效果更加贴近实际;
  • p:滞后阶数,表示用前p个数来预测当前的数据。

通过自回归公式,我当时一眼一看,这不就是多元线性回归么?实际也确实是,只是他添加类误差项而已,实际求解的时候,也是通过最小二乘回归求解系数的。

下面是一个用自回归去探究气温的一组案例,需要关注点有两个如下:

  • 怎么构造时间数据???
  • 怎么利用最小二乘回归去求解系数???

3、ACF图

通过查看数的ACF图,在不同用领域有不同的用处,如下:

  • 白噪声过程:时间序列是随机的,没有可预测的结构,即数据之间没有关系。
  • 模型拟合良好:模型已经很好地捕捉了数据中的所有相关信息,残差是随机的。
  • 数据本身没有自相关性:数据中的每个观测值都是独立的没有时间上的依赖关系。
  • 数据预处理的影响:预处理有效地去除了数据中的自相关性

2、案例

数据:该数据描述的是这几百年的地球平均气温,下载地址:kaggle;

目的:大陆平均气温数据的探究,更加理解AR原理以及数学公式。

1、数据预处理

1、导入库

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
from sklearn.model_selection import train_test_split

2、读取数据且预处理

data_df = pd.read_csv('GlobalTemperatures.csv')
data_df
dtLandAverageTemperatureLandAverageTemperatureUncertaintyLandMaxTemperatureLandMaxTemperatureUncertaintyLandMinTemperatureLandMinTemperatureUncertaintyLandAndOceanAverageTemperatureLandAndOceanAverageTemperatureUncertainty
01750-01-013.0343.574NaNNaNNaNNaNNaNNaN
11750-02-013.0833.702NaNNaNNaNNaNNaNNaN
21750-03-015.6263.076NaNNaNNaNNaNNaNNaN
31750-04-018.4902.451NaNNaNNaNNaNNaNNaN
41750-05-0111.5732.072NaNNaNNaNNaNNaNNaN
..............................
31872015-08-0114.7550.07220.6990.1109.0050.17017.5890.057
31882015-09-0112.9990.07918.8450.0887.1990.22917.0490.058
31892015-10-0110.8010.10216.4500.0595.2320.11516.2900.062
31902015-11-017.4330.11912.8920.0932.1570.10615.2520.063
31912015-12-015.5180.10010.7250.1540.2870.09914.7740.062

3192 rows × 9 columns

# 只保留日期和LanAverageTemperatrue
data_df = data_df[['dt', 'LandAverageTemperature']]
# 查看数据信息
data_df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3192 entries, 0 to 3191
Data columns (total 2 columns):#   Column                  Non-Null Count  Dtype  
---  ------                  --------------  -----  0   dt                      3192 non-null   object 1   LandAverageTemperature  3180 non-null   float64
dtypes: float64(1), object(1)
memory usage: 50.0+ KB
# 缺失值较少,采用前置填充方法
data_df = data_df.fillna(method='ffill')
# 时间转化为datatime格式
data_df['dt'] = pd.to_datetime(data_df['dt'])
# 按照日期排序,确保日期按照顺序
data_df = data_df.sort_values(by='dt')
# 设置日期索引,方便快速查询
data_df.set_index('dt', inplace=True)# 为了更方便后面展示,这里选取最近1000条数据,全部展示,后面绘图,全都堆到一起
data_df = data_df.tail(1000)

2、实现自回归模型

# 深刻理解代码
def create_lagged_features(data, lag):x = []y = []for i in range(lag, len(data)):x.append(data[i - lag : i])y.append(data[i])return np.array(x), np.array(y)
# 使用 5 阶(联系数学公式) 自回归模型
lag = 5
# 提取特征值,目标值(也就是自变量,因变量)
all_temperature_data = data_df['LandAverageTemperature'].values
# 获取自变量、因变量
X, Y = create_lagged_features(all_temperature_data, lag)
# 分割数据集
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=42)

在实际应用中,我们通常会先添加常数项,然后再计算回归系数,因为这样可以保证模型能够捕捉到数据的全局趋势。

# 使用最小二乘法拟合 自回归 模型
def fit_regresiion(x_train, y_train):# 添加常数项, b(结合公式),添加一项,为了适应维度x_train = np.c_[np.ones(x_train.shape[0]), x_train]# 计算回归系数,结合公式 np.linalg.inv 求逆beta = np.linalg.inv(x_train.T @ x_train) @ x_train.T @ y_trainreturn beta
# 拟合,得到回归系数
beta = fit_regresiion(x_train, y_train)
beta

输出:

array([ 5.07449781, -0.04255702, -0.22825367, -0.2961153 ,  0.06135681,0.93721175])

3、模型预测

def predict_ar_model(x, beta):# 添加常数项x = np.c_[np.ones(x.shape[0]), x]  # 添加常数项# 预测y_pred = x @ beta   # 自己相乘,结合公式return y_pred# 测试集、训练集测试
y_pred_train = predict_ar_model(x_train, beta)
y_predict_test = predict_ar_model(x_test, beta)

4、数据分析和可视化

1、原始数据时间序列图

plt.figure(figsize=(10, 6))
plt.plot(data_df.index, data_df['LandAverageTemperature'], color='orange', label='Temperature')
plt.title('Global Land Average Temperature Over Time')
plt.xlabel('Year')
plt.ylabel('Temperature')
plt.legend()
plt.grid(True)
plt.show()


在这里插入图片描述

2、训练集和测试集的预测结构对比图

plt.figure(figsize=(10, 6))
plt.plot(y_train, label='Actual Train', color='blue')
plt.plot(y_pred_train, label='Predicr Train', color='red', linestyle='dashed')
plt.title('AR Model')
plt.xlabel('Time')
plt.ylabel('Temperature')
plt.grid(True)
plt.show()plt.figure(figsize=(10, 6))
plt.plot(y_test, label='Actual Test', color='blue')
plt.plot(y_predict_test, label='Predicr Test', color='red', linestyle='dashed')
plt.title('AR Model')
plt.xlabel('Time')
plt.ylabel('Temperature')
plt.grid(True)
plt.show()


在这里插入图片描述

在这里插入图片描述

3、残差分析

残差图分析误差

residual = y_test - y_predict_test   # 残差计算
plt.figure(figsize=(10, 6))
plt.plot(residual, color='green', label='Residual')
plt.title('Residual of AR on Test Data')
plt.xlabel('Time')
plt.ylabel('Residual')
plt.legend()
plt.grid(True)
plt.show()


在这里插入图片描述

4、正相关(ACF)

检查残差的自相关性,查看是存在未捕捉时间特征

from statsmodels.graphics.tsaplots import plot_acfplt.figure(figsize=(10, 6))
plot_acf(residual, lags=50)   # 展示前50个滞后
plt.title('ACF OF RESIDUAL')
plt.grid(True)
plt.show()
<Figure size 1000x600 with 0 Axes>

在这里插入图片描述

  • 默认置信区间,显著性水平是5%
  • acf图中,值接近为0,几乎全在置信区间内,说明残差数据之间没有关系,残差是随机的,模型有效的捕捉到了时间特征

5、结果分析

from sklearn.metrics import mean_squared_error, r2_scoremse = mean_squared_error(y_test, y_predict_test)
r2 = r2_score(y_test, y_predict_test)print('mse: ', mse)
print('r2', r2)
mse:  0.19718326089184698
r2 0.9889418324562267
  • 综上说明模型有效挖掘了天气的规律
http://www.dinnco.com/news/68383.html

相关文章:

  • web前端工程师薪资seo 视频
  • 郑州快速建站价格搜索关键词是什么意思
  • 马鞍山市建设银行网站网站注册流程
  • 合肥seo关键词排名国外seo工具
  • 怎么做网站寄生虫广州排名推广
  • 如何用个人电脑做网站武汉软件测试培训机构排名
  • 哪个网站可以接任务做兼职高端网站建设南宁
  • 汽车之家这样的网站怎么做地推网app推广平台
  • 网站第三方微信登陆怎么做的软文标题和内容
  • 有没有专业做网站的白云区新闻
  • 网站建设色调的企业高管培训课程有哪些
  • 微信网站开发报价表百度有哪些产品
  • 推广普通话宣传内容北京seo培训
  • 南宁哪个公司做网站好搜索引擎优化培训
  • 网站建设前期准备方案北海seo快速排名
  • 北京移动端网站今日财经最新消息
  • 延边网站开发depawo最近一周新闻大事摘抄2022年
  • 温州网站 公司软文推广去哪个平台好
  • 济宁软件开发网站建设网站批量查询
  • wordpress 站内资讯口碑营销成功案例
  • 桌子上做嗯啊干爹网站北京网站优化合作
  • 深圳网站制作07551760关键词排名查询
  • wordpress 国内视频网站石家庄关键词优化平台
  • 做照片书的网站好百度指数移动版
  • 网站上线稳定后工作网站推广的渠道有
  • 新网站怎么做谷歌推广呢站长工具5g
  • 一个人做两个博客网站线上推广100种方式
  • 空间租用网站模板怎么推广游戏代理赚钱
  • 网站建设维护培训seo网站推广是什么
  • 今天的西安今日头条seo外包公司需要什么