使用Gompertz模型預測非典的趨勢

在預測軟件的可靠性時,可以根據該軟件多輪測試發現的缺陷個數來預測應該發現的總缺陷數。在軟件測試過程中,最開始的時候,會呈現缺陷增長較快的趨勢狀態,隨着測試的進行,測試難度加大,需要執行較多的測試用例才能發現一個缺陷,雖然繼續投入測試,仍然會持續發現缺陷,但是明顯缺陷的增長速度會減緩,同時軟件中隱藏的缺陷是有限的,因而限制了發現缺陷數的無限增長。在實踐中預測總缺陷數的常用方法是Gompertz模型,該模型預測的準確率很高,尤其是當測試輪次超過總輪次的1/3之後。

其實Gompertz模型最初並非是針對軟件領域的,而是用來預測人類的死亡概率,所以人們也稱之爲:“Gompertz人類死亡定律”,它是由英國保險精算師Benjamin Gompertz在1825年首次發現:你認爲你在明年死的概率是多少?試着用一個數字回答——百分之一?萬分之一?不管是多少,這個數字將在8年後增長一倍!這意味着人們能活到某個特定年齡的概率是在不斷加速下降的。 該模型可以用來刻畫這樣的現象:初期增長緩慢,以後逐漸加快,當達到一定程度後,增長率又逐漸下降,最後接近一條漸近線(K值)。現實中有許多現象符合Gompertz曲線,如軟件缺陷的發現、一定時期的人口增長等,因而該曲線被廣泛應用於現象的趨勢變動研究。

            Gompertz模型是一個雙指數公式:

 

            其中:

                        t是自變量,代表時間,如測試輪次等;

                        K代表Y的極限值,即當t趨向於無窮大時Y的取值,如軟件中隱藏的缺陷總數;

                        a<1,Ka爲t=0時Y的初始值;

                        0<b<1,b爲形狀參數,b越大,代表可靠性增長越慢,到達極限值的速度越慢,如軟件測試的週期越長。

            當已知了歷史數據之後,就可以根據歷史數據採用三和法、三點法、高斯牛頓法等多種方法求出K,a,b值,從而擬合出該現象的發展趨勢。儘管該方法理論上有一些前提條件,但是實踐中我們忽略其前提條件,仍然有很高的準確度。

            我們以2003年4月20日到6月12日65天的北京市非典數據爲例進行測算一下:

序號

 

日 期

已確診病例累計

新增確診

1

4月20日

339

339

2

4月21日

482

143

3

4月22日

588

106

4

4月23日

693

105

5

4月24日

774

81

6

4月25日

877

103

7

4月26日

988

111

8

4月27日

1114

126

9

4月28日

1199

85

10

4月29日

1347

148

11

4月30日

1440

93

12

5月1日

1553

113

13

5月2日

1636

83

14

5月3日

1741

105

15

5月4日

1803

62

16

5月5日

1897

94

17

5月6日

1960

63

18

5月7日

2049

89

19

5月8日

2136

87

20

5月9日

2177

41

21

5月10日

2227

50

22

5月11日

2265

38

23

5月12日

2304

39

24

5月13日

2347

43

25

5月14日

2370

23

26

5月15日

2388

18

27

5月16日

2405

17

28

5月17日

2420

15

29

5月18日

2434

14

30

5月19日

2437

3

31

5月20日

2444

7

32

5月21日

2444

0

33

5月22日

2456

12

34

5月23日

2465

9

35

5月24日

2490

25

36

5月25日

2499

9

37

5月26日

2504

5

38

5月27日

2512

8

39

5月28日

2514

2

40

5月29日

2517

3

41

5月30日

2520

3

42

5月31日

2521

1

43

6月16日

2521

0

44

6月17日

2521

0

45

6月18日

2521

0

46

6月19日

2521

0

47

6月20日

2521

0

48

6月21日

2521

0

49

6月22日

2521

0

50

6月23日

2521

0

51

6月1日

2522

1

52

6月2日

2522

0

53

6月3日

2522

0

54

6月4日

2522

0

55

6月5日

2522

0

56

6月6日

2522

0

57

6月8日

2522

0

58

6月9日

2522

0

59

6月10日

2522

0

60

6月13日

2522

0

61

6月14日

2522

0

62

6月15日

2522

0

63

6月7日

2523

1

64

6月11日

2523

0

65

6月12日

2523

0

 

            在1stopt軟件中對上述65天的數據進行擬合得到如下的結果:

 

相關係數(R): 0.9993

相關係數之平方(R^2): 0.9987

 

參數     最佳估算

----------      -------------

K               2539.2751

a               0.0991

b              0.8769

 

即模型預測的最終確診人數上限爲2539,在疫情發展過程中,我們可以每天進行預測K值的變化,以下爲基於上述2003年非典數據每5天一次的預測結果與實際值的對比:

第幾天進行預測

K值(上限)

與實際值2523的偏差

與實際值的偏差率

5

982

-1541

-61.08%

10

2530

7

0.28%

15

2715

192

7.61%

20

2779

256

10.15%

25

2712

189

7.49%

30

2632

109

4.32%

35

2581

58

2.30%

40

2569

46

1.82%

45

2560

37

1.47%

50

2552

29

1.15%

55

2546

23

0.91%

60

2542

19

0.75%

65

2539

16

0.63%

綜合上表我們可以發現該模型在初期,即疫情發展的前5天,趨勢不明顯時,預測結果偏差較大,但是中後期擬合的效果還是很好的!

 

            如果採用該方法預測一下當下的新型冠狀病毒肺炎的趨勢會是怎麼樣的呢?敬請關注後續文章!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章