黑龍江省建設(shè)造價協(xié)會網(wǎng)站在線網(wǎng)站seo診斷
趨勢外推預(yù)測模型實(shí)驗(yàn)完整版
實(shí)驗(yàn)?zāi)康?/h3>
通過趨勢外推預(yù)測模型(佩爾預(yù)測模型),掌握預(yù)測模型的建立和應(yīng)用方法,了解趨勢外推預(yù)測模型(佩爾預(yù)測模型)的基本原理
實(shí)驗(yàn)內(nèi)容
趨勢外推預(yù)測模型
實(shí)驗(yàn)步驟和過程
(1)第一步:學(xué)習(xí)趨勢外推預(yù)測模型(佩爾預(yù)測模型)相關(guān)知識。
趨勢外推預(yù)測模型是一種基于歷史數(shù)據(jù)的數(shù)學(xué)模型,旨在預(yù)測未來的趨勢。它是通過分析歷史數(shù)據(jù)的趨勢和規(guī)律,預(yù)測未來發(fā)展的趨勢。趨勢外推預(yù)測模型是一種有用的工具,可以幫助人們做出更準(zhǔn)確的決策。
本次實(shí)驗(yàn)主要使用佩爾預(yù)測模型,這里進(jìn)行詳細(xì)介紹。
概念
佩爾預(yù)測模型是一種基于時間序列的預(yù)測模型,它通過對歷史數(shù)據(jù)的分析,預(yù)測未來的趨勢。該模型是由法國經(jīng)濟(jì)學(xué)家佩爾(Maurice Allais)提出的,因此得名佩爾預(yù)測模型。它是一種廣泛應(yīng)用于經(jīng)濟(jì)、金融、管理等領(lǐng)域的預(yù)測模型。
、
原理
佩爾預(yù)測模型的原理是基于時間序列的分析方法,它將時間序列分為趨勢、季節(jié)性和隨機(jī)性三個部分,然后分別對這三個部分進(jìn)行分析預(yù)測。
趨勢分析
趨勢是指時間序列中的長期變化規(guī)律,它可以是上升趨勢、下降趨勢或平穩(wěn)趨勢。佩爾預(yù)測模型通過趨勢分析來預(yù)測未來的發(fā)展趨勢。趨勢分析方法包括移動平均法、指數(shù)平滑法和回歸分析法等。
季節(jié)性分析
季節(jié)性是指時間序列中的周期性變化規(guī)律,它通常是由于季節(jié)、節(jié)假日等因素引起的。佩爾預(yù)測模型通過季節(jié)性分析來預(yù)測未來的季節(jié)性變化。季節(jié)性分析方法包括季節(jié)性指數(shù)法、季節(jié)性回歸法等。
隨機(jī)性分析
隨機(jī)性是指時間序列中的無規(guī)律變化,它通常是由于偶然因素引起的。佩爾預(yù)測模型通過隨機(jī)性分析來預(yù)測未來的隨機(jī)性變化。隨機(jī)性分析方法包括自回歸模型、移動平均模型和ARMA模型等。
應(yīng)用
佩爾預(yù)測模型在經(jīng)濟(jì)、金融、管理等領(lǐng)域具有廣泛的應(yīng)用。以下是幾個應(yīng)用實(shí)例:
經(jīng)濟(jì)預(yù)測
佩爾預(yù)測模型在經(jīng)濟(jì)預(yù)測中具有重要的應(yīng)用。例如,通過分析歷史數(shù)據(jù),可以預(yù)測未來的通貨膨脹率、失業(yè)率、GDP增長率等經(jīng)濟(jì)指標(biāo)。這些預(yù)測結(jié)果可以幫助政府和企業(yè)做出更準(zhǔn)確的決策。
股票預(yù)測
佩爾預(yù)測模型在股票預(yù)測中也有廣泛的應(yīng)用。例如,通過分析歷史股價數(shù)據(jù),可以預(yù)測未來股價的趨勢。這些預(yù)測結(jié)果可以幫助投資者做出更明智的投資決策。
能源預(yù)測
佩爾預(yù)測模型在能源預(yù)測中也有重要的應(yīng)用。例如,通過分析歷史能源消耗數(shù)據(jù),可以預(yù)測未來能源需求的趨勢。這些預(yù)測結(jié)果可以幫助政府和企業(yè)做出更明智的能源規(guī)劃。
優(yōu)缺點(diǎn)
佩爾預(yù)測模型的優(yōu)點(diǎn)包括:
能夠精確地反映時間序列的趨勢、季節(jié)性和隨機(jī)性變化,能夠?yàn)闆Q策者提供更準(zhǔn)確的預(yù)測結(jié)果。
方法多樣,可以根據(jù)不同的數(shù)據(jù)進(jìn)行選擇,具有較高的適用性。
適用于處理非線性數(shù)據(jù),可以處理具有強(qiáng)烈季節(jié)性和趨勢變化的數(shù)據(jù)。
佩爾預(yù)測模型的缺點(diǎn)包括:
對于非穩(wěn)定時間序列,需要進(jìn)行平穩(wěn)化處理,增加了預(yù)測的難度。
預(yù)測結(jié)果可能受到異常值的干擾,需要進(jìn)行異常值處理。
參數(shù)的選擇需要一定的經(jīng)驗(yàn)和技巧,不當(dāng)?shù)倪x擇可能會導(dǎo)致預(yù)測結(jié)果不準(zhǔn)確
總結(jié)
佩爾預(yù)測模型是一種基于時間序列的預(yù)測模型,通過對歷史數(shù)據(jù)進(jìn)行分析,預(yù)測未來的趨勢。它在經(jīng)濟(jì)、金融、管理等領(lǐng)域有廣泛的應(yīng)用,可以幫助決策者做出更準(zhǔn)確的決策。該模型的優(yōu)點(diǎn)包括精確反映時間序列的趨勢、季節(jié)性和隨機(jī)性變化,方法多樣,適用性高,適合處理非線性數(shù)據(jù);缺點(diǎn)包括對非穩(wěn)定時間序列的平穩(wěn)化處理、異常值的干擾和參數(shù)選擇的難度。因此,在使用佩爾預(yù)測模型時需要注意數(shù)據(jù)的處理和參數(shù)的選擇,以獲得更準(zhǔn)確的預(yù)測結(jié)果。
(2)第二步:數(shù)據(jù)準(zhǔn)備,數(shù)據(jù)來源于課本例題。
年份 客運(yùn)量 X1/萬人 旅客周轉(zhuǎn)量 X2/億人千米 公路客運(yùn)量 X3/萬人 公路旅客周轉(zhuǎn)量 X4/億人千米
1987 10091 88.4 8552 59.9
1988 10551 93.46 8864 64.81
1989 10389 94.01 8928 97.66
1990 10702 87.67 9475 65.77
1991 11078 95.86 9880 71.83
1992 10565 99.98 9277 69.89
1993 11063 111.9 9528 73.38
1994 25163 146.87 23518 101.77
1995 21697 137.93 20095 93.1
1996 23904 149.94 22397.1 102.4
1997 25003.7 172.4 23437.9 119.5
1998 29863 189.85 28048 131.8
1999 32962.2 237.99 30796 164.2
2000 33704 237.94 31586 171.2
2001 39984.4 304.2 37909 232.76
2002 38879.6 281.6 36726 210.1
2003 35156 263.45 33039 192.87
2004 38902 317.76 36502 227.21
2005 41079 331.6 38509 233.12
2006 43844 362.4 40861 247.71
(3)第三步:使用 Python 編寫實(shí)驗(yàn)代碼并做圖。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 設(shè)置中文字體
plt.rcParams['font.sans-serif'] = ['SimHei']
# 讀取Excel數(shù)據(jù)
data = pd.read_excel('E:\\File\\class\\大三下\\數(shù)據(jù)挖掘\\test4.xlsx')
# 將x和y值轉(zhuǎn)換為numpy數(shù)組
x = np.array(data['年份'])
y = np.array(data['客運(yùn)量 X1/萬人'])
# 計(jì)算趨勢線
n = len(x)
trend = np.polyfit(np.arange(1, n+1), y, 1)
# 計(jì)算預(yù)測值
x_new = n + 2 # 預(yù)測的年份
y_new = trend[0] * x_new + trend[1]
print('2008年對應(yīng)的客運(yùn)量為:', y_new)
# 生成趨勢線數(shù)據(jù)
trendline = trend[0] * np.arange(1, n+2) + trend[1]
# 繪制圖形
plt.plot(np.arange(1, n+1), y, label='原始數(shù)據(jù)')
plt.plot(np.arange(1, n+3), np.append(trendline, y_new), label='趨勢線')
plt.scatter(n+2, y_new, color='red', label='預(yù)測值')
plt.title('趨勢外推預(yù)測模型(佩爾預(yù)測模型)案例')
plt.xlabel('年份')
plt.ylabel('客運(yùn)量 X1/萬人')
plt.legend()
plt.show()
代碼解釋:
上述代碼是一個趨勢外推預(yù)測模型(佩爾預(yù)測模型)的案例,主要功能是讀取 Excel 數(shù)據(jù),計(jì)算趨勢線,預(yù)測未來客運(yùn)量,并繪制數(shù)據(jù)圖形。下面對每行代碼進(jìn)行詳細(xì)解釋:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
首先導(dǎo)入 pandas、numpy 和 matplotlib.pyplot 這三個庫。
plt.rcParams[‘font.sans-serif’] = [‘SimHei’]
這一行代碼是為了解決在 Matplotlib 中中文顯示問題,設(shè)置中文字體為 SimHei。
data = pd.read_excel(‘E:\File\class\大三下\數(shù)據(jù)挖掘\test4.xlsx’)
讀取數(shù)據(jù)文件 test4.xlsx,將其存儲在 pandas 的 dataframe 中。
x = np.array(data[‘年份’])
y = np.array(data[‘客運(yùn)量 X1/萬人’])
將 dataframe 中的“年份”列和“客運(yùn)量 X1/萬人”列轉(zhuǎn)換成 numpy 數(shù)組 x 和 y,方便后續(xù)計(jì)算。
n = len(x)
trend = np.polyfit(np.arange(1, n+1), y, 1)
利用 numpy 庫中的 polyfit 函數(shù)計(jì)算出數(shù)據(jù)的趨勢線,其中 np.arange(1, n+1) 生成了 1 到 n 的序列,用于擬合數(shù)據(jù)。1 指定了擬合的多項(xiàng)式的次數(shù),這里指定為一次線性擬合。
x_new = n + 2 # 預(yù)測的年份
y_new = trend[0] * x_new + trend[1]
print(‘2008年對應(yīng)的客運(yùn)量為:’, y_new)
計(jì)算出在 2008 年的客運(yùn)量,這里假設(shè)未來的客運(yùn)量趨勢與歷史數(shù)據(jù)的趨勢相同。y_new 計(jì)算了 2008 年對應(yīng)的客運(yùn)量。
trendline = trend[0] * np.arange(1, n+2) + trend[1]
生成趨勢線數(shù)據(jù),使用了 polyfit 計(jì)算出來的趨勢線方程,即 y = kx + b,其中 k 是趨勢線的斜率,b 是截距,np.arange(1, n+2) 生成了 1 到 n+1 的序列,用于繪制趨勢線。
plt.plot(np.arange(1, n+1), y, label=‘原始數(shù)據(jù)’)
plt.plot(np.arange(1, n+3), np.append(trendline, y_new), label=‘趨勢線’)
plt.scatter(n+2, y_new, color=‘red’, label=‘預(yù)測值’)
plt.title(‘趨勢外推預(yù)測模型(佩爾預(yù)測模型)案例’)
plt.xlabel(‘年份’)
plt.ylabel(‘客運(yùn)量 X1/萬人’)
plt.legend()
plt.show()
繪制數(shù)據(jù)圖形,包括原始數(shù)據(jù)的折線圖、趨勢線的折線圖和預(yù)測值的散點(diǎn)圖。其中:
plt.plot(np.arange(1, n+1), y, label=‘原始數(shù)據(jù)’) 繪制了原始數(shù)據(jù)的折線圖。
plt.plot(np.arange(1, n+3), np.append(trendline, y_new), label=‘趨勢線’) 繪制了趨勢線的折線圖。
plt.scatter(n+2, y_new, color=‘red’, label=‘預(yù)測值’) 繪制了預(yù)測值的散點(diǎn)圖。
plt.title(‘趨勢外推預(yù)測模型(佩爾預(yù)測模型)案例’) 設(shè)置了圖形的標(biāo)題。
plt.xlabel(‘年份’) 設(shè)置了 X 軸的標(biāo)簽。
plt.ylabel(‘客運(yùn)量 X1/萬人’) 設(shè)置了 Y 軸的標(biāo)簽。
plt.legend() 顯示了圖例。
plt.show() 展示了圖形。
整個代碼實(shí)現(xiàn)了一個基礎(chǔ)的趨勢外推預(yù)測模型,通過對歷史數(shù)據(jù)的分析,找到數(shù)據(jù)的趨勢線,再根據(jù)趨勢線預(yù)測未來數(shù)據(jù)的變化趨勢。同時,通過圖形的繪制,讓數(shù)據(jù)更加直觀和易懂。
(4)第四步:實(shí)驗(yàn)結(jié)果。
繪圖和預(yù)測2008年的客運(yùn)量X1。
這里的預(yù)測結(jié)果為:48571.043759398526
實(shí)驗(yàn)總結(jié)
通過本次實(shí)驗(yàn),我學(xué)習(xí)了趨勢外推預(yù)測模型(佩爾預(yù)測模型)的基本原理和建立方法,了解了如何使用Python編程實(shí)現(xiàn)預(yù)測模型。同時,我們也使用了某省會全社會客運(yùn)量預(yù)測實(shí)例,對趨勢外推預(yù)測模型(佩爾預(yù)測模型)進(jìn)行了實(shí)際應(yīng)用和分析。在實(shí)驗(yàn)中,我掌握了數(shù)據(jù)預(yù)處理、模型訓(xùn)練和結(jié)果評估等關(guān)鍵技術(shù),對于今后的數(shù)據(jù)分析和預(yù)測工作將有很大的幫助。同時在這個過程之中也出現(xiàn)了一些問題,但通過查閱相關(guān)資料最終這些問題都得以解決。在這個過程中我的動手實(shí)踐能力的到提升,也讓我明白了實(shí)際動手操作的重要性,在實(shí)際操作中可以發(fā)現(xiàn)很多平時發(fā)現(xiàn)不了的問題,通過實(shí)踐最終都得以解決。