DDEPM实例

DDEPM预测序列代码实例

下面使用DDEPM来预测几个时间序列函数。

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
%reload_ext autoreload
%autoreload 2
class DDEPM():
    def init(self, sequence):
        if len(sequence) < 3:
            raise "the length of sequence is less than 3"
        self.x0 = sequence
        # AGO
        xi = 0
        self.x1 = []
        for i in self.x0:
            xi += i
            self.x1.append(xi)
            
        # DDE(2, 1)
        X = []
        Y = []
        for i in range(len(self.x1)-2):
            X_row = [-self.x1[i+1], -self.x1[i]]
            X.append(X_row)
            Y.append(self.x1[i+2])
        X = np.array(X)
        Y = np.array(Y).reshape(-1, 1)
        
        phi = np.linalg.pinv(X.T.dot(X)).dot(X.T).dot(Y)
        self.a = phi[0, 0]
        self.b = phi[1, 0]
        
        delta = self.a ** 2 - 4 * self.b
        if delta > 0:
            self.type = 0
            
            self.r1 = (-self.a + np.sqrt(delta)) / 2
            self.r2 = (-self.a - np.sqrt(delta)) / 2
            
            self.C1 = (self.r1 * self.x0[0] - self.x0[0] - self.x0[1]) / (self.r1 * self.r2 - self.r2 * self.r2)
            self.C2 = (self.r2 * self.x0[0] - self.x0[0] - self.x0[1]) / (self.r1 * self.r2 - self.r1 * self.r1)
        elif delta == 0:
            self.type = 1
            
            self.r1 = -self.a / 2
            self.r2 = self.r1
            
            self.C1 = (self.x0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值