統計學/數值方法/統計軟體數值比較
統計計算需要額外的精度,並容易受到截斷和抵消誤差等錯誤的影響。這些錯誤是由於二進位制表示和有限精度造成的,可能會導致不準確的結果。在這項工作中,我們將討論統計軟體的準確性,以及用於測量準確性的不同測試和方法,以及不同軟體包的比較。
準確性可以定義為結果的正確性。在使用統計軟體包時,假設結果是正確的,以便對這些結果進行評論。但是,必須承認計算機有一些限制。主要問題是計算機系統提供的可用精度通常有限。很明顯,統計軟體無法提供超過這些限制的準確結果。但是,統計軟體應該認識到它的限制,並清楚地表明這些限制已經達到。我們今天通常使用兩種型別的精度
- 單精度
- 雙精度
二進位制表示和有限精度會導致不準確 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) 之間的差異。一個常用的指標是對數相對誤差或 LRE(正確有效數字的位數)(McCullough,1998)
規則
- q 應該接近 c(小於 2 位數)。如果它們不接近,則將 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 位有效數字的認證值。
在 ANOVA 資料集組中,有 11 個數據集,難度級別分別為:4 個低、4 箇中等和 3 個高。為每個資料集提供了處理間自由度、處理內自由度、平方和、均方差、F 統計量、 和殘差標準差的 15 位有效數字的認證值。由於大多數認證值用於計算 F 統計量,因此,我們將僅比較其 LRE 與統計軟體包的結果。
為了測試統計軟體的線性迴歸結果,NIST 提供了 11 個數據集,難度級別分別為 2 個低、2 箇中等和 7 個高。對於每個資料集,我們都有係數估計、係數標準誤差、殘差標準差、、線性迴歸方差分析表(包含殘差平方和)的 15 位有效數字的認證值。我們將比較最小準確係數的 LRE 、標準誤差 和殘差平方和 。在非線性迴歸資料集組中,NIST 設計了 27 個數據集,難度級別分別為 8 個低、11 箇中等和 8 個高。對於每個資料集,我們都有 NIST 提供的係數估計、係數標準誤差、殘差平方和、殘差標準差和自由度的 11 位有效數字的認證值。
在非線性迴歸計算的情況下,我們應用曲線擬合方法。在這種方法中,我們需要起始值來初始化方程中的每個變數。然後我們生成曲線並計算收斂準則(例如,平方和)。然後我們調整變數以使曲線更接近資料點。有幾種調整變數的演算法
- Marquardt 和 Levenberg 方法
- 線性下降法
- 高斯-牛頓法
其中一種方法被反覆應用,直到收斂準則的變化小於收斂容差。
NIST 還提供了兩組起始值:起始 I(遠離解的值),起始 II(接近解的值)。將起始 II 作為初始值更容易獲得精確的解。因此,將優先考慮起始 I 解決方案。
其他重要設定如下
- 收斂容差(例如 1E-6)
- 解法(例如高斯-牛頓法或 Levenberg-Marquardt 法)
- 收斂準則(例如殘差平方和 (RSS) 或引數差的最大值的平方)
我們也可以在數值導數和解析導數之間進行選擇。
測試示例
[edit | edit source]測試軟體包:SAS、SPSS 和 S-Plus
[edit | edit source]在本部分中,我們將討論 M.D. McCullough 應用的三個統計軟體包的測試結果。在 McCullough 的工作中,SAS 6.12、SPSS 7.5 和 S-Plus 4.0 被測試並比較了 NIST 提供的認證 LRE 值。比較將根據以下部分進行處理
- 單變數統計
- 方差分析
- 線性迴歸
- 非線性迴歸
單變數統計
[edit | edit source]
在 SAS 中計算的所有值似乎或多或少都是準確的。對於資料集 NumAcc1,由於觀察次數不足,無法計算 p 值。對於資料集 NumAcc3(平均難度)和 NumAcc 4(高難度)計算標準差似乎會給 SAS 帶來壓力。

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

為均值和標準差計算的所有值似乎或多或少都是準確的。S-Plus 在計算資料集 NumAcc3 和 -4 的標準差時也遇到了問題。S-Plus 在計算 p 值方面表現不佳。
方差分析
[edit | edit source]
結果
- SAS 只能解決低難度級別的方差分析問題。
- 對於中等或更高難度的資料集,F 統計量可以以非常差的效能和 0 位數字精度計算。
- SPSS 可以像 SAS 一樣,為低難度級別的資料集顯示準確的結果。
- SPSS 在計算方差分析方面的效能很差。
- 對於資料集“AtmWtAg”,SPSS 沒有顯示任何 F 統計量,這似乎比顯示 0 精度結果更合理。
- S-Plus 在處理方差分析問題方面比其他軟體包更出色。
- 即使對於更高難度的資料集,S-Plus 也能顯示比其他軟體包更準確的結果。但對於高難度資料集的結果仍然不夠準確。
- S-Plus 可以以足夠的精度解決中等難度的問題。
線性迴歸
[edit | edit source]
SAS 無法為資料集 Filip 提供解決方案,Filip 是一個十次多項式。除了 Filip 之外,SAS 顯示的結果或多或少都是準確的。但對於更高難度的資料集,效能似乎下降,尤其是在計算係數方面。

SPSS 在處理“Filip”(一個 10 次多項式)時也遇到了問題。許多軟體包無法計算其值。與 SAS 一樣,SPSS 為高難度資料集提供了較低的準確性。

S-Plus 是唯一能夠為資料集“Filip”提供結果的軟體包。Filip 結果的準確性似乎並不差,而是處於中等水平。即使對於更高難度的資料集,S-Plus 也能計算出比其他軟體包更準確的結果。只有資料集“Wrampler4”和“-5”的係數低於平均準確度。
非線性迴歸
[edit | edit source]
對於非線性迴歸,每個軟體包都測試了兩種設定組合,因為不同的設定會對結果產生影響。正如我們從表格中看到的那樣,在 SAS 中,首選組合產生的結果比預設組合更好。在本表格中,使用預設組合產生的結果位於括號內。由於 NIST 為認證值提供了 11 位數字,因此我們尋找 LRE 值為 11 的值。
首選組合
- 方法:高斯-牛頓法
- 準則:PARAM
- 容差:1E-6

同樣在 SPSS 中,首選組合顯示出比預設選項更好的效能。所有問題都在初始值“起始 I”下得到解決,而在 SAS 中,更高難度級別的資料集是在起始 II 值下得到解決的。
首選組合
- 方法:Levenberg-Marquardt 法
- 準則:PARAM
- 容差:1E-12

正如我們從表格中看到的那樣,首選組合在 S-Plus 中也比預設組合更好。除“MGH10”以外的所有問題都在初始值“起始 I”下得到解決。我們可以說,S-Plus 在計算非線性迴歸方面比其他軟體表現更好。
首選組合
- 方法:高斯-牛頓法
- 準則:RSS
- 容差:1E-6
比較結果
[edit | edit source]所有軟體包都為單變數統計中的均值和標準差提供了準確的結果。測試的統計軟體包之間沒有太大區別。在方差分析計算中,SAS 和 SPSS 無法透過中等難度級別的問題,而 S-Plus 提供的結果比其他軟體包更準確。但對於高難度資料集,它也產生了較差的結果。關於線性迴歸問題,所有軟體包似乎都可靠。如果我們檢查所有軟體包的結果,我們可以說在計算非線性迴歸結果方面的成功很大程度上取決於所選擇的選項。
其他重要結果如下
- S-Plus 從起始 II 開始解決了一次。
- SPSS 從未將起始 II 作為初始值使用,但有一次產生了 0 精度數字。
- SAS 使用了三次起始 II,每次都產生了 0 精度數字。
不同版本的 SPSS 比較
[edit | edit source]在本部分,我們將比較舊版和新版 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
從表 13 中可以看出,SPSS 12.0 的結果與 NIST 提供的認證值匹配。因此,我們對均值和標準差的 LRE 為 : 15,: 15。在 7.5 版中,LRE 值為 : 14.7,: 15。(McCullough,1998)
難度:中等
第二個資料集是 NumAcc3,它來自 NIST 資料集,在單變數統計方面難度中等。NumAcc3 的認證值如下:
- 樣本均值:1000000.2
- 樣本標準差:0.1
在表 14 中,我們可以看到計算出的均值與 NIST 的認證值相同。因此,我們對均值的 LRE 為 : 15。但是,標準差值與認證值不同。因此,計算標準差的 LRE 如下所示:
SPSS 7.5 版的 LRE 為 : 15,: 9.5。(McCullough,1998)
難度:高
單變數統計中的最後一個數據集是 NumAcc4,難度級別很高。NumAcc4 的認證值如下:
- 樣本均值:10000000.2
- 樣本標準差:0.1
對於這個資料集,我們也沒有遇到任何計算均值方面的問題。因此,LRE 為 : 15。但是,標準差值與認證值不匹配。因此,我們應該計算標準差的 LRE 如下所示:
:-log10 |0,10000000056078-0,1|/|0,1| = 8.3
SPSS 7.5 版的 LRE 為 : 15,:8.3(McCullough,1998)
對於我們測試的這一部分,可以說 SPSS 的兩個版本之間沒有差異。對於中等和高難度資料集,提供的標準差結果仍然具有平均準確性。
難度:低
我們用於測試 SPSS 12.0 關於低難度級別問題的 dataset 是 SiRstv。SiRstv 的認證 F 統計量為 1.18046237440255E+00。
- LRE::-log10 | 1,18046237440224- 1,18046237440255|/ |1,18046237440255| = 12,58
- SPSS 7.5 版的 LRE::9,6(McCullough,1998)
難度:中等
我們用於測試中等難度級別問題的 dataset 是 AtmWtAg。AtmWtAg 的認證 F 統計量值為 1.59467335677930E+01。
- LREs : : -log10 | 15,9467336134506- 15,9467335677930|/| 15,9467335677930| = 8,5
- SPSS v 7.5 的 LREs : : 缺失
難度:高
我們使用資料集 SmnLsg07 來測試高難度問題。SmnLsg07 的認證 F 值為 2.10000000000000E+01
- LREs : : -log10 | 21,0381922055595 - 21|/| 21| = 2,7
- SPSS v 7.5 的 LREs : : 0
在 12.0 版本中計算的 ANOVA 結果優於 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)
難度:中等
我們使用資料集 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)
難度:高
我們的高難度資料集是 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].
