老賈所在的項目組重點測試金融業(yè)務(wù)的BI工具,于是自然會有很多數(shù)理統(tǒng)計方面的需求。這幾天,他們就碰到了一個關(guān)于標(biāo)準(zhǔn)差(Standard Deviation)計算的問題。
小科普
標(biāo)準(zhǔn)差(Standard Deviation),又稱均方差,是離均差平方的算術(shù)平均數(shù)的平方根,用σ表示。標(biāo)準(zhǔn)差是方差的算術(shù)平方根。標(biāo)準(zhǔn)差能反映一個數(shù)據(jù)集的離散程度。
在金融投資領(lǐng)域,標(biāo)準(zhǔn)差經(jīng)常被用來衡量投資的風(fēng)險。
基于同一批數(shù)據(jù)在兩個地方計算的標(biāo)準(zhǔn)差值有時候就會不一致。從系統(tǒng)的數(shù)據(jù)表中直接取出的標(biāo)準(zhǔn)差σ,要比業(yè)務(wù)場景中計算出來的σ’略大那么一點點。用Excel里面提供的STDEV函數(shù)去驗證,和從表中取出的標(biāo)準(zhǔn)差σ又是一致的。看起來,應(yīng)該是開發(fā)同學(xué)在業(yè)務(wù)場景計算時,哪里弄錯了。那必須要報一個BUG啊~~
關(guān)于數(shù)據(jù)錯誤,開發(fā)同學(xué)們也很重視,一起分析這個場景。可是很快事情出現(xiàn)了反轉(zhuǎn)。看起來似乎不是他們的BUG,而是Oracle數(shù)據(jù)庫的默認(rèn)計算規(guī)則埋的鍋。
原來,在標(biāo)準(zhǔn)差的計算中,一般會有兩種:
STDEV,計算樣本的標(biāo)準(zhǔn)差
STDEVP,計算樣本總體的標(biāo)準(zhǔn)差
借用度娘給的解釋:
直接取的數(shù)據(jù)庫值是Oracle默認(rèn)提供的標(biāo)準(zhǔn)差計算規(guī)則,即STDEV,畢竟這個屬于主流場景啊;而回到我們的業(yè)務(wù)場景,還似乎真的是對數(shù)據(jù)總集的應(yīng)用,所以用上STDEVP是非常合理的。而且往往因為數(shù)據(jù)總集的量足夠大,考慮到四舍五入的因素,兩者的數(shù)據(jù)偏差在現(xiàn)實場景中往往可以忽略不計,一直以來危害也沒有爆發(fā)出來。
于是,這個問題的結(jié)論就是Oracle的“自做主張”所帶來的,而解決的方案自然是人為地再揪回來。關(guān)于默認(rèn)值、尤其是默認(rèn)算法,在測試的環(huán)節(jié)會是一個需要特別關(guān)注的點;尤其是現(xiàn)在無論是用戶還是碼農(nóng),都有越來越“懶”的趨勢。
現(xiàn)實中,也經(jīng)常有一些軟件提供的“智能化”處理,不僅沒有帶來便利,反而帶來了一些困擾。測略君一直以來都有著和Word關(guān)于自動格式調(diào)整功能進行斗爭的經(jīng)驗,當(dāng)中郁悶之經(jīng)歷可謂不勝枚舉;目前,又在和新入手的華為手機自帶的輸入法進行艱難的磨合。
更高的層面就是現(xiàn)在很火的人工智能。近期阿爾法狗戰(zhàn)勝柯潔,實現(xiàn)全滿貫,可謂舉世關(guān)注。其結(jié)果對于我們IT行業(yè)的人而言倒不意外,但是同期還舉行的阿爾法狗與人組隊的配對賽,其過程則著實讓我吃驚不小。與古力組隊的AlphaGo在判定局面已經(jīng)失利的情況下,即使隊友古力仍然試圖堅持,它卻我行我素地扯后腿,采用自暴自棄的下法,逼著古力投子認(rèn)輸。這樣的自作主張,確實讓人細(xì)思極恐。