婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 如何用Python進行時間序列分解和預測

如何用Python進行時間序列分解和預測

熱門標簽:遼寧智能外呼系統(tǒng)需要多少錢 qt百度地圖標注 400電話申請資格 阿里電話機器人對話 螳螂科技外呼系統(tǒng)怎么用 電銷機器人系統(tǒng)廠家鄭州 地圖地圖標注有嘆號 正安縣地圖標注app 舉辦過冬奧會的城市地圖標注

預測是一件復雜的事情,在這方面做得好的企業(yè)會在同行業(yè)中出類拔萃。時間序列預測的需求不僅存在于各類業(yè)務場景當中,而且通常需要對未來幾年甚至幾分鐘之后的時間序列進行預測。如果你正要著手進行時間序列預測,那么本文將帶你快速掌握一些必不可少的概念。

什么是時間序列?

顧名思義,時間序列是按照固定時間間隔記錄的數(shù)據(jù)集。換句話說,以時間為索引的一組數(shù)據(jù)是一個時間序列。請注意,此處的固定時間間隔(例如每小時,每天,每周,每月,每季度)是至關重要的,意味著時間單位不應改變。別把它與序列中的缺失值混為一談。我們有相應的方法來填充時間序列中的缺失值。

在開始使用時間序列數(shù)據(jù)預測未來值之前,思考一下我們需要提前多久給出預測是尤其重要的。你是否應該提前一天,一周,六個月或十年來預測(我們用“界限”來表述這個技術術語)?需要進行預測的頻率是什么?在開始預測未來值的詳細工作之前,與將要使用你的預測結(jié)果的人談一談也不失為一個好主意。

如何在Python中繪制時間序列數(shù)據(jù)?

可視化時間序列數(shù)據(jù)是數(shù)據(jù)科學家了解數(shù)據(jù)模式,時變性,異常值,離群值以及查看不同變量之間的關系所要做的第一件事。從繪圖查看中獲得的分析和見解不僅將有助于建立更好的預測,而且還將引導我們找到最合適的建模方法。這里我們將首先繪制折線圖。折線圖也許是時間序列數(shù)據(jù)可視化最通用的工具。

這里我們用到的是AirPassengers數(shù)據(jù)集。該數(shù)據(jù)集是從1949年到1960年之間的每月航空旅客人數(shù)的集合。下面是一個示例數(shù)據(jù),以便你對數(shù)據(jù)信息有個大概了解。

#Reading Time Series Data
Airpassenger = pd.read_csv("AirPassengers.csv")
Airpassenger.head(3)

現(xiàn)在,我們使用折線圖繪制數(shù)據(jù)。在下面的示例中,我們使用set_index()將date列轉(zhuǎn)換為索引。這樣就會自動在x軸上顯示時間。接下來,我們使用rcParams設置圖形大小,最后使用plot()函數(shù)繪制圖表。

Airpassenger = Airpassenger.set_index('date')
pyplot.rcParams["figure.figsize"] = (12,6)
Airpassenger.plot()
pyplot.show()

1949-1960年間,乘飛機旅行的乘客人數(shù)穩(wěn)定增長。規(guī)律性間隔的峰值表明增長似乎在有規(guī)律的時間間隔內(nèi)重復。

讓我們看看每個季度的趨勢是怎樣的。為了便于理解,從不同的維度觀察信息是個好主意。為此,我們需要使用Python中的datetime包從date變量中得出季度和年份。在進行繪圖之前,我們將連接年份和季度信息,以了解旅客數(shù)量在季節(jié)維度上如何變化。

from datetime import datetime
# Airpassenger["date"] = Airpassenger["date"].apply(lambda x: datetime.strptime(x, "%d-%m-%Y"))
Airpassenger["year"] = Airpassenger["date"].apply(lambda x: x.year)
Airpassenger["qtr"] = Airpassenger["date"].apply(lambda x: x.quarter)
Airpassenger["yearQtr"]=Airpassenger['year'].astype(str)+'_'+Airpassenger['qtr'].astype(str)
airPassengerByQtr=Airpassenger[["passengerCount", "yearQtr"]].groupby(["yearQtr"]).sum()

準備好繪制數(shù)據(jù)后,我們繪制折線圖,并確保將所有時間標簽都放到x軸。x軸的標簽數(shù)量非常多,因此我們決定將標簽旋轉(zhuǎn)呈現(xiàn)。

pyplot.rcParams["figure.figsize"] = (14,6)
pyplot.plot(airPassengerByQtr)
pyplot.xticks(airPassengerByQtr.index, rotation='vertical')

這幅圖非常有趣,它清晰地表明,在1949-1960年之間的所有年份中,航空旅客人數(shù)每季度都在顯著增加。

時間序列的要素是什么?

時間序列數(shù)據(jù)包含4個主要元素:
1.趨勢性–趨勢性表示數(shù)據(jù)隨時間增加或減少的一般趨勢。這很容易理解。例如,1949年至1960年之間航空旅客數(shù)量呈增加趨勢,或者可以說呈上升趨勢。
2.季節(jié)性–如同一年四季,數(shù)據(jù)模式出現(xiàn)在有規(guī)律的間隔之后,代表了時間序列的季節(jié)性組成部分。它們在特定的時間間隔(例如日,周,月,年等)之后重復。有時我們很容易弄清楚季節(jié)性,有時則未必。通常,我們可以繪制圖表并直觀檢驗季節(jié)性元素的存在。但是有時,我們可能不得不依靠統(tǒng)計方法來檢驗季節(jié)性。
3.周期性–可被視為類似季節(jié)性,但唯一的區(qū)別是周期性不會定期出現(xiàn)。這個屬性使得它很難被辨識。例如,地震可以在我們知道將要發(fā)生的任何時間發(fā)生,但是我們其實不知道何時何地發(fā)生。
4.隨機噪聲–不屬于上述三類情況的時間序列數(shù)據(jù)中的突然變化,而且也很難被解釋,因此被稱為隨機波動或隨機噪聲。

如何分解時間序列?

有兩種技術可以獲取時間序列要素。在進行深入研究和查看相關Python抽取函數(shù)之前,必須了解以下兩點:

  • 時間序列不必具有所有要素。
  • 弄清該時間序列是可加的還是可乘的。

那么什么是可加和可乘時間序列模型呢?

可加性模型–在可加性模型中,要素之間是累加的關系。y(t)=季節(jié)+趨勢+周期+噪音

可乘性模型–在可乘性模型中,要素之間是相乘的關系。y(t)=季節(jié)趨勢周期*噪音

你想知道為什么我們還要分解時間序列嗎?你看,分解背后的目的之一是估計季節(jié)性影響并提供經(jīng)過季節(jié)性調(diào)整的值。去除季節(jié)性的值就可以輕松查看趨勢。例如,在美國,由于農(nóng)業(yè)領域需求的增加,夏季的失業(yè)率有所下降。從經(jīng)濟學角度來講,這也意味著6月份的失業(yè)率與5月份相比有所下降。現(xiàn)在,如果你已經(jīng)知道了邏輯,這并不代表真實的情況,我們必須調(diào)整這一事實,即6月份的失業(yè)率始終低于5月份。

這里的挑戰(zhàn)在于,在現(xiàn)實世界中,時間序列可能是可加性和可乘性的組合。這意味著我們可能并不總是能夠?qū)r間序列完全分解為可加的或可乘的。

現(xiàn)在你已經(jīng)了解了不同的模型,下面讓我們研究一些提取時間序列要素的常用方法。

經(jīng)典分解法

該方法起源于1920年,是諸多方法的鼻祖。經(jīng)典分解法有兩種形式:加法和乘法。Python中的statsmodels庫中的函數(shù)season_decompose()提供了經(jīng)典分解法的實現(xiàn)。在經(jīng)典分解法中,需要你指出時間序列是可加的還是可乘的。你可以在此處(https://otexts.com/fpp2/classical-decomposition.html)了解有關加法和乘法分解的更多信息。

在下面的代碼中,要獲得時間序列的分解,只需賦值model=additive。

import numpy as np
from pandas import read_csv
import matplotlib.pyplot as plt
from statsmodels.tsa.seasonal import seasonal_decompose
from pylab import rcParams
 
elecequip = read_csv(r"C:/Users/datas/python/data/elecequip.csv")
result = seasonal_decompose(np.array(elecequip), model='multiplicative', freq=4)
 
rcParams['figure.figsize'] = 10, 5
result.plot()
pyplot.figure(figsize=(40,10))
pyplot.show()

上圖的第一行代表實際數(shù)據(jù),底部的三行顯示了三個要素。這三個要素累加之后即可以獲得原始數(shù)據(jù)。第二個樣本集代表趨勢性,第三個樣本集代表季節(jié)性。如果我們考慮完整的時間范圍,你會看到趨勢一直在變化,并且在波動。對于季節(jié)性,很明顯,在規(guī)律的時間間隔之后可以看到峰值。

如何獲得季節(jié)性調(diào)整值?

對于可加性模型,可以通過y(t)– s(t)獲得季節(jié)性調(diào)整后的值,對于乘法數(shù)據(jù),可以使用y(t)/ s(t)來調(diào)整值。

如果你正想問為什么我們需要季節(jié)性調(diào)整后的數(shù)據(jù),讓我們回顧一下剛才討論過的有關美國失業(yè)率的示例。因此,如果季節(jié)性本身不是我們的主要關注點,那么季節(jié)性調(diào)整后的數(shù)據(jù)將更有用。盡管經(jīng)典方法很常見,但由于以下原因,不太建議使用它們:

  • 該技術對異常值不可靠。
  • 它傾向于使時間序列數(shù)據(jù)中的突然上升和下降過度平滑。
  • 假設季節(jié)性因素每年只重復一次。
  • 對于前幾次和最后幾次觀察,該方法都不會產(chǎn)生趨勢周期估計。

其他可用于分解的更好方法是X11分解,SEAT分解或STL分解。現(xiàn)在,我們將看到如何在Python中生成它們。

與經(jīng)典法,X11和SEAT分解法相比,STL具有許多優(yōu)點。接下來,讓我們探討STL分解法。

STL分解法

STL代表使用局部加權回歸(Loess)進行季節(jié)性和趨勢性分解。該方法對異常值具有魯棒性,可以處理任何類型的季節(jié)性。這個特性還使其成為一種通用的分解方法。使用STL時,你控制的幾件事是:

  • 趨勢周期平滑度
  • 季節(jié)性變化率
  • 可以控制對用戶異常值或異常值的魯棒性。這樣你就可以控制離群值對季節(jié)性和趨勢性的影響。

同任何其他方法一樣,STL也有其缺點。例如,它不能自動處理日歷的變動。而且,它僅提供對可加性模型的分解。但是你可以得到乘法分解。你可以首先獲取數(shù)據(jù)日志,然后通過反向傳播要素來獲取結(jié)果。但是,這超出了本文討論的范圍。

Import pandas as pd
Import seaborn as sns
Import matplotlib.pyplot as plt
From statsmodels.tsa.seasonal import STL

elecequip =read_csv(r"C:/Users/datas/python/data/elecequip.csv")
stl = STL(elecequip, period=12, robust=True)
res_robust = stl.fit()
fig = res_robust.plot()

時間序列預測的基本方法

盡管有許多統(tǒng)計技術可用于預測時間序列數(shù)據(jù),我們這里僅介紹可用于有效的時間序列預測的最直接、最簡單的方法。這些方法還將用作其他方法的基礎。

PYTHON中的簡單移動平均(SMA)

簡單移動平均是可以用來預測的所有技術中最簡單的一種。通過取最后N個值的平均值來計算移動平均值。我們獲得的平均值被視為下一個時期的預測。

為什么使用簡單移動平均?

移動平均有助于我們快速識別數(shù)據(jù)趨勢。你可以使用移動平均值確定數(shù)據(jù)是遵循上升趨勢還是下降趨勢。它可以消除波峰波谷等不規(guī)則現(xiàn)象。這種計算移動平均值的方法稱為尾隨移動平均值。在下面的示例中,我們使用rolling()函數(shù)來獲取電氣設備銷售數(shù)據(jù)的移動平均線。

Import pandas as pd
from matplotlib import pyplot
 
elecequip = pd.read_csv(r"C:/Users/datas/python/data/elecequip.csv")
 
# Taking moving average of last 6 obs
rolling = elecequip.rolling(window=6)
rolling_mean = rolling.mean()
 
# plot the two series
pyplot.plot(elecequip)
pyplot.plot(rolling_mean, color='red')
pyplot.show()

另一種方法是“中心移動平均”。在這里將任意給定時間(t)的值計算為當前,之前和之后的平均值。啟用center = True將提供中心移動平均值。

elecequip["x"].rolling(window=3, center=True).mean()

PYTHON中的加權移動平均(WMA)

簡單移動平均非常樸素,因為它對過去的所有值給予同等的權重。但是當假設最新數(shù)據(jù)與實際值密切相關,則對最新值賦予更多權重可能更有意義。

要計算WMA,我們要做的就是將過去的每個觀察值乘以一定的權重。例如,在6周的滾動窗口中,我們可以將6個權重賦給最近值,將1個權重賦給最后一個值。

import random
rand = [random.randint(1, i) for i in range(100,110)]
data = {}
data["Sales"] = rand

df = pd.DataFrame(data)
weights = np.array([0.5, 0.25, 0.10])

sum_weights = np.sum(weights)
df['WMA']=(df['Sales']
.rolling(window=3, center=True)
.apply(lambda x: np.sum(weights*x)/sum_weights, raw=False)

)
print(df['WMA'])

PYTHON中的指數(shù)移動平均(EMA)

在“指數(shù)移動平均”中,隨著觀察值的增加,權重將按指數(shù)遞減。該方法通常是一種出色的平滑技術,可以從數(shù)據(jù)中消除很多噪聲,從而獲得更好的預測。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.api import ExponentialSmoothing
 
EMA_fit = ExponentialSmoothing(elecequip, seasonal_periods=12, trend='add', seasonal='add').fit(use_boxcox=True)
fcast3 = EMA_fit.forecast(12)
 
 
ax = elecequip.plot(figsize=(10,6), marker='o', color='black', title="Forecasts from Exponential Smoothing" )
ax.set_ylabel("Electrical Equipment")
ax.set_xlabel("Index")
 
# For plotting fitted values
# EMA_fit.fittedvalues.plot(ax=ax, style='--', color='red')

EMA_fit.forecast(12).rename('EMS Forecast').plot(ax=ax, style='--',
 marker='o', color='blue', legend=True)

該方法具有以下兩種變體:
1.簡單指數(shù)平滑–如果時間序列數(shù)據(jù)是具有恒定方差且沒有季節(jié)性的可加性模型,則可以使用簡單指數(shù)平滑來進行短期預測。
2.Holt指數(shù)平滑法–如果時間序列是趨勢增加或減少且沒有季節(jié)性的可加性模型,則可以使用Holt指數(shù)平滑法進行短期預測。

以下是從python中的statsmodels包導入兩個模型的代碼。現(xiàn)在,你可以在練習中運行上述模型。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.api import SimpleExpSmoothing, Holt

在本長篇教程中,我們講解了:

  • 什么是時間序列數(shù)據(jù)?
  • 如何可視化和更深入地識別數(shù)據(jù)模式(如果有)?
  • 介紹了可加性和可乘性時間序列模型。
  • 研究了Python中分解時間序列的不同方法。

最后,我們學習了如何在Python中運行一些非常基本的方法,例如移動平均(MA),加權移動平均(WMA),指數(shù)平滑模型(ESM)及其變體,例如SESM和Hotl。

以上就是如何用Python進行時間序列分解和預測的詳細內(nèi)容,更多關于python 時間序列分解和預測的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 利用機器學習預測房價
  • 利用keras使用神經(jīng)網(wǎng)絡預測銷量操作
  • 詳解用Python進行時間序列預測的7種方法
  • Python實現(xiàn)新型冠狀病毒傳播模型及預測代碼實例
  • Datawhale練習之二手車價格預測

標簽:昭通 信陽 興安盟 阜新 隨州 合肥 淘寶好評回訪 濟源

巨人網(wǎng)絡通訊聲明:本文標題《如何用Python進行時間序列分解和預測》,本文關鍵詞  如,何用,Python,進行,時間序列,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《如何用Python進行時間序列分解和預測》相關的同類信息!
  • 本頁收集關于如何用Python進行時間序列分解和預測的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人免费视频一区二区| 久久99深爱久久99精品| 日韩精品欧美成人高清一区二区| 粉嫩aⅴ一区二区三区四区| 亚洲日本一区二区三区| 在线观看成人小视频| 亚洲精品日日夜夜| 国产婷婷色一区二区三区四区| av电影在线不卡| 韩国三级在线一区| 日本va欧美va瓶| 久久久精品中文字幕麻豆发布| 欧美日本免费一区二区三区| 成人免费视频视频在线观看免费 | 国产精品网友自拍| 国产欧美一区二区精品忘忧草| 日韩一级在线观看| 欧美二区乱c少妇| 欧美久久久久久久久久| 欧美巨大另类极品videosbest | 久久精品综合网| 在线播放一区二区三区| 欧美一区二区三区在线观看| 99国产一区二区三精品乱码| av不卡免费在线观看| 色综合久久天天综合网| 精品少妇一区二区| 国产精品毛片久久久久久| 伊人性伊人情综合网| 亚洲高清一区二区三区| 国产一区二区在线免费观看| 成人性生交大片| 波多野结衣亚洲| 欧美人xxxx| 国产精品嫩草99a| 国产成人精品aa毛片| 日韩欧美亚洲国产精品字幕久久久| 国产日本亚洲高清| 久久精品国产久精国产| 欧美激情综合五月色丁香 | 亚洲日本乱码在线观看| 国产成人高清在线| 久久久精品黄色| 久久精品国产网站| 91麻豆精品国产91久久久久久久久| 亚洲成va人在线观看| 欧美一区二区三区婷婷月色| 亚洲国产另类精品专区| 日韩免费一区二区| 天天做天天摸天天爽国产一区 | 亚洲亚洲人成综合网络| 国产伦精品一区二区三区免费 | 精品精品国产高清一毛片一天堂| 亚洲综合视频在线观看| 色94色欧美sute亚洲线路一久| 亚洲人成在线观看一区二区| 国产精品嫩草99a| 欧美日韩亚洲国产综合| 久久www免费人成看片高清| 久久久久高清精品| 91麻豆国产精品久久| 日本不卡一二三区黄网| 一区二区三国产精华液| 欧美丰满嫩嫩电影| 国产精品一二三四| 亚洲精品国产视频| 精品国产一区二区在线观看| aaa亚洲精品| 麻豆专区一区二区三区四区五区| 国产精品视频观看| 欧美一区二区黄色| 在线亚洲欧美专区二区| 日韩av网站免费在线| 亚洲欧美激情小说另类| 国产精品欧美精品| 久久久亚洲午夜电影| 日韩欧美视频一区| 欧美精品久久久久久久久老牛影院 | aaa亚洲精品一二三区| 亚洲成国产人片在线观看| 国产精品三级在线观看| 国产目拍亚洲精品99久久精品| 欧美日韩在线播放一区| aaa亚洲精品| proumb性欧美在线观看| 成人免费毛片嘿嘿连载视频| 激情欧美日韩一区二区| 国产成人av一区二区| 国产一区二区三区四区五区美女| 6080国产精品一区二区| 欧美性感一类影片在线播放| 激情小说欧美图片| 成人午夜视频福利| 99精品久久久久久| 国产不卡视频在线播放| 色综合久久66| 欧美成人一区二区| 中文字幕欧美国产| 五月天一区二区| 国产又粗又猛又爽又黄91精品| 国产 欧美在线| 99精品桃花视频在线观看| 欧美日韩一区二区电影| 精品国产亚洲一区二区三区在线观看| 欧美精品777| 欧美日韩国产系列| 免费在线看成人av| 99久久精品免费| 国产成人亚洲综合色影视| 天天综合色天天综合| 日本不卡在线视频| 91在线丨porny丨国产| 99精品欧美一区| 色综合视频在线观看| 日本精品一区二区三区高清| 在线区一区二视频| 亚洲成人中文在线| 欧美日韩一区二区在线观看视频| 中文字幕一区二区三| 91丨国产丨九色丨pron| 亚洲一区二区三区爽爽爽爽爽| 国产一区欧美日韩| 亚洲二区在线视频| 亚洲成人av在线电影| 日韩精品一区二区三区三区免费 | 国产精品毛片高清在线完整版| 正在播放亚洲一区| 国产一区二区视频在线| 日本女优在线视频一区二区| 欧美卡1卡2卡| 国产三级精品三级| 国产精品美女一区二区在线观看| 蜜臀av性久久久久蜜臀aⅴ| 亚洲欧美一区二区三区久本道91| 久久91精品久久久久久秒播| 欧美sm极限捆绑bd| 一级做a爱片久久| 波多野洁衣一区| 欧美电影精品一区二区| 最新国产精品久久精品| 日韩精品一级中文字幕精品视频免费观看| 蜜臀久久久99精品久久久久久| 成人黄色小视频| 国产性做久久久久久| 日韩高清电影一区| 欧美日韩一区三区四区| 亚洲一线二线三线久久久| 亚洲主播在线观看| 亚洲欧美怡红院| av在线播放成人| 久久国产剧场电影| 国产中文一区二区三区| 亚洲成人精品在线观看| 日韩一级大片在线| 国产91对白在线观看九色| 日本乱码高清不卡字幕| 国产综合色产在线精品| 亚洲女与黑人做爰| 欧美日韩在线播| 国产在线视视频有精品| 麻豆成人91精品二区三区| 日韩一级精品视频在线观看| 日韩av一级片| 国产亚洲综合性久久久影院| 91官网在线观看| 日韩av高清在线观看| 久久综合久久99| 欧美片在线播放| 久久99精品久久久久久国产越南| 精品少妇一区二区三区免费观看| 国产中文字幕精品| 蜜桃视频一区二区三区| 成人动漫一区二区在线| 奇米影视在线99精品| 亚洲一区二区视频在线| 国产精品美女一区二区| 国产宾馆实践打屁股91| 欧美日本在线观看| 91视频.com| 九九热在线视频观看这里只有精品| 精品国产凹凸成av人导航| 欧美一区欧美二区| 亚洲综合区在线| 一区二区三区久久久| 亚洲精品乱码久久久久久黑人 | 日本精品视频一区二区三区| 成人午夜激情在线| 五月激情六月综合| 7777精品伊人久久久大香线蕉完整版 | 亚洲视频你懂的| 天天综合网天天综合色| 日韩福利视频网| 欧美国产一区二区在线观看 | 国产精品久久久久久久午夜片 | 成人综合婷婷国产精品久久蜜臀| 性做久久久久久| 亚洲精品少妇30p| 中文字幕免费不卡| 国产69精品久久久久毛片| 亚洲天天做日日做天天谢日日欢|