%建立符号变量a(发展系数)和b(灰作用量)
syms a b;
c = [a b]';%原始数列 A
A = [353.12,354.39,355.61,356.45,357.1,358.83,360.82,362.61,363.73,366.7,368.38,369.55,371.14,373.28,375.8,377.52,379.8,381.9,383.79   385.6,387.43,389.9,391.65,393.85,396.52,398.65,400.83,404.24,406.55,407.11;];
n = length(A);%对原始数列 A 做累加得到数列 B
B = cumsum(A);%对数列 B 做紧邻均值生成
for i = 2:nC(i) = (B(i) + B(i - 1))/2;
end
C(1) = [];%构造数据矩阵
B = [-C;ones(1,n-1)];
Y = A; Y(1) = []; Y = Y';%使用最小二乘法计算参数 a(发展系数)和b(灰作用量)
c = inv(B*B')*B*Y;
c = c';
a = c(1); b = c(2);%预测后续数据
F = []; F(1) = A(1);
for i = 2:(n+25)F(i) = (A(1)-b/a)/exp(a*(i-1))+ b/a;
end%对数列 F 累减还原,得到预测出的数据
G = []; G(1) = A(1);
for i = 2:(n+25)G(i) = F(i) - F(i-1); %得到预测出来的数据
enddisp('预测数据为:');
G%模型检验H = G(1:30);
%计算残差序列
epsilon = A - H;%法一:相对残差Q检验
%计算相对误差序列
delta = abs(epsilon./A);
%计算相对误差Q
disp('相对残差Q检验:')
Q = mean(delta)%法二:方差比C检验
disp('方差比C检验:')
C = std(epsilon, 1)/std(A, 1)%法三:小误差概率P检验
S1 = std(A, 1);
tmp = find(abs(epsilon - mean(epsilon))< 0.6745 * S1);
disp('小误差概率P检验:')
P = length(tmp)/n%绘制曲线图
t1 = 1989:2018;
t2 = 1989:2043;plot(t1, A,'ro');
hold on;
plot(t2, G, 'g-');
xlabel('年份');
ylabel('全球冰浓度年平均值/L');
legend('实际全球冰浓度年平均值','预测全球冰浓度年平均值');
title('全球冰浓度年平均值增长曲线');
grid on;

预测数据为:

G =

列 1 至 15

353.1200  351.7591  353.5883  355.4271  357.2755  359.1334  361.0010  362.8784  364.7654  366.6623  368.5691  370.4858  372.4125  374.3491  376.2959

列 16 至 30

378.2527  380.2198  382.1971  384.1846  386.1825  388.1908  390.2095  392.2387  394.2785  396.3289  398.3899  400.4617  402.5442  404.6376  406.7419

列 31 至 45

408.8571  410.9833  413.1205  415.2689  417.4284  419.5992  421.7812  423.9747  426.1795  428.3957  430.6236  432.8629  435.1140  437.3767  439.6512

列 46 至 55

441.9376  444.2358  446.5460  448.8682  451.2024  453.5488  455.9074  458.2783  460.6615  463.0571

相对残差Q检验:

Q =

0.0019

方差比C检验:

C =

0.0561

小误差概率P检验:

P =

1

#!/usr/bin/env python
# coding=utf-8
import re
import numpy as npdef summed_array(arr):a = np.zeros(arr.shape)for i in range(arr.shape[0]):s = 0for j in range(arr.shape[1]):s += arr[i, j]a[i, j] = sreturn adef gen_list(first, start, end, arr, index_delta, P, X0, *thetas):a = [first]t1, t2, t3, t4 = thetasfor k in range(start, end):s1 = s2 = 0for u in range(k - 1):for i in range(1, X0.shape[0]):s1 += t1 * t2 ** u * P[i - 1] * arr[i - index_delta, k - u]s2 = sum(t2 ** v * ((k - v + 1) * t3 + t4) for v in range(k - 1))s3 = t2 ** k * X0[0, 0]a.append(s1 + s2 + s3)return adef matlab_string_to_array(s):ss = s.strip().strip('[]').split(';')a = [[float(i) for i in re.findall(r'[-0-9.]+', j)] for j in ss]return np.array(a)def main():print("OBGM(1, N)模型:")tip0 = "请输入因变量序列(第一个分号前面部分)与自变量序列(多个自变量序列之间用分号隔开),如:[1 2 3;4 5 6]\n:"tip00 = "请输入预测时的自变量序列(多个自变量序列之间用分号隔开),如:[911 12 13]\n:"try:X0, X00 = [matlab_string_to_array(raw_input(t)) for t in (tip0, tip00)]except NameError:X0, X00 = [matlab_string_to_array(input(t)) for t in (tip0, tip00)]"""# 书上的数据X0 = [[287.6, 312.8, 350.4, 401.9, 480.9, 498.3, 520, 543.7],[19978, 21989, 24725, 26738, 29073, 32903, 36469, 40321],[3371.5, 3966.6, 3748.5, 4858.4, 5493.5, 5910.6, 6462.8, 7032.2],[1848.5, 2053.3, 2131.7, 2303.1, 2764, 3048.8, 3294.3, 3566.4],]X00 = [[43910], [7562.3], [3746.8]]X0 = np.array(X0)X00 = np.array(X00)"""epsilon = 0.5n, m = X0.shapeF = summed_array(X0)# Calculate mode parametersY = X0[0][1:].TB = np.delete(F.T[1:], 0, axis=1)Bm = [(epsilon - 1) * F[0, k] - epsilon * F[0, k + 1] for k in range(m - 1)]Li = [k + 2 for k in range(m - 1)]Co = [1] * (m - 1)for L in (Bm, Li, Co):B = np.c_[B, np.array(L).T]# Calculate b2,b3,...P = np.linalg.inv(B.T.dot(B)).dot(B.T).dot(Y)in_var_number = n - 1a, c, d = P[in_var_number: in_var_number + 3]t = 1 + epsilon * athetas = (1 / t, 1 - a / t, c / t, d / t)# Calculate SimuSimu1 = gen_list(X0[0, 0], 1, m, F, 0, P, X0, *thetas)# Calcute gXf = X0[1:]X0_F = np.c_[Xf, X00]X0_F_1 = summed_array(X0_F)Fore1 = gen_list(F[0, m - 1], m, X0_F.shape[1], X0_F_1, 1, P, X0, *thetas)Fore0 = [round(a - b, 3) for a, b in zip(Fore1[1:], Fore1[:-1])]# AA = np.zeros((n, 5))A[0, 0] = 1A[0, 1] = A[0, 2] = X0[0, 0]# mpmp = 0for k in range(1, len(X0)):A[k, 0] = k + 1A[k, 1] = X0[0, k]A[k, 2] = round(Simu1[k] - Simu1[k - 1], 3)A[k, 3] = round(A[k, 2] - A[k, 1], 3)A[k, 4] = round(100 * abs(A[k, 3]) / A[k, 1], 3)mp += 100 * abs(A[k, 3]) / A[k, 1]mp = round(mp / (len(X0) - 1), 4)print("-" * 20)print("(1)模型参数b2,b3,..,bn及a,c,d分别为:")print(np.around(P, 6))print("\n(2)误差检验表为:")print("   序号    实际数据    模拟数据    残差    相对误差(%)")print(A)print("\n(3)平均相对模拟百分误差为(%)")print(mp)print("\n(4)未来[{}]步的预测值分别为:".format(len(Fore0)))print(Fore0)if __name__ == "__main__":main()

runfile('/home/rosfun/Downloads/PyTorch-YOLOv3-master/GM.py', wdir='/home/rosfun/Downloads/PyTorch-YOLOv3-master')
OBGM(1, N)模型:
请输入因变量序列(第一个分号前面部分)与自变量序列(多个自变量序列之间用分号隔开),如:[1 2 3;4 5 6]
:>? [14.24,14.39,14.38,14.19,14.21,14.29,14.43,14.33,14.46,14.62,14.40,14.41,14.53,14.62,14.60,14.51,14.66,14.59,14.63,14.49,14.60,14.67,14.55,14.57,14.60,14.68,14.73,14.81,14.92,15.0;353.12    354.39    355.61    356.45    357.1    358.83    360.82    362.61    363.73    366.7    368.38    369.55    371.14    373.28    375.8    377.52    379.8    381.9    383.79    385.6    387.43    389.9    391.65    393.85    396.52    398.65    400.83    404.24    406.55    407.11;13.281    13.3149    13.2771    13.2418    13.2517    13.3213    13.2737    13.319    13.5334    13.3334    13.2779    13.3559    13.447    13.4413    13.452    13.4793    13.4416    13.49    13.3087    13.4371    13.575    13.4271    13.3958    13.508    13.4925    13.5685    13.7189    13.6053    13.5419    13.6738;221.6520151    222.1802287    221.2058581    219.3821231    219.6195571    219.95827    221.5673472    220.3310659    221.136813    221.7323415    219.6845982    219.3498937    220.8361833    220.7716359    222.3663721    222.0425624    222.9544563    222.3201405    223.3460201    222.1782235    222.8916138    221.7041123    222.9582143    222.0703228    221.2904285    221.0724525    221.0537916    221.1392098    221.2785377    222.0068288;11067.38245    11067.15991    11067.20213    11067.2973    11067.21165    11067.41693    11067.23402    11067.38291    11067.15333    11067.27023    11080.3715    11080.54704    11080.26253    11076.14917    11076.36529    10726.12941    9982.330009    9910.526507    10024.66611    10025.18875    10025.17692    10025.15234    9798.937467    9663.557062    9615.226197    9925.141851    10024.83751    10024.08732    10023.65689    10024.14915]
请输入预测时的自变量序列(多个自变量序列之间用分号隔开),如:[911 12 13]
:>? [408.8570584 410.983255    413.1205086    415.2688767    417.4284169    419.5991876    421.781247    423.9746538    426.1794671    428.3957462    430.6235507    432.8629406    435.113976    437.3767176    439.6512262    441.9375631    444.2357897    446.5459678    448.8681597    451.2024278    453.5488348    455.907444    458.2783187    460.6615228    463.0571204;13.61691872    13.62941986    13.64193248    13.65445659    13.66699219    13.67953931    13.69209794    13.7046681    13.71724981    13.72984306    13.74244788    13.75506426    13.76769223    13.78033179    13.79298296    13.80564574    13.81832015    13.83100619    13.84370388    13.85641323    13.86913424    13.88186693    13.89461131    13.9073674    13.92013519;222.2003166    222.2541984    222.3080933    222.3620013    222.4159223    222.4698564    222.5238036    222.5777639    222.6317373    222.6857237    222.7397233    222.7937359    222.8477616    222.9018005    222.9558524    223.0099174    223.0639956    223.1180869    223.1721913    223.2263088    223.2804394    223.3345832    223.38874    223.4429101    223.4970932;9657.134207    9603.439593    9550.043526    9496.944346    9444.140403    9391.630055    9339.41167    9287.483624    9235.844303    9184.492102    9133.425424    9082.642682    9032.142297    8981.922699    8931.982327    8882.319628    8832.933059    8783.821084    8734.982177    8686.414818    8638.117499    8590.088717    8542.326981    8494.830804    8447.598711]
--------------------
(1)模型参数b2,b3,..,bn及a,c,d分别为:
[ 1.376000e-03  5.531890e-01  5.450000e-04  6.000000e-05  2.486720e-01
 -5.069032e+00  1.255887e+01]
(2)误差检验表为:
   序号    实际数据    模拟数据    残差    相对误差(%)
[[  1.     14.24   14.24    0.      0.   ]
 [  2.     14.39   -3.149 -17.539 121.883]
 [  3.     14.38   18.21    3.83   26.634]
 [  4.     14.19   17.323   3.133  22.079]
 [  5.     14.21   16.639   2.429  17.094]]
(3)平均相对模拟百分误差为(%)
46.9225
(4)未来[25]步的预测值分别为:
[14.908, 14.966, 14.984, 15.003, 15.025, 15.048, 15.071, 15.096, 15.121, 15.147, 15.174, 15.201, 15.228, 15.255, 15.283, 15.311, 15.339, 15.368, 15.397, 15.425, 15.454, 15.484, 15.513, 15.543, 15.572]

GM(1,1)和GM(1,n)预测模型相关推荐

  1. 用python建立gm(1、1)模型_灰色预测模型GM(1,1)的全面讲解及python实现

    1. 灰色预测的概念 (1)灰色系统.白色系统和黑色系统 白色系统是指一个系统的内部特征是完全已知的,既系统信息是完全充分的. 黑色系统是一个系统的内部信息对外界来说是一无所知的,只能通过它与外界的联 ...

  2. Matlab 之灰色预测模型GM(1,1)和GM(1,n)

    1.灰色系统的定义: 灰色系统指既含有已知信息又含有未知信息的系统. 2.灰色预测模型的定义: 对灰色系统进行预测的模型. 灰色模型(Grey Model,简称GM模型)一般表达方式为GM(n,x)模 ...

  3. 代码+步骤GM(1,1)灰色预测模型-案例长江水质综合评价赛题-级比检测C的确定-matlab完整代码附送

    GM(1,1)灰色预测模型-案例长江水质综合评价赛题第三题-matlab完整代码附送 看到上一篇Blog在短短几天Pageviews就达到了1300多,看来大家还是比较中意建模上的笔记

  4. 灰色关联以及灰色预测GM(1,n),GM(1,1)模型(Python实现)

    **灰色关联以及灰色预测GM(1,n),GM(1,1)模型** 简介:本篇文章简单的介绍灰色关联以及灰色预测模型,使用python代码进行实现. 1. 灰色系统的概论 2. 关于灰色关联度那些事 3. ...

  5. Matlab灰色预测GM(1,1)和GM(2,1)对比

      灰色预测的主要特点是模型使用的不是原始数据序列,而是生成的数据序列.其核心体系是灰色模型(Grey Model,简称GM),即对原始数据作累加生成(或其它方法生成)得到近似的指数规律再进行建模的方 ...

  6. 灰色系统理论及其应用 (九) : GM(1, N) 和GM(0, N) 模型

    灰色系统理论及其应用系列博文: 灰色系统理论及其应用 (一) :灰色系统概论.关联分析.与传统统计方法的比较 灰色系统理论及其应用 (二) :优势分析 灰色系统理论及其应用 (三) :生成数 灰色系统 ...

  7. 刀剑无双服务器显示404,刀剑无双如何开启GM命令 刀剑无双GM指令修改

    关于刀剑无双GM命令和命令的使用方法,本站有文章讲过了,想了解的同学,可以用关建词"刀剑无双"搜索本站,现在来讲讲怎么开启支持GM命令. 支持GM命令有二个版本,一个是开启所有用户 ...

  8. 永恒之塔最新服务器2020,【永恒之塔5.8服务端】2020全新小结版一键端+GM方式内嵌+GM专用工具+详尽安裝构建教程...

    [永恒之塔5.8服务端]2020全新小结版一键端+GM方式内嵌+GM专用工具+详尽安裝构建教程 找了很多版本,都不记得在哪下的,但非常感谢大佬们的付出.这个版本应该是目前最完善的啦,估计大神们都去搞6 ...

  9. no.7_qzhai 开心版_开心宝贝GM版下载-开心宝贝GM版安卓下载

    开心宝贝GM版是一款经典Q萌风格的仙侠冒险ARPG手游.游戏画面精致唯美,角色刻画活灵活现,动态特效表达细致,原创的剧情故事跌宕起伏,为玩家们奉上了一场殿堂级的视听双重盛宴.Q萌仙侠世界任你探索,快来 ...

  10. 传世单机 GM命令 查看所有GM命令 自定义游戏命令

    有些人拿到单机,却不知道怎么刷装备,这里告诉你! 打开游戏主引擎界面,点击选项,点击游戏命令,即可看到所有游戏命令.也可以自定义游戏命令.

最新文章

  1. 在Windows7中与虚拟机实现远程桌面连接
  2. python最小公倍数 菜鸟_最小公倍数 golang + python
  3. (转)交换机攻击方法描述
  4. 【渝粤题库】陕西师范大学200751 《操作系统》作业
  5. chrome jsp 显示不正常_JSP程序在chrome下不兼容的问题!
  6. 如何使用webrtc 一
  7. python统计excel_Python操作excel做些统计
  8. C#语言中循环分类总结
  9. Java Web提交任务到Spark Spark通过Java Web提交任务
  10. 【知云】第十期:如何保障云上游戏安全?云盾+高防IP筑起云上安全高墙
  11. cropper使用说明
  12. \t\t[生活小妙招]脚气 脚臭 损人不利己之疾病
  13. C#本地化国际化解决方案实现简介
  14. php 查询8到10点之间的数据,一个人的命运决定于晚上8点到10点之间
  15. python操作txt找到最便宜的素菜_Python線性模型學習筆記
  16. 舵机的使用方法和一些注意事项
  17. kdj超卖_如何正确理解KDJ?
  18. 小红书SEO之关键词排名优化详解【从入门到精通】
  19. 服务器硬盘sas和sata有什么区别
  20. 计算机网络自顶向下方法笔记01

热门文章

  1. 接口技术课程设计 Lab8000实现交通灯控制系统
  2. Autoruns 使用方法
  3. tensorflow遥感图像分类_在线讲座 | 高分辨率遥感图像目标检测和场景分类研究进展...
  4. 回顾第七周上级指导的星星图
  5. java内部错误2503,内部错误2503
  6. Linux 挂载iscsi存储磁盘设备
  7. 404计算机毕业设计
  8. 教案中计算机图片的文件是,图像媒体信息教案
  9. 2021年机修钳工(中级)报名考试及机修钳工(中级)模拟考试
  10. vue点击导出按钮为撒不下载_使用vue导出excel遇到的那些坑