資源簡介
指數(shù)平滑法的計算中,關(guān)鍵是α的取值大小,但α的取值又容易受主觀影響,因此合理確定α的取值方法十分重要,一般來說,如果數(shù)據(jù)波動較大,α值應(yīng)取大一些,可以增加近期數(shù)據(jù)對預(yù)測結(jié)果的影響。如果數(shù)據(jù)波動平穩(wěn),α值應(yīng)取小一些。理論界一般認為有以下方法可供選擇:
經(jīng)驗判斷法。這種方法主要依賴于時間序列的發(fā)展趨勢和預(yù)測者的經(jīng)驗做出判斷。
1、當時間序列呈現(xiàn)較穩(wěn)定的水平趨勢時,應(yīng)選較小的α值,一般可在0.05~0.20之間取值;
2、當時間序列有波動,但長期趨勢變化不大時,可選稍大的α值,常在0.1~0.4之間取值;
3、當時間序列波動很大,長期趨勢變化幅度較大,呈現(xiàn)明顯且迅速的上升或下降趨勢時,宜選擇較大的α值,如可在0.6~0.8間選值,以使預(yù)測模型靈敏度高些,能迅速跟上數(shù)據(jù)的變化;
4、當時間序列數(shù)據(jù)是上升(或下降)的發(fā)展趨勢類型,α應(yīng)取較大的值,在0.6~1之間。
試算法。根據(jù)具體時間序列情況,參照經(jīng)驗判斷法,來大致確定額定的取值范圍,然后取幾個α值進行試算,比較不同α值下的預(yù)測標準誤差,選取預(yù)測標準誤差最小的α。
在實際應(yīng)用中預(yù)測者應(yīng)結(jié)合對預(yù)測對象的變化規(guī)律做出定性判斷且計算預(yù)測誤差,并要考慮到預(yù)測靈敏度和預(yù)測精度是相互矛盾的,必須給予二者一定的考慮,采用折中的α值。
下期預(yù)測數(shù)=本期實際數(shù)×平滑系數(shù)+本期預(yù)測數(shù)×(1-平滑系數(shù))
如某種產(chǎn)品銷售量的平滑系數(shù)為0.4,1996年實際銷售量為31萬件,預(yù)測銷售量為33萬件。則1997年的預(yù)測銷售量為:
1997年預(yù)測銷售量= 31萬件×0.4+33萬件×(1-0.4)=32.2萬件

代碼片段和文件信息
using?System;
using?System.Data;
using?System.Configuration;
using?System.Web;
using?System.Web.Security;
using?System.Web.UI;
using?System.Web.UI.WebControls;
using?System.Web.UI.WebControls.WebParts;
using?System.Web.UI.HtmlControls;
using?System.Collections;
///?
///?MoveAverage移動平均法
///?
public?class?MoveAverage
{
????public?ArrayList?xArrayt;
????public?double[]?OriArray;
????public?double[]?OldArray;
???//?public?int?period;
????static?DataTable?dt0?=?new?DataTable();
????static?DataTable?dt1?=?new?DataTable();
????static?int?n?=?0;
????static?int?m?=?0;
????public?double[]?PMA_dtAim;
????public?double[]?PMA2_dtAim;
????public?double[]?dtAim;
????public?double[]?At;
????public?double[]?Bt;
????///?
????///?從歷史追溯數(shù)據(jù)定時程數(shù)據(jù)起始點設(shè)定步長移動平均
????///?
????///?歷史追溯數(shù)據(jù)表
????///?時程數(shù)據(jù)表
????///?移動步長
????public?MoveAverage(double[]?OriDt?int?previous)
{
//
//?TODO:?在此處添加構(gòu)造函數(shù)邏輯
//
????????n?=?OriDt.GetLength(0);
????????m?=?n?-?previous;
????????OriArray?=?new?double[n];
????????OldArray?=?new?double[m];
????????OriArray?=?OriDt;
????????for?(int?i?=?0;?i?????????{
????????????OldArray[i]?=?OriDt[i+previous];
????????}
}
???///?
???///?一次移動平均
???///?
???///?步長
???///?
????public?double[]?PMA1(int?period)
????{
????????double?Xt?=?0;
????????double?Ft1?=?0;
????????PMA_dtAim?=?new?double[m];
????????try
????????{
????????????for?(int?i?=?0;?i?????????????{
????????????????for?(int?j?=?0;?j?????????????????{
????????????????????Ft1?=?OriArray[n?-?m?-?period-1?+?i?+?j];
????????????????}
????????????????Ft1?/=?period;
????????????????PMA_dtAim[i]?=?Ft1;
????????????????Ft1?=?0;
????????????}
????????}
????????catch(Exception?ex)
????????{
????????????string?errStr?=?period?+?“_PMA1“?+ex.Message.ToString();
????????????HttpContext.Current.Response.Write(“ript?language=‘javascript‘>alert(‘“?+?errStr?+?“‘); ript>“);
????????}
????????return?PMA_dtAim;
????}
????///?
????///?一次移動平均?預(yù)測下一個值
????///?
????///?///?步長
????///?
????public?double?forecast(int?period)
????{
????????double?FtF?=?0;
????????try
????????{
????????????FtF?=?PMA_dtAim[m?-?1]?+?(OldArray[m?-?1]?-?OldArray[m?-?1?-?period])?/?period;//?(yArray[m?-?1]?-?yArray[m?-?1?-?period])?/?period;
????????}
????????catch(Exception?ex)
????????{
????????????string?errStr?=?period?+?“_forcast“?+?ex.Message.ToString();
????????????HttpContext.Current.Response.Write(“ript?language=‘javascript‘>alert(‘“?+errStr?+?“‘); ript>“);
????????}
????????return?FtF;
????}
/*
????///?
????///?線性二次移動平均法
????///?
????///?
????public?double[]?PMA2()
????{
????????int?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7764??2009-06-05?15:07??MoveAverage.cs
?????文件?????338944??2012-03-08?19:57??5.ppt
?????文件???????1306??2012-03-08?19:04??指數(shù)平均.txt
-----------?---------??----------?-----??----
???????????????348014????????????????????3
評論
共有 條評論