91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

java代碼實現指數平滑算法,其中包括一次,二次,三次

資源截圖

代碼片段和文件信息

package?python;

import?org.junit.Test;

import?java.util.ArrayList;
import?java.util.Arrays;
import?java.util.List;

public?class?Holt_Winters?{


????/**
?????*?一次指數平滑法??只適用于??水平型歷史數據??的??預測,而不適用??于??斜坡型線性????趨勢????歷史數據的預測
?????*?二次移動平均法的原理完全適用于二次指數平滑法,即對于斜坡型的歷史數據,歷史數據和一次指數平滑值的差值與一次指數平滑值和二次指數平滑值的差值基本相同
?????*?三次是支持拋物線
?????*?


?????*?系數α的確定
?????*?指數平滑法的計算中,關鍵是α的取值大小,但α的取值又容易受主觀影響,因此合理確定α的取值方法十分重要,一般來說,如果數據波動較大,α值應取大一些,可以增加近期數據對預測結果的影響。如果數據波動平穩,α值應取小一些。理論界一般認為有以下方法可供選擇:
?????*?經驗判斷法。這種方法主要依賴于時間序列的發展趨勢和預測者的經驗做出判斷。
?????*?1、當時間序列呈現較穩定的水平趨勢時,應選較小的α值,一般可在0.05~0.20之間取值;
?????*?2、當時間序列有波動,但長期趨勢變化不大時,可選稍大的α值,常在0.1~0.2之間取值;
?????*?3、當時間序列波動很大,長期趨勢變化幅度較大,呈現明顯且迅速的上升或下降趨勢時,宜選擇較大的α值,如可在0.6~0.8間選值,以使預測模型靈敏度高些,能迅速跟上數據的變化;
?????*?2、當時間序列數據是上升(或下降)的發展趨勢類型,α應取較大的值,在0.6~1之間。
?????*?試算法。根據具體時間序列情況,參照經驗判斷法,來大致確定額定的取值范圍,然后取幾個α值進行試算,比較不同α值下的預測標準誤差,選取預測標準誤差最小的α。
?????*?在實際應用中預測者應結合對預測對象的變化規律做出定性判斷且計算預測誤差,并要考慮到預測靈敏度和預測精度是相互矛盾的,必須給予二者一定的考慮,采用折中的α值
?????*/

????public?static?double[]?primary_index(double?a?double?data[][])?{
????????List?pi?=?new?ArrayList();
????????double[]?result?=?new?double[data.length];
????????double?s1?=?0.0;
????????double?st?=?0.0;
????????for?(int?i?=?0;?i?????????????for?(int?j?=?0;?j?????????????????if?(j?????????????????????s1?+=?data[i][j];
????????????????????if?(data[0].length?????????????????????????st?=?s1?/?3;
????????????????????else
????????????????????????st?=?data[i][0];
????????????????}
????????????}
????????????pi.add(st);
????????????for?(int?k?=?0;?k?????????????????pi.add(a?*?data[i][k]?+?(1?-?a)?*?pi.get(k));
????????????}
????????????result[i]?=?pi.get(pi.size()?-?1);
????????}
????????return?result;
????}
????public?static?double[]?get2_value(double?data[][]?int?t)?{

????????double?a?=?0.3;//指數平滑系數
????????List?S_1?=?new?ArrayList();
????????List?S2_1_new?=?new?ArrayList();
????????List?S2_2_new?=?new?ArrayList();
????????double[]?pre_values?=?new?double[data.length];
????????double?s1?=?0.0;
????????double?st?=?0.0;
????????double?at?=?0.0;
????????double?bt?=?0.0;
????????double?xt?=?0.0;
????????for?(int?i?=?0;?i?????????????for?(int?j?=?1;?j?
????????????????if?(j?????????????????????s1?+=?data[i][j?-?1];
????????????????????if?(data[0].length?????????????????????????st?=?s1?/?3;
????????????????????else
????????????????????????st?=?data[i][0];
????????????????}
????????????}
????????????S_1.add(st);//初始值
????????????for?(int?k?=?0;?k?????????????????if?(k?==?0)
????????????????????S2_1_new.add(a?*?data[i][k]?+?(1?-?a)?*?S_1.get(k));
????????????????else
????????????????????S2_1_new.add(a?*?data[i][k]?+?(1?-?a)?*?S2_1_new.get(k?-?1));
????????????}
????????????for?(int?l?=?0;?l?


評論

共有 條評論