2013年7月25日 星期四

變異係數與標準差

評估兩組數據的穩定度時, 譬如兩個企業的營益率變化, 應該使用變異係數, 而不是標準差, 因為不同公司的營益率會有不同水準. 根據維基的解釋 :

"變異係數只對由比率純量計算出來的數值有意義, 變異係數是一個無因次量, 因此在比較兩組因次不同或均值不同的數據時, 應該用變異係數而不是標準差來作為比較的參考。"

變異係數=標準差/平均值

變異係數 CV : http://mybidrobot.allalla.com/finance/cv.php [看原始碼]

我們用一個簡單程式來說明, 例如一組五個數據 : 100,100,100,100,100, 標準差與變異係數當然是 0, 如果其中一個數據由 100 降一半為 50,100,100,100,100, 那麼標準差是 22.361, 而變異係數是 25. 這跟 10,20,20,20,20 這組同樣是有一個數據降一半的變異係數是一樣的, 都是 25, 但這組標準差是 4.472. 所以看標準差是無法比較的, 要化成變異係數去比. 這種除以平均值的手法其實也就是所謂的正規化的一種方式, 所以, 變異係數可以說是正規化的標準差.

$arr=Array(50,100,100,100,100);
$sum=0; //總和
$square=0;  //平方和
$count=count($arr);
for ($j=0; $j<$count $j++) { 
       $sum += $arr[$j]; //和累計
       $square += pow($arr[$j], 2); //平方和累計 (計算標準差用)
       } //end of for
$avg=round($sum/$count,2);  //計算平均值
$std=sqrt(($square-pow($sum,2)/
$count)/($count-1)); //計算樣本標準差
if ($avg != 0) {$CV=round(100*$std/$avg);}  // //計算變異係數
else {$CV=9999;}  //表示極大值


沒有留言 :