Software
測試統計軟件
哪些技術/方法可用於測試統計軟件?我對使用最大似然進行參數估計的程序特別感興趣。
將結果與其他程序或已發布來源的結果進行比較並不總是可能的,因為大多數時候我編寫自己的程序是因為我需要的計算尚未在現有系統中實現。
我並不堅持可以保證正確性的方法。我會對可以捕捉到部分錯誤的技術感到滿意。
一種有用的技術是蒙特卡羅測試。如果有兩種算法做同樣的事情,實現兩者,給它們提供隨機數據,並檢查(在數值模糊的小公差範圍內)它們產生相同的答案。我以前做過幾次:
- 我寫了一個高效但難以實現Kendall 的 Tau B 的實現。為了測試它,我編寫了一個非常簡單的 50 行實現,運行在.
- 我寫了一些代碼來做嶺回歸。執行此操作的最佳算法取決於您是否在或者案例,所以無論如何我需要兩種算法。
在這兩種情況下,我都在 D 編程語言中實現了相對知名的技術(沒有實現),所以我還對照 R 檢查了一些結果。儘管如此,蒙特卡羅測試發現了我永遠不會發現的錯誤.
另一個很好的測試是asserts。您可能不確切知道計算的正確結果應該是什麼,但這並不意味著您不能在計算的各個階段執行完整性檢查。在實踐中,如果你的代碼中有很多這些並且它們都通過了,那麼代碼通常是正確的。
編輯:第三種方法是提供算法數據(合成的或真實的),您至少大致知道正確答案是什麼,即使您不確切知道,並通過檢查查看答案是否合理。例如,您可能不確切知道參數的估計值是多少,但您可能知道哪些應該是“大”的,哪些應該是“小”的。