精华内容
下载资源
问答
  • 区间预测模型 (IPM) 提供了影响随机过程的不确定性的区间值表征。 由于情景理论,优化预测器的可靠性(未来样本将落在预测范围之外的概率)正式有界
  • 针对振荡幅度大的小样本振荡序列预测问题, 构建灰色区间预测模型. 首先对原始序列的上下界序列直接建立非等间隔GM(1,1)模型, 得到取值包络带的上下包络曲线以描述系统发展的边界; 然后给出原始序列区间预测值和基本...
  • 区间预测控制

    2015-02-03 14:06:16
    区间预测控制原代码,希望可以帮到大家 有约束无约束 主程序
  • 粒化后的窗口内历史数据包含功率变化值的最小值、最大值和平均值,形成了新的训练集,进一步对训练集采用极端学习机算法进行训练与预测,实现了光伏发电功率的区间预测。以某地区的光伏发电功率历史数据为算例进行了...
  • 传统的交通流短期预测方法以点预测为主,文中提出了基于多断面相关性的区间预测方法。多断面相关性预测是指把两个或者两个以上相邻点看作一个整体考虑,也将考虑被看作一个整体的相邻点的断面交通流的变化规律和各种...
  • 风电功率区间预测是预测给定置信水平下风电功率的上限和下限,可以反映风电功率的变化范围,为调度提供有效的辅助信息。考虑风电功率的混沌特性,提出了基于改进混沌时间序列的风电功率区间预测方法。由于风电功率...
  • 预测区间可有效量化由不确定因素引起的油中溶解气体浓度波动,应用比例系数法和粒子群优化算法建立了一定置信水平下油中溶解气体浓度的区间预测模型,且不受传统区间预测方法中必须服从正态分布的限制。实例结果验证...
  • 针对行程时间点预测不能描述预测结果的可信度问题,以高速公路收费系统作为基础数据源,提出基于Bootstrap的高速公路行程时间区间预测模型,通过范围概率(PICP)、预测区间平均宽度(MPIW)以及综合指标(CWC)反映区间预测...
  • 智能电网的快速发展给电网运行带来了新的挑战, 为适应智能电网快速响应的要求, 实现对电力负荷未来运行趋势的快速估计, 本文提出一种基于LSSVM模型的超短期电力负荷区间预测方法, 所提方法在点预测的基础上, 通过对...
  • 基于广义回归神经网络的Bootstrap滑坡位移区间预测
  • 针对高风险背景下的混沌时间序列区间预测问题,首次将回声状态网络与一致性预测框架相结合,提出基于两者的混沌时间序列区间预测算法.该算法将回声状态网络的拟合能力与一致性预测区间的可靠性相结合,使得最终的预测...
  • 提出了区间邻近点的概念,它在有效防止伪邻近点产生的同时也建立起了一个邻近点列表,可以方便地从该列表中找出某一状态的邻近点集合,并给出了混沌时间序列的一种局域区间预测方法。该方法避免了经典局域预测法中每...
  • 针对该问题,建立基于变分模态分解(VMD)和蝙蝠算法-相关向量机(BA-RVM)的短期风速区间预测模型。对原始风速序列进行变分模态分解获得多个子序列;采用样本熵(SE)算法对子序列进行重组得到3类具有典型特性的分量;对...
  • 论文研究-约束条件下滚动区间预测控制器鲁棒性能分析.pdf, 分析了带约束条件的滚动区间预测控制器鲁棒性能.将控制受到的扰动分成两类——增益扰动和附加扰动,针对这两...
  • 基于T-S混沌模糊神经网络的电力负荷区间预测方法 ,何耀耀,,针对传统T-S模糊神经网络在预测电力负荷序列时存在较大误差的缺陷,将Chebyshev混沌映射引入到T-S模糊模型之中,利用混沌映射在(-1,1�
  • 电气论文实现:电力负荷区间预测(python实现 。机器学习)

    个人电气博文目录链接:
    学好电气全靠它,个人电气博文目录(持续更新中…)

    代码图

    效果图

    论文解锁,是解锁这个专栏。可以看这个专栏的所有文章。

    讲解

        本文:简单写的模型(未对数据进行降噪,降噪可以看我的小波分解博客。未对区间预测效果进行度量。自己写个公式就可以度量好坏。【测试集中真实值落在区间内的个数百分比以及上下限的距离。通常距离越小、落在区间内的个数越多则越好。】。主要是我懒,懒得写哪些,本文的核心是讲解区间预测。
    小波降噪与重构例子 python
        使用语言:python
        用到的库:numpy,pandas,matplotlib,sklearn

    一 原始数据
        数据集链接:电力负荷预测数据集.7z
        负荷数据
        文件名:zhenjiang_power.csv
        第一列 :用户名; 第二列 :时间;第三列:用电量

        天气数据
        文件名:yangzhong.csv
        第一列 :时间; 第二列 :温度最大值;第三列:温度最小值;第四五六列:天气文字表述。

    二 个体用户负荷数据绘图
        抽取2户用户绘制

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from pylab import *
    import matplotlib; matplotlib.use('TkAgg')
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    mpl.rcParams['axes.unicode_minus'] = False
    data_1 = pd.read_csv('zhenjiang_power.csv')  # 读取负荷
    data_1.loc['record_date']=pd.to_datetime(data_1['record_date'])#将record_date转换为时间格式
    
    
    yonghu1=data_1[data_1['user_id']==1]
    #绘图
    yonghu1.plot(x='record_date', y='power_consumption')#这一行绘图
    plt.xlabel('时间')
    plt.ylabel('用电量kWh')
    plt.title('用户1的用电量')
    plt.show()
    
    
    yonghu2=data_1[data_1['user_id']==1454]
    #绘图
    yonghu1.plot(x='record_date', y='power_consumption')#这一行绘图
    plt.xlabel('时间')
    plt.ylabel('用电量kWh')
    plt.title('用户1454的用电量')
    plt.show()
    

    三 特征构造
    将各用户用电曲线求和得到地区总的用电曲线,然后进行特征构造。具体如下:

    • 1对天气数据进行处理(对其中的天气文字信息进行one_hot独热编码)
    • 2添加星期几、一个月当中的第几天(月初还是月末添加上半月和下半月)、周末特征、添加一个月4周的信息(第几周)、添加上中下旬(第几旬)、、充法定节假日(国庆节)
    • 3添加前三天负荷
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    import numpy as np
    import pandas as pd
    
    #数据构造
    def total():
    
        data_1 = pd.read_csv('zhenjiang_power.csv')#读取负荷
        data_2 = pd.read_csv('yangzhong.csv', header=None)#读取天气数据
        data_2.columns = ['record_date', 't_max', 't_min', 'weather_type', 'wind_direction',
                          'wind_leve']  # [730 rows x 6 columns]
        data_2.loc[:, 'record_date'] = pd.to_datetime(data_2['record_date'])
        data_2 = data_2[data_2.record_date < '2016-09-01'] # 天气只取2016-09-01  shape(609, 6)
        temp2 = pd.get_dummies(data_2)  # [670 rows x 131 columns] #对天气数据中的文本进行onehot 化
    
        data_1.loc[:, 'record_date'] = pd.to_datetime(data_1['record_date'])#将record_date转换为时间格式
        # 以日期为分组,对每个企业用电量求和
        data_1= data_1[['record_date', 'power_consumption']].groupby('record_date').agg('sum')#得到的数据维度(609, 1)
    
        #拼接负荷和天气数据
        total_df = pd.merge(data_1, temp2, on=['record_date'], how='left')  # [609 rows x 132 columns]
    
       ### 构造时间特征
        # 构造一些强时间指代特征:
        # *星期几
        # *一个月当中的第几天(月初还是月末)
        # *一年当中的第几天(季节信息)
        # *一年当中的第几个月(季节)、哪一年
        # 星期几
        total_df.loc[:, 'dow'] = total_df['record_date'].apply(lambda x: x.dayofweek)
        # 星期几
        total_df.loc[:, 'dow'] = total_df['record_date'].apply(lambda x: x.dayofweek)
        # 几号
        total_df.loc[:, 'dom'] = total_df['record_date'].apply(lambda x: x.day)
        # 几月
        total_df.loc[:, 'month'] = total_df['record_date'].apply(lambda x: x.month)
        # 几年
        total_df.loc[:, 'year'] = total_df['record_date'].apply(lambda x: x.year)
        #### 添加周末特征
        total_df.loc[:, 'weekend'] = 0
        total_df.loc[:, 'weekend_sat'] = 0
        total_df.loc[:, 'weekend_sun'] = 0
    
        total_df.loc[(total_df['dow'] > 4), 'weekend'] = 1
        total_df.loc[(total_df['dow'] == 5), 'weekend_sat'] = 1
        total_df.loc[(total_df['dow'] == 6), 'weekend_sun'] = 1
    
        #### 添加一个月4周的信息(第几周)
        def week_of_month(day):
            if day in range(1, 8):
                return 1
            if day in range(8, 15):
                return 2
            if day in range(15, 22):
                return 3
            else:
                return 4
        total_df.loc[:, 'week_of_month'] = total_df['dom'].apply(lambda x: week_of_month(x))
    
        #### 添加上中下旬(第几旬)
        # 
        def period_of_month(day):
            if day in range(1, 11):
                return 1
            if day in range(11, 21):
                return 2
            else:
                return 3
        total_df.loc[:, 'period_of_month'] = total_df['dom'].apply(lambda x: period_of_month(x))
    
        #### 添加上半月和下半月
        def period2_of_month(day):
            if day in range(1, 16):
                return 1
            else:
                return 2
        total_df.loc[:, 'period2_of_month'] = total_df['dom'].apply(lambda x: period2_of_month(x))
    
        #### 填充法定节假日
        total_df.loc[:, 'festival'] = 0
        total_df.loc[(total_df.month == 10) & (total_df.dom < 8), 'festival'] = 1  # [609 rows x 143 columns]
    
      # 平移
        total_df['power1'] = total_df['power_consumption'].shift(1)#将负荷往下平移1位,昨天的负荷
        total_df['power2'] = total_df['power_consumption'].shift(2)#将负荷往下平移2位,前天的负荷
        total_df['power3'] = total_df['power_consumption'].shift(3)#将负荷往下平移3位,前前天的负荷
        # 填充空值
        total_df['power1'].fillna(total_df['power_consumption'], inplace=True)#填充平移造成的空值
        total_df['power2'].fillna(total_df['power_consumption'], inplace=True)#填充平移造成的空值
        total_df['power3'].fillna(total_df['power_consumption'], inplace=True)#填充平移造成的空值
        #print(total_df) [609 rows x 146 columns]
        return total_df
    
    total_df=total()
    total_df.to_csv('total_df.csv')
    
    

    得到的数据文件
    total_df.csv

    四 绘制总的用电曲线

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from pylab import *
    import matplotlib; matplotlib.use('TkAgg')
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    mpl.rcParams['axes.unicode_minus'] = False
    data = pd.read_csv('total_df.csv')  # 读取负荷
    data.columns = data.columns.str.replace('Unnamed: 0', '序号') #给第一列赋名为序号
    del data['序号']  # 删除 序号列,这一列是多余的
    
    shuju=data[['record_date','power_consumption']] #取出时间 和用电量
    shuju.loc['record_date']=pd.to_datetime(shuju['record_date']) #将record_date列数据转换为时间格式
    
    shuju.plot(x='record_date',y='power_consumption')
    plt.ylabel('用电量kWh')
    plt.xlabel('时间')
    plt.show()
    

    五 机器学习模型区间预测
        区间预测 是给出一组预测模型(然后计算这组模型的预测概率密度函数),从而得到上下限。
        本文的预测模型分别为常规机器学习模型:

        [决策树回归、SVR回归、KNN回归、随机森林回归、Adaboost回归、GBRT回归、Bagging回归]

    import matplotlib.pyplot as plt
    from pylab import *
    import matplotlib; matplotlib.use('TkAgg')
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    mpl.rcParams['axes.unicode_minus'] = False
    import numpy as np
    import pandas as pd
    
    
    #计算相对于实际值的预测值的绝对百分误差(MAPE)
    def mape(actual,pred):
    	if (not len(actual) == len(pred) or len(actual) == 0):
    		return -1.0
    	total = 0.0
    	for x in range(len(actual)):
    		total += abs((actual[x]-pred[x])/actual[x])
    	return total/len(actual)
    
    
    data = pd.read_csv('total_df.csv')  # 读取负荷
    data.columns = data.columns.str.replace('Unnamed: 0', '序号') #给第一列赋名为序号
    del data['序号']  # 删除 序号列,这一列是多余的
    
    total_df=data.copy()
    total_df.loc[:,'record_date']=pd.to_datetime(total_df['record_date'])
    ## 分离训练集和测试集
    #将2016年7月以前的数据为训练集,2016年7月后为测试集。(取2个月为测试集
    train_x = total_df[total_df.record_date<'2016-7-01'] #[547 rows x 146 columns]
    train_y = total_df[total_df.record_date<'2016-7-01']['power_consumption']
    train_y=np.array(train_y)#(547,)
    test_x = total_df[total_df.record_date>='2016-7-01']
    test_y=total_df[total_df.record_date>='2016-7-01']['power_consumption']
    test_y=np.array(test_y)#(62,)
    # x去掉'record_date', 'power_consumption'两列
    drop_columns = ['record_date', 'power_consumption']
    train_x = train_x.drop(drop_columns, axis=1)#[547 rows x 144 columns]
    test_x = test_x.drop(drop_columns, axis=1)#[62 rows x 144 columns]
    
    
    
    ###区间预测
    
    
    ####1决策树回归####
    from sklearn import tree
    model_DecisionTreeRegressor = tree.DecisionTreeRegressor()
    
    ####2SVR回归####
    from sklearn.svm import SVR
    model_SVR=SVR(C=1.0, epsilon=0.2)
    ####3KNN回归####
    from sklearn import neighbors
    model_KNeighborsRegressor = neighbors.KNeighborsRegressor()
    
    ####4随机森林回归####
    from sklearn import ensemble
    model_RandomForestRegressor = ensemble.RandomForestRegressor(n_estimators=20)#这里使用20个决策树
    
    ####5Adaboost回归####
    from sklearn import ensemble
    model_AdaBoostRegressor = ensemble.AdaBoostRegressor(n_estimators=50)#这里使用50个决策树
    
    ####6GBRT回归####
    from sklearn import ensemble
    model_GradientBoostingRegressor = ensemble.GradientBoostingRegressor(n_estimators=100)#这里使用100个决策树
    ####7Bagging回归####
    from sklearn.ensemble import BaggingRegressor
    model_BaggingRegressor = BaggingRegressor()
    
    
    def model_reg(X_train, y_train, X_val, y_val):
        clfs = [model_DecisionTreeRegressor, model_KNeighborsRegressor, model_AdaBoostRegressor,
                model_GradientBoostingRegressor,
                model_BaggingRegressor]#model_SVR,
        losses = []
        y_predict=[]
        for clf in clfs:#遍历每一个模型
    
            clf.fit(X_train, y_train)
            y_predict_val = clf.predict(X_val)#预测
            y_predict.append(y_predict_val)
    
            losses.append(mape(y_val,y_predict_val) )#计算每棵树预测的mse误差
        return losses,y_predict
    losses_1,y_predict = model_reg(train_x, train_y, test_x, test_y)
    print('单一模型的均方误差\n',losses_1)
    y_predict=np.array(y_predict)
    y_mean=y_predict.mean(axis=0)
    y_stv=y_predict.std(axis=0)#方差
    y_mean_1=y_mean-2*y_stv#下限
    y_mean_2=y_mean+2*y_stv#上限
    
    
    
    x1=np.arange(len(test_x))
    
    
    plt.plot(test_y,marker='d',linestyle='-',linewidth=2,alpha=0.8,label='真实值')
    plt.plot(y_mean,color='r',marker='*',linestyle='--',linewidth=2,alpha=0.8,label='预测均值')
    plt.fill_between(x1 ,y_mean_1, y_mean_2, facecolor="green",alpha=.5,label='上下限(2*std时)')
    plt.xlabel('时间/day')
    plt.ylabel('用电量/kwh')
    plt.title('测试集')
    plt.legend()
    plt.show()
    
    #打印误差
    MAPE=mape(test_y,y_mean)
    print('组合模型的均方误差\n  ', MAPE)
    

        从结果图可以看出,预测上下限可以将真实值包裹起来。

        因为样本集很少,只有几百个样本,测试误差在4%左右能接受。你也可以多打印些测试集。

    在这里插入图片描述
    作者:电气-余登武。
    原创不易,禁止转载。

    展开全文
  • based criterion)4.ACE(average coverage error)5.AIS(average interval score)6.MPICD(mean PI centre deviation)二、区间预测方法综述1.Mean Variance Estimation(MVE)2.


    博主最近在入门时间序列预测的区间预测方法,网上关于区间预测方法的总结博客甚少,因此在阅读了一些论文之后,博主简单的对区间预测方法进行了总结,为的是给大家的入门提供一个参考。

    所有内容的是从我自己的总结文档中截取的
    不足之处,欢迎指正。

    前言

    传统的点预测,不能很好的处理系统运行中的不确定性,为了获得数值估计及其可靠性,实际应用对预测区间(PIs)的构造提出了很高的要求。区间预测方法的好坏要考察以下几个点:1)实施的难度;2)是否有关于数据分布的前提假设;3)计算量的大小(计算负担太大的方法无法满足实时性的要求)。本文的目的是提供一个宏观的入门参考指南,给小白的入门提供参考,如果读者是为了深入的进行预测区间的研究,在本文阅读的基础上还要进行大量的文献阅读。为了方便读者深入研究,博主在博客末尾简单的列写了一些参考文献。在方法的综述之前,我们写介绍一些预测区间的评价指标,为后面的方法综述提供基础。

    一、预测区间的评价指标

    1.PICP(PI coverage probability)

    真实值落在预测区间上下界的比率

    在这里插入图片描述

    2.PINAW(PI normalized averaged width)

    在这里插入图片描述

    3.CWC(coverage width-based criterion)

    CWC有时候也称为CLC(coverage-length-based criterion)
    在这里插入图片描述

    4.ACE(average coverage error)

    在这里插入图片描述

    5.AIS(average interval score)

    在这里插入图片描述

    6.MPICD(mean PI centre deviation)

    两个不同的PI如果都覆盖了一个点,那么这个点越接近PI的中线则说明PI的质量越好。如下图所示:
    在这里插入图片描述
    在这里插入图片描述

    二、区间预测方法综述

    1.Mean Variance Estimation(MVE)

    前提假设:误差的分布是具有非常数方差的加性高斯分布
    缺点:准确度很大程度受到与其相关的数值预测的效果影响,计算负担相对小但是对于数据方差的低估会导致预测区间对真实数据的覆盖率低。
    该方法考虑用一个NN来估计目标值的方差,然后用两个NN模型来构造预测区间。下面是MVE方法的原理图:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    2.Delta Method

    前提假设:对于每一个采样点,噪声的方差是恒定的,明显与实际是不符的。它还假设了多层前馈NNs是非线性回归模型,且能够用泰勒级数展开来线性化。
    缺点:准确度很大程度受到与其相关的数值预测的效果影响
    该方法基于NNs作为非线性模型的表示和解释,这将允许标准渐进理论应用于PI的构建。考虑如下回归式子:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3.Bayesian Method

    前提假设:NN的每个参数都是一个分布,因此该网络的输出可以被看成观察训练数据的某种条件分布。
    缺点:计算负担大,需要进行Hessian矩阵的计算,当数据规模不够大的时候,准确度很大程度依赖于先验知识。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    4.Bootstrap Method

    前提假设:假设噪声遵循零均值的正态分布
    缺点:作为一种重采样方法,要训练很多不同的NN,对大数据集来说需要很大的计算成本。集成的性能很大程度取决于单独的网络,也就是说如果一个单独的网络偏差比较大,那么整个模型的性能就会恶化。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    5.LUBE method

    LUBE方法时为了克服上述四个方法的缺点而提出的,它没有对于数据分布的假设,也避免了Jacobian矩阵和Hessian矩阵数值计算的问题。
    缺点:由于无法构建监督学习问题,LUBE方法中NNs的参数必须配合启发式的参数搜索方法来进行整定(包括NN的结构和参数),由于参数初始化没有一个特别好的方法,这大大增加了计算负担。
    LUBE的方法是用NN分别输出PI的上界和下界(注意这里是用一个NN来预测两个输出),这种方法来获得预测区间是直接的。下面是LUBE方法的原理示意图:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    总结

    本文对五种区间预测的基本方法进行了总结,并且分析其假设和优缺点,包括:MVE方法、Delta方法、Bayesian方法、Bootstrap方法和LUBE方法。并且列总结了评价预测区间好坏的几种指标。本文可以作为了解区间预测基本方法的一种入门参考指南,如果要进行深入研究,还是要阅读相关的论文。

    参考文献

    [1] J. G. Hwang & A. A. Ding. Prediction intervals for artificial neural networks. Journal of the American Statistical Association. 1997, 92(438), 748-757.
    [2] T. Heskes. Practical confidence and prediction intervals. In Advances in neural information processing systems. 1997, 176-182.
    [3] G. Tang, Y. Wu, C. Li, P. K. Wong, Z. Xiao & X. An. A Novel Wind Speed Interval Prediction based on Error Prediction Method. IEEE Transactions on Industrial Informatics. 2020, 16(11), 6806-6915.
    [4]A. Khosravi & S. Nahavandi. An optimized mean variance estimation method for uncertainty quantification of wind power forecasts. International Journal of Electrical Power & Energy Systems. 2014, 61, 446-454.
    [5] C. Lian, L. Zhu, Z. Zeng, Y. Su, W. Yao & H. Tang. Constructing prediction intervals for landslide displacement using bootstrapping random vector functional link networks selective ensemble with neural networks switched. Neurocomputing. 2018, 291, 1-10.
    [6] A. Khosravi, S. Nahavandi & D. Creighton. Construction of optimal prediction intervals for load forecasting problems. IEEE Transactions on Power Systems. 2010, 25(3), 1496-1503.
    [7] Z. Han, W. Pedrycz, J. Zhao & W. Wang. Hierarchical Granular Computing-Based Model and Its Reinforcement Structural Learning for Construction of Long-Term Prediction Intervals. IEEE Transactions on Cybernetics. 2020
    [8] C. Guan, P. B. Luh, L. D. Michel & Z. Chi. Hybrid Kalman filters for very short-term load forecasting and prediction interval estimation. IEEE Transactions on Power Systems. 2013, 28(4), 3806-3817.
    [9] C. Lian, Z. Zeng, X. Wang, W. Yao, Y. Su & H. Tang. Landslide displacement interval prediction using lower upper bound estimation method with pre-trained random vector functional link network initialization. Neural Networks. 2020, 130, 286-296.
    [10] A. Khosravi, S. Nahavandi, D. Creighton & A. F. Atiya. Lower upper bound estimation method for construction of neural network-based prediction intervals. IEEE transactions on neural networks. 2010, 22(3), 337-346.
    [11] N. A. Shrivastava, A. Khosravi & B. K. Panigrahi. Prediction interval estimation of electricity prices using PSO-tuned support vector machines. IEEE Transactions on Industrial Informatics. 2015, 11(2), 322-331.
    [12] C. Sheng, J. Zhao, W. Wang & H. Leung. Prediction intervals for a noisy nonlinear time series based on a bootstrapping reservoir computing network ensemble. IEEE Transactions on neural networks and learning systems. 2013, 24(7), 1036-1048.
    [13] C. Lian, C. P. Chen, Z. Zeng, W. Yao & H. Tang. Prediction intervals for landslide displacement based on switched neural networks. IEEE Transactions on Reliability. 2016, 65(3), 1483-1495.
    [14] H. Quan, D. Srinivasan & A. Khosravi. Short-term load and wind power forecasting using neural network-based prediction intervals. IEEE transactions on neural networks and learning systems. 2013, 25(2), 303-315.
    [15] A. Khosravi, E. Mazloumi, S. Nahavandi, D. Creighton & J. W. C. Van Lint. Prediction intervals to account for uncertainties in travel time prediction. IEEE Transactions on Intelligent Transportation Systems. 2011, 12(2), 537-547.

    展开全文
  • 传统单变量灰色预测模型的指数结构形式制约了其对小样本振荡序列的模拟与预测能力, 对此, 通过包络线将振荡序列拓展为具有明确上界与下界的区间灰数序列, 还原影响因素不确定性条件下振荡序列的区间灰数形式;...
  • Python实现区间预测

    千次阅读 2018-03-28 15:49:10
    #对于概率性的区间预测方法,在置信度一样的情况下,预测区间越窄越好 max0=np.max(data0[:, 1 ]) min0=np.min(data0[:, 1 ]) sum0= list ( map ( lambda x: (x[ 1 ]-x[ 0 ]) , zip (p_low,p_up))) sum1=np.sum...
    import scipy.stats as st
    import matplotlib.pyplot as plt
    import numpy as np
    import collections
    from sklearn.preprocessing import MinMaxScaler
    import numpy as np
    import csv
    import math
    from pylab import*
    import matplotlib.mlab as mlab
    from sklearn.utils import shuffle
    import math
    i=0
    j=[]
    data = []
    X = []
    indicess = []
    xback =24
    with open(r'D:\error01冬季雨天.csv') as f:
        reader = csv.reader(f)
        for row in reader:
              data.append(row[:])#提取出每一行中的2:14列
    data1=[]
    data = np.array(data)
    m,n=np.shape(data)
    for i in range(m):
        for j in range(n):
            #print(data[i][j])
            data[i][j] = data[i][j].astype('float64')#是从第三列开始的
    for i in range(m):
        for j in range(n):
            #print(data[i][j])
            data1.append(data[i][j])
    print("the type of data1",type(data1[1]))
    data = data.astype('float64')
    
    #print(data)
    print("the shape of data",len(data))
    
    #定义最大似然函数后的结果
    def mle(x):
        u = np.mean(x)
        thea=np.std(x)
        return u,thea
    
    #确定了分布
    print(mle(data))
    u,thea=mle(data)
    print(u)
    print(thea)
    y = st.norm.pdf(data[:6],u,thea)
    print(y)
    count, bins, ignored =plt.hist(data,bins=20,normed=False)
    print("count",len(count))
    print("bins",len(bins))
    plt.plot(bins[:20],count,"r")
    pro=count/np.sum(count)
    plt.xlabel("x")
    plt.ylabel("probability density")
    plt.show()
    
    plt.plot(bins[:20],pro,"r",lw=2)
    plt.show()
    low=-1.65*thea+u  #对应90%的置信度
    up=1.65*thea+u
    data0=[]
    print("下界为",low)
    print("上界为:",up)
    
    with open(r'D:\真实值冬季雨天.csv') as f:
        reader = csv.reader(f)
        for row in reader:
    
                data0.append(row[:])  # 提取出每一行中的2:14列
    data01=[]
    data0 = np.array(data0)
    #print(data0)
    m,n=np.shape(data0)
    print("the shape of data0",np.shape(data0))
    for i in range(m):
        for j in range(n):
            #print(data0[i][j])
            data0[i][j] = data0[i][j].astype('float64')#是从第三列开始的
    for i in range(m):
        for j in range(n):
            #print(data[i][j])
            data01.append(data0[i][j])
    #print("the type of data1",type(data1[1]))
    data0 = data0.astype('float64')
    data01=map(eval, data01)
    print(np.shape(data0))
    print(data0[:4])
    print(data0[:2,0])
    datamax=np.max(data0[:,0])
    datamax=np.max(data0[:,0])
    p_low = list(map(lambda x: (x-abs(low)*datamax) , data0[:,0]))
    p_up = list(map(lambda x: (x+up *datamax), data0[:,1]))
    x=[i for i in range(len(p_low))]
    print(x)
    #显示置信区间范围
    l=90
    k=0
    plt.plot(x[k:l],p_low[k:l], 'g', lw=2, label='下界曲线')
    plt.plot(x[k:l],p_up[k:l], 'g', lw=2, label='上界曲线')
    plt.plot(x[k:l],data0[k:l,0], 'b', lw=2, label='真实值')
    plt.plot(data0[k:l,1], 'r', lw=2, label='预测值')
    plt.fill_between(x[k:l],p_low[k:l],p_up[k:l],color="c",alpha=0.1)
    plt.title('置信区间', fontsize=18)  # 表的名称
    plt.legend(loc=0, numpoints=1)
    leg = plt.gca().get_legend()
    ltext = leg.get_texts()
    plt.setp(ltext, fontsize='small')
    # 负责绘制与图或轴相关的数据
    #savefig('D:/十折交叉验证/LSTM1.jpg')
    plt.show()
    #评价置信区间PICP,PINAW,CWC,PICP用来评价预测区间的覆盖率,PINAW预测区间的宽带
    count=0
    
    for i in range(len(p_low)):
        if data0[i][1]>=p_low[i] and data0[i][1]<=p_up[i]:
            count=count+1
    
    PICP = count/len(p_low)
    print("PICP",PICP)
    
    #对于概率性的区间预测方法,在置信度一样的情况下,预测区间越窄越好
    max0=np.max(data0[:,1])
    min0=np.min(data0[:,1])
    sum0=list(map(lambda x: (x[1]-x[0]) , zip(p_low,p_up)))
    sum1=np.sum(sum0)/len(sum0)
    PINAW = 1/(max0-min0)*sum1
    print("PINAW",PINAW)
    #综合指标的评价cwcCWC = PINAW*(1+R(PICP)*np.exp(-y(PICP-U)))
    g=90#取值在50-100
    e0=math.exp(-g*(PICP-u))
    if PICP>=u:
        r=0
    else:
        r=1
    CWC=PINAW*(1+r*PICP*e0)
    print("CWC",CWC)
    展开全文
  • 间隔预测器模型 间隔预测器模型(IPM)提供了影响过程的不确定性的间隔值表征。 该存储库提供了一个matlab类,以优化定义IPM的边界函数。 优化的预测变量的可靠性(未来样本将超出预测范围的可能性)由于情景理论而...
  • bootstrap 是一种通过独立地以相等的概率(蒙特卡罗重采样)重新采样单个数据集来估计统计量可变性的方法。 允许估计潜在分布未知或样本量较小的度量。 他们的结果与这些分析方法的统计特性一致。...
  • 当回归方程中的两个变量是随机的并且存在误差,即不受研究者控制时,应使用模型II 回归。 当变量都包含误差时,使用普通最小二乘法的模型 I 回归低估了变量之间线性关系的斜率。 根据 Sokal 和 Rohlf (1995) 的说法...
  • 论文资源,粒子群优化神经网络的预测模型。
  • %let pre = 70; data pre; height = ⪯ run; data class; set sashelp.class(keep=weight height) pre; run; proc reg data=class; model weight = height /cli; run; quit;
    %let pre = 70;
    
    data pre;
        height = &pre;
    run;
    
    data class;
      set sashelp.class(keep=weight height) pre;
    run;
    
    proc reg data=class;
    	model weight = height /cli;
    run;
    quit; 

    展开全文
  • 置信区间估计 预测区间估计Estimation implies finding the optimal parameter using historical data whereas prediction uses the data to compute the random value of the unseen data. 估计意味着使用历史数据...
  • 什么是预测区间,置信区间预测区间二者的异同是什么? Answer: 置信区间估计(confidence interval estimate):利用估计的回归方程,对于自变量 x 的一个给定值 x0 ,求出因变量 y 的平均值的估计区间预测...
  • [转] R 置信区间预测区间差别

    万次阅读 2018-07-06 08:24:00
    原文地址: https://www.cnblogs.com/100thMountain/p/5539024.htmlAsk:什么是预测区间,置信区间预测区间二者的异同是什么? Answer:置信区间估计(confidence interval estimate):利用估计的回归方程,对于自...
  • 什么是预测区间和置信区间

    千次阅读 2020-02-07 18:10:14
    什么是预测区间和置信区间 最近需要画带有置信区间的拟合图,其中在matlab的doc中搜索“Confidence and Prediction Bounds”,出现了两种置信区间。 原博客:https://www.cnblogs.com/100thMountain/p/5539024.html ...
  • 引入区间计算与区间计量方法,应用于国际原油期货价格的预测,研究结果表明:相对于经典AR-GARCH模型的置信区间预测结果,区间计量方法的预测结果具有更高的准确度与更小的预测误差。研究证实了区间计算与区间计量...
  • 链接预测的最佳价值区间

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,223
精华内容 489
关键字:

区间预测