跳轉到內容

統計/數值方法/統計軟體的數值比較

來自華夏公益教科書,開放的書籍,開放的世界

統計計算需要額外的精度,並且容易出現截斷和抵消誤差等錯誤。這些錯誤是由於二進位制表示和有限精度造成的,可能會導致不準確的結果。在本研究中,我們將討論統計軟體的準確性、可用於測量準確性的不同測試和方法,以及不同軟體包的比較。

軟體的準確性

[編輯 | 編輯原始碼]

準確性可以定義為結果的正確性。當使用統計軟體包時,假設結果是正確的,以便對這些結果進行評論。然而,必須承認計算機有一些侷限性。主要問題是,計算機系統通常提供的可用精度是有限的。很明顯,統計軟體無法提供超出這些限制的準確結果。但是,統計軟體應該認識到其限制,並明確表明已達到這些限制。我們今天通常使用兩種型別的精度

  • 單精度
  • 雙精度

二進位制表示和有限精度

[編輯 | 編輯原始碼]

二進位制表示和有限精度會導致不準確的結果NIKHIL。計算機沒有實數——我們用有限的近似值來表示它們。

示例:假設我們要用單精度浮點數表示 0.1。結果如下

0.1 = .00011001100110011001100110 = 0.99999964 (McCullough,1998)

很明顯,我們只能以二進位制形式近似 0.1。如果我們嘗試減去兩個僅在最低精度位不同的較大數字,則這個問題會增大。例如 100000.1-100000 = .09375

使用單精度浮點數,我們只能表示 24 個有效二進位制位,換句話說,6-7 個有效十進位制位。在雙精度中,可以表示 53 個有效二進位制位,相當於 15-17 個有效十進位制位。二進位制表示的侷限性產生了五個不同的數值範圍,會導致精度損失

  • 負溢位
  • 負下溢
  • 正下溢
  • 正溢位

溢位意味著值已變得太大,無法表示。下溢意味著運算元太小,太接近零,因此結果必須設定為零。單精度和雙精度表示具有不同的範圍。

二進位制表示的結果

[編輯 | 編輯原始碼]

這些限制在不同情況下會導致不同的錯誤

  • 抵消誤差 是由於減去兩個幾乎相等的數字而產生的。
  • 累積誤差 是在一系列計算中累積的連續舍入誤差之和。在這種型別的誤差中,有可能只有結果的最右邊的數字受到影響,或者結果沒有一個準確的數字。
  • 二進位制表示和有限精度的另一個結果是,兩個代數上等價的公式在數值上可能不等價。例如

第一個公式按升序新增數字,而第二個公式按降序新增數字。在第一個公式中,最小的數字是在計算結束時才達到的,因此這些數字全部丟失,導致舍入誤差。誤差是第二個公式的 650 倍。(McCullough,1998)

  • 截斷誤差 是由於二進位制表示的限制而產生的近似誤差。

示例

sin(x) 的真實值與透過將有限個項相加而獲得的結果之間的差值就是截斷誤差。(McCullough,1998)

  • 演算法誤差 是另一個導致不準確的原因。計算某個量可能有多種方法,而這些不同的方法在準確性上可能會有所不同。例如,根據 Sawitzki (1994) 的說法,在單精度環境中,使用以下公式來計算方差 

測量精度

[edit | edit source]

由於計算機的限制,在計算統計值時會遇到一些問題。我們需要一個指標來衡量計算值的精度。該指標基於計算值(q)和真實值(c)之間的差異。一個常用的指標是對數相對誤差(Log Relative Error,簡稱 LRE)(表示正確有效數字的位數)(McCullough,1998)

規則

  • q 應接近 c(少於兩位數字)。如果它們不相等,則將 LRE 設定為零
  • 如果 LRE 大於 c 中的數字位數,則將 LRE 設定為 c 中的數字位數。
  • 如果 LRE 小於 1,則將其設定為零。

測試統計軟體

[edit | edit source]

在本部分,我們將討論旨在衡量軟體精度的兩個不同測試:Wilkinson 測試(Wilkinson,1985)和 NIST StRD 基準測試。

Wilkinson 統計測試

[edit | edit source]

Wilkinson 統計測試中使用的 Wilkinson 資料集“NASTY”是由 Leland Wilkinson(1985)建立的資料集。該資料集包含不同的變數,例如“Zero”,它只包含零,“Miss”,它包含所有缺失值,等等。NASTY 在它包含的值方面是一個合理的資料集。例如,“NASTY”中的“Big”的值小於美國人口,“Tiny”與工程中許多值相當。另一方面,“統計測試”的練習並非旨在合理。這些測試旨在檢查統計計算中的一些特定問題。Wilkinson 的統計測試是一個入門級測試。

NIST StRD 基準測試

[edit | edit source]

這些基準測試由美國國家標準與技術研究院設計,包含不同難度級別的資料集。目的是測試統計軟體在統計學不同主題和不同難度級別方面的準確性。“統計參考資料集”專案的網頁上有五組資料集

  • 方差分析
  • 線性迴歸
  • 馬爾科夫鏈蒙特卡洛
  • 非線性迴歸
  • 單變數彙總統計

在所有基準測試組中,有三種不同型別的資料集:低難度級別資料集、平均難度級別資料集和高難度級別資料集。透過使用這些資料集,我們將探索統計軟體是否能夠為一些統計計算提供 15 位有效數字的準確結果。

NIST 提供了 11 個數據集,其中有 6 個低難度級別資料集,2 個平均難度級別資料集,1 個高難度級別資料集。為每個資料集提供了 15 位有效數字的認證值,包括均值 (μ)、標準差 (σ) 和一階自相關係數 (ρ)。

在方差分析資料集組中,有 11 個不同難度級別的資料集,其中有 4 個低難度級別資料集,4 個平均難度級別資料集和 3 個高難度級別資料集。對於每個資料集,都提供了 15 位有效數字的認證值,包括組間自由度、組內自由度、平方和、均方差、F 統計量、 和殘差標準差。由於大多數認證值用於計算 F 統計量,因此只將其 LRE 與統計軟體包的結果進行比較。

為了測試統計軟體的線性迴歸結果,NIST 提供了 11 個不同難度級別的資料集,其中有 2 個低難度級別資料集,2 個平均難度級別資料集和 7 個高難度級別資料集。對於每個資料集,我們都具有 15 位有效數字的認證值,包括係數估計、係數的標準誤差、殘差標準差、、線性迴歸方差分析表,其中包括殘差平方和。將最不準確的係數 、標準誤差 和殘差平方和 進行比較。在非線性迴歸資料集組中,NIST 設計了 27 個數據集,其中有 8 個低難度級別資料集,11 個平均難度級別資料集和 8 個高難度級別資料集。對於每個資料集,我們都具有 NIST 提供的 11 位有效數字的認證值,包括係數估計、係數的標準誤差、殘差平方和、殘差標準差和自由度。

在非線性迴歸計算的情況下,我們應用曲線擬合方法。在該方法中,我們需要起始值來初始化等式中的每個變數。然後,我們生成曲線並計算收斂標準(例如,平方和)。然後,我們調整變數以使曲線更接近資料點。有幾種演算法可以用來調整變數

  • Marquardt 和 Levenberg 方法
  • 線性下降方法
  • Gauss-Newton 方法

反覆應用其中一種方法,直到收斂標準的差異小於收斂容差。

NIST 還提供了兩組起始值:起始值 I(遠離解決方案的值)、起始值 II(接近解決方案的值)。使用起始值 II 作為初始值使更容易獲得準確的解決方案。因此,將優先考慮起始值 I 解決方案。

其他重要設定如下

  • 收斂容差(例如,1E-6)
  • 求解方法(例如,Gauss Newton 或 Levenberg Marquardt)
  • 收斂準則(例如,殘差平方和 (RSS) 或引數差異最大值的平方)

我們也可以在數值導數和解析導數之間進行選擇。

測試示例

[編輯 | 編輯原始碼]

測試軟體包:SAS、SPSS 和 S-Plus

[編輯 | 編輯原始碼]

在本部分中,我們將討論 M.D. McCullough 應用的三種統計軟體包的測試結果。在 McCullough 的工作中,SAS 6.12、SPSS 7.5 和 S-Plus 4.0 進行了測試和比較,以瞭解 NIST 提供的認證 LRE 值。比較將根據以下部分進行

  • 單變數統計
  • 方差分析
  • 線性迴歸
  • 非線性迴歸

單變數統計

[編輯 | 編輯原始碼]
表 1:SAS 單變數統計結果(McCullough,1998)

在 SAS 中計算的所有值似乎都或多或少地準確。對於資料集 NumAcc1,由於觀察次數不足,無法計算 p 值。計算資料集 NumAcc3(平均難度)和 NumAcc 4(高難度)的標準差似乎給 SAS 帶來了壓力。

表 2:SPSS 單變數統計結果(McCullough,1998)

對於均值和標準差計算的所有值似乎都或多或少地準確。對於資料集 NumAcc1,由於觀察次數不足,無法計算 p 值。計算資料集 NumAcc3 和 -4 的標準差似乎也給 SPSS 帶來了壓力。對於 p 值,SPSS 只用 3 位小數表示結果,這低估了第一個 p 值的精度,高估了最後一個 p 值的精度。

表 3:S-Plus 單變數統計結果(McCullough,1998)

對於均值和標準差計算的所有值似乎都或多或少地準確。S-Plus 在計算資料集 NumAcc3 和 -4 的標準差時也存在問題。S-Plus 在計算 p 值方面表現不佳。

方差分析

[編輯 | 編輯原始碼]
表 4:SAS 方差分析結果(McCullough,1998)

結果

  • SAS 只能解決低級別難度的方差分析問題。
  • 對於平均或更高難度的的資料集,F 統計量可以計算出來,但效能很差,精度為 0 位。
  • SPSS 可以像 SAS 一樣,顯示對於低級別難度的資料集的準確結果。
  • SPSS 在計算方差分析方面的表現不佳。
  • 對於資料集“AtmWtAg”,SPSS 沒有顯示 F 統計量,這似乎比顯示 0 精度結果更合理。
  • S-Plus 比其他軟體包更能處理方差分析問題。
  • 即使對於高難度的資料集,S-Plus 也可以顯示比其他軟體包更準確的結果。但對於高難度資料集的結果仍然不夠準確。
  • S-Plus 可以解決中等難度的問題,其精度足夠高。

線性迴歸

[編輯 | 編輯原始碼]
表 5:SAS 線性迴歸結果(McCullough,1998)

SAS 無法為 Filip 資料集提供解決方案,該資料集是十階多項式。除了 Filip 之外,SAS 顯示的結果或多或少地準確。但對於更高難度的 datasets,效能似乎下降,尤其是在計算係數方面。

表 6:SPSS 線性迴歸結果(McCullough,1998)

SPSS 也存在“Filip”問題,這是一個 10 階多項式。許多軟體包無法計算其值。與 SAS 一樣,SPSS 在處理高難度 datasets 時,精度較低。

表 7:S-Plus 線性迴歸結果(McCullough,1998)

S-Plus 是唯一一個為“Filip”資料集提供結果的軟體包。Filip 結果的精度似乎不是差,而是中等。即使對於更高難度的 datasets,S-Plus 也能比其他軟體包計算出更準確的結果。只有資料集“Wrampler4”和“-5”的係數精度低於平均水平。

非線性迴歸

[編輯 | 編輯原始碼]
表 8:SAS 非線性迴歸結果(McCullough,1998)

對於非線性迴歸,每個軟體包測試了兩種設定組合,因為不同的設定會影響結果。從表格中可以看出,SAS 中首選的組合比預設組合產生的結果更好。在此表格中,使用預設組合產生的結果用括號表示。由於 NIST 提供了 11 位的認證值,因此我們尋找的是 11 的 LRE 值。

首選組合

  • 方法:高斯-牛頓
  • 準則:PARAM
  • 容差:1E-6
表 9:SPSS 非線性迴歸結果(McCullough,1998)

在 SPSS 中,首選組合也比預設選項表現更好。所有問題都在初始值“開始 I”下解決,而在 SAS 中,更高難度的 datasets 則使用開始 II 值解決。

首選組合

  • 方法:列文伯格-馬夸特
  • 準則:PARAM
  • 容差:1E-12
表 10:S-Plus 非線性迴歸結果(McCullough,1998)

從表格中可以看出,首選組合在 S-Plus 中也比預設組合更好。除了“MGH10”之外,所有問題都在初始值“開始 I”下解決。可以說,S-Plus 在計算非線性迴歸方面表現比其他軟體更好。

首選組合

  • 方法:高斯-牛頓
  • 準則:RSS
  • 容差:1E-6

比較結果

[編輯 | 編輯原始碼]

所有軟體包都在單變數統計中為均值和標準差提供了準確的結果。測試的統計軟體包之間沒有太大差異。在方差分析計算中,SAS 和 SPSS 無法透過中等難度的問題,而 S-Plus 比其他軟體包提供了更準確的結果。但對於高難度資料集,它也產生了較差的結果。關於線性迴歸問題,所有軟體包似乎都可靠。如果我們檢查所有軟體包的結果,可以說,非線性迴歸結果計算的成功很大程度上取決於所選擇的選項。

其他重要結果如下

  • S-Plus 一次從開始 II 開始解決。
  • SPSS 從未使用開始 II 作為初始值,但有一次產生了 0 精度位。
  • SAS 使用開始 II 三次,每次都產生了 0 精度位。

不同版本的 SPSS 比較

[編輯 | 編輯原始碼]

在本部分中,我們將比較 SPSS 的舊版本和新版本,以檢視舊版本中的問題是否在新版本中得到解決。在本部分中,我們將 SPSS 版本 7.5 與 SPSS 版本 12.0 進行了比較。版本 7.5 的 LRE 值來自 B.D. McCullough 的文章(參見參考文獻)。我們還將這些測試應用於版本 12.0,並計算了相應的 LRE 值。我們從每個難度組中選擇一個數據集,並在版本 12.0 中應用了單變數統計、方差分析和線性迴歸。資料集的來源是 NIST 統計參考資料集檔案。然後,我們使用 NIST 提供的認證值計算每個資料集的 LRE 值,以便比較兩個版本的 SPSS。

單變數統計

[編輯 | 編輯原始碼]

難度:低

我們的第一個資料集是 PiDigits,它具有較低級別的難度,由 NIST 設計,用於檢測計算單變數統計值的缺陷。

PiDigits 的認證值為:

  • 樣本均值:4.53480000000000
  • 樣本標準差:2.86733906028871


檔案:Version12pd.jpg
表 11:SPSS 版本 12.0 對 PiDigits 資料集的結果


如表 13 所示,SPSS 12.0 的結果與 NIST 提供的認證值相符。因此,我們針對均值和標準差的 LRE 為 : 15,: 15。在 7.5 版本中,LRE 值為 : 14.7,: 15。(McCullough,1998)

難度:中等

第二個資料集是 NumAcc3,其難度來自 NIST 資料集的單變數統計平均值。NumAcc3 的認證值為:

  • 樣本均值:1000000.2
  • 樣本標準差:0.1


檔案:Version12na3.jpg
表 12:SPSS 12.0 版本針對 NumAcc3 資料集的結果


從表 14 中我們可以看到,計算出的均值與 NIST 的認證值相同。因此,我們針對均值的 LRE 為 : 15。然而,標準差值與認證值不同。因此,針對標準差的 LRE 計算如下:

 : -log10 |0,10000000003464-0,1|/|0,1| = 9.5

SPSS v 7.5 的 LRE 為 : 15,: 9.5。(McCullough,1998)

難度:高

單變數統計中的最後一個數據集是 NumAcc4,其難度較高。NumAcc4 的認證值為:

  • 樣本均值:10000000.2
  • 樣本標準差:0.1


檔案:Version12na4.jpg
表 13:SPSS 12.0 版本針對 NumAcc4 資料集的結果


對於這個資料集,我們也沒有遇到任何關於計算出的均值的問題。因此,LRE 為 : 15。然而,標準差值與認證值不匹配。因此,我們應該按如下方式計算標準差的 LRE:

 : -log10 |0,10000000056078-0,1|/|0,1| = 8.3

SPSS v 7.5 的 LRE 為 : 15, : 8.3 (McCullough,1998)

對於測試的這一部分,我們可以說 SPSS 的兩個版本之間沒有區別。對於中等和高難度資料集,提供的標準差結果仍然具有中等準確性。

方差分析

[edit | edit source]

難度:低

我們用於測試 SPSS 12.0 針對較低難度級別問題的 資料集是 SiRstv。SiRstv 的認證 F 統計量為 1.18046237440255E+00


檔案:Version12ss.jpg
表 14:SPSS 12.0 版本針對 SiRstv 資料集的結果


  • LRE:: -log10 | 1,18046237440224- 1,18046237440255|/ |1,18046237440255| = 12,58
  • SPSS v 7.5 的 LRE: : 9,6 (McCullough,1998)

難度:中等

我們用於中等難度級別問題的 資料集是 AtmWtAg。AtmWtAg 的認證 F 統計量值為 1.59467335677930E+01。


檔案:Version12awa.jpg
表 15:SPSS 12.0 版本針對 AtmWtAg 資料集的結果


  • LREs :  : -log10 | 15,9467336134506- 15,9467335677930|/| 15,9467335677930| = 8,5
  • SPSS v 7.5 的 LREs : : 丟失

難度:高

我們使用 SmnLsg07 資料集來測試高難度問題。SmnLsg07 的認證 F 值為 2.10000000000000E+01


檔案:Version12sl07.jpg
表 16: SPSS 12.0 版本對資料集 SmnLsg07 的結果


  • LREs :  : -log10 | 21,0381922055595 - 21|/| 21| = 2,7
  • SPSS v 7.5 的 LREs : : 0

在 12.0 版本中計算的方差分析結果比 7.5 版本中計算的結果更好。但是準確度仍然太低。

線性迴歸

[編輯 | 編輯原始碼]

難度:低

我們的低難度資料集是 Norris,用於線性迴歸。Norris 的認證值為:

  • 樣本殘差平方和 : 26.6173985294224
  • 表 17: Norris 的係數估計(www.itl.nist.gov)
  • LREs :  : 9,9  : 12,3  : 10,2
  • SPSS v 7.5 的 LREs : : 9,9 ,  : 12,3 ,  : 10,2 (McCullough, 1998)


檔案:Version12nor.jpg
表 18: SPSS 12.0 版本對資料集 Norris 的結果


難度:中等

我們使用 NoInt1 資料集來測試平均難度資料集的效能。迴歸模型如下:

y = B1*x + e

NoInt1 的認證值 

  • 樣本殘差平方和 : 127,272727272727
  • 係數估計 : 2.07438016528926, 標準差 : 0.16528925619834E-0(www.itl.nist.gov)
  • LREs: :12,8 : 15 : 12,9
  • SPSS v. 7.5 的 LREs : : 12,8 , : 14,7 , : 12,5 (McCullough, 1998)


檔案:Version12nint.jpg
表 19: SPSS 12.0 版本對資料集 NoInt1 的結果


難度:高

我們的高難度資料集是 NIST 設計的 Longley。

  • 模型: y =B0+B1*x1 + B2*x2 + B3*x3 + B4*x4 + B5*x5 + B6*x6 +e
  • LREs 
    • : -log10 |836424,055505842-836424,055505915|/ |836424,055505915| = 13,1
    •  : 15
    •  : -log10 | 0,16528925619836E-01 – 0,16528925619834E-01|/ |0,16528925619834E-01| = 12,9
  • SPSS v. 7.5 的 LREs : : 12,8 ,  : 14,7 ,  : 12,5 (McCullough, 1998)

從計算的 LREs 可以得出結論,兩個版本的線性迴歸結果之間沒有太大差異。

結論

[edit | edit source]

透過應用這些測試,我們試圖找出軟體是否可靠並提供準確的結果。然而,根據結果,我們可以說不同的軟體包對同一個問題的結果不同,這可能會導致我們對統計研究問題的錯誤解讀。

具體來說,我們可以看到 SAS、SPSS 和 S-Plus 在解決線性迴歸問題方面優於 ANOVA 問題。所有這三者在 F 統計量計算方面都提供較差的結果。

從比較 SPSS 的兩個不同版本的結果來看,我們可以得出結論,考慮到版本號之間的差異,SPSS v.12 和 v.7.5 提供的結果的準確性之間的差異並不大。另一方面,SPSS v.12 在處理 ANOVA 問題方面比舊版本好得多。然而,它在更高難度的問題上仍然存在問題。

參考文獻

[edit | edit source]
  • McCullough, B.D. 1998, 'Assessing The Reliability of Ststistical Software: Part I',The American Statistician, Vol.52, No.4, pp.358-366.
  • McCullough, B.D. 1999, 'Assessing The Reliability of Ststistical Software: Part II', The American Statistician, Vol.53, No.2, pp.149-159
  • Sawitzki, G. 1994, 'Testing Numerical Reliability of Data Analysis Systems', Computational Statistics & Data Analysis, Vol.18, No.2, pp.269-286
  • Wilkinson, L. 1993, 'Practical Guidelines for Testing Statistical Software' in 25th Conference on Statistical Computing at Schloss Reisenburg, ed. P. Dirschedl& R. Ostermnann, Physica Verlag
  • National Institute of Standards and Technology. (1 September 2000). The Statistical Reference Datasets: Archives, [Online], Available from: <http://www.itl.nist.gov/div898/strd/general/dataarchive.html> [10 November 2005].
華夏公益教科書