预测模型
1、灰色预测
适用范围:它是一种基于小样本数据进行预测的模型。灰色系统理论它主要针对时间序列少、统计数据少、信息不完全的分析和建模。
灰色系统:我们将信息完全未确定的系统为黑色系统,信息完全确定的为白色系统,既有已知信息又有未知信息的为灰色系统
灰色系统是对离散序列建立的微分方程,它通过对原始数据的整理来寻求其变化规律,也就是灰色序列的生产。
灰色生成:累加生成、累减生成、均值生成、级比生成
1数据检验
计算数列的级比,所有级比都落在可覆盖区间(e-2/n+1,e2/n+1)内,则可以建立GM(1,1)模型
2构建模型
生成x1的邻值生成序列z1,定义模型为:
d(k)+az1(k)=b
(a为发展系数,z1(k)为白化背景值,b为灰作用量)
1.1预测检验
残差检验:
s(k)=x0(k)-x^0(k)/x0(k)
所有的|s(k)|<0.1,认为达到较高的要求,
|s(k)|<0.2认为达到一般要求
级比偏差值检验:
p(k)=1-(1-0.5a)/(1+0.5a)*s(k)/s^(k)
|p(k)|<0.1认为达到较高要求
|p(k)|<0.2认为达到一般要求
2、马尔可夫链
状态空间从一个状态到另一个状态转换的随机过程。它必须满足两个条件:
1 任意时刻可以用有限个可能状态之一描述
2 无后效性
状态向量:x=(x1,x2,x3,…xk)
各个元素分别表示第几次观测时第i个状态的概率
系统的可能状态为k个
p 转移概率矩阵
x(n+1)=x(0)P(n)
3、线性回归
线性回归在因变量和一个或多个自变量之间建立一种关系 a为截距,b表示斜率,然后衡量自变量与因变量的相关程度 较多适用于数据多、计算简单。
其表达形式为:y=w’x+e.其中e为误差服从均值为0的正态分布
最小二乘法:以残差平方和最小确定直线的位置
调用python的sklearn可以实现线性回归算法,训练模型,从而求出截距和斜率
//灰色预测
import numpy as np
import pandas as pd
def ratio(x0):
n=len(x0)
ratio=[x0[i]/x0[i+1] for i in range(n-1)]
print(f"级比:{ratio}")
min_r=min(ratio)
max_r=max(ratio)
r=[np.exp(-2/(n+2)),np.exp(2/(n+2))]
print(r)
if min_r >= r[0] and max_r <= r[1]:
print("级比满足要求")
else:
print("级比超过灰色模型预测范围")
return ratio,r
def predict(x0