def GM11(x0): # 自定义灰色预测函数 import numpy as np # 1-AGO序列 x1 = x0.cumsum() # 紧邻均值(MEAN)生成序列 z1 = (x1[:len(x1)-1] + x1[1:])/2.0 z1 = z1.reshape((len(z1),1)) #将数组 z1 进行形状重塑,使其变为一个列向量。 #z1.reshape((len(z1),1)) 将 z1 数组的形状从 (n,) 改变为 (n, 1),其中 n 是 z1 的长度。 # 构建B矩阵 B = np.append(-z1, np.ones_like(z1), axis = 1) # 构建Yn向量 Yn = x0[1:].reshape((len(x0)-1, 1)) #将数组 x0 的第一个元素之后的部分(即 x0[1:])重新进行形状变换,变为一个由 (len(x0)-1) 行、1 列组成的新数组 # 计算参数a和b [[a],[b]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Yn) # 还原值函数 f = lambda k: (x0[0]-b/a)*np.exp(-a*(k-1)) - (x0[0]-b/a)*np.exp(-a*(k-2)) #ambda 是一个在编程中常用的关键字,用于创建匿名函数 # 计算残差 delta = np.abs(x0 - np.array([f(i) for i in range(1,len(x0)+1)])) # 方差比和小残差概率 C = delta.std()/x0.std() P = 1.0*(np.abs(delta - delta.mean()) < 0.6745*x0.std()).sum()/len(x0) # 返回结果:灰色预测函数、参数a、参数b、首项、方差比、小残差概率 return f, a, b, x0[0], C, P
时间: 2024-04-20 18:24:47 浏览: 82
这是一个自定义的灰色预测函数GM11,它使用了numpy库来进行数值计算。
函数接受一个一维数组x0作为输入,表示待预测的时间序列数据。函数的目标是通过灰色预测模型来预测时间序列的未来值。
下面是函数的具体步骤:
1. 将输入数组进行一次累加,得到紧邻均值生成序列x1。
2. 根据x1生成紧邻均值序列z1,用于构建B矩阵。
3. 构建B矩阵,其中第一列为-z1,第二列为全为1的与z1相同形状的数组。
4. 构建Yn向量,将x0的第二个元素开始的部分重新进行形状变换。
5. 使用最小二乘法计算参数a和b,其中a和b是使得误差最小的系数。
6. 定义一个还原值函数f,用于计算预测值。
7. 计算残差delta,即预测值与实际值之间的差的绝对值。
8. 计算方差比C,表示残差的标准差与输入数组标准差的比值。
9. 计算小残差概率P,表示残差值小于一定阈值的概率。
10. 返回结果:灰色预测函数f、参数a、参数b、首项值、方差比C、小残差概率P。
通过调用这个函数,你可以得到灰色预测函数及相关参数,进而进行时间序列的预测和评估。
阅读全文