作者Anonymoux (猜猜偶素隨 ? ^*^)
看板Statistics
標題[問題] 算標準差
時間Mon Nov 22 20:06:56 2010
最近在實作一個演算法
原理需要用到標準差的計算
因為資料 是隨時間增加的
所以希望 標準差也能隨時間變動來運算
現在問題來了
我目前求標準差的方式就是直接代公式:
SD = sqrt( sum( pow((xi - avg),2) ) for i = 1 to inf
其中 sqrt是取平方 sum 是總和 pow那塊是平方 xi是樣本 avg是平均
利用上述公式 求得標準差是沒有問題的
但是資料越來越多 所需的運算量也越來越大
所以想請教一下 有沒有辦法
在每一筆資料加入時只需做少量運算(不必全部重算) 就能得到新的標準差
目前找到的方法 似乎都要新增兩筆以上的資料
因為一筆資料沒有定義標準差
如果沒有好的辦法~也歡迎大家來討論討論~謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.204.160.242
1F:→ yhliu:S^2_{n+1} = (n-1)S^2_n/n +(x_{n+1}-xbar_n)^2/(n+1) 11/22 22:26
2F:→ yhliu:xbar_{n+1}=(n*xbar_n+x_{n+1})/(n+1) 11/22 22:26
3F:→ yhliu:以上 xbar_n 表 n 個資料之平均數, s^2_n 表 n 個資料變異數 11/22 22:27
4F:→ yhliu:其中變異數(標準差的平方)是以 (資料數-1) 為分母. 11/22 22:28
5F:→ virginfish:如果不用相等權數,EWMA也許是個不錯的方法。 11/29 10:11