[問題] 算標準差

看板Statistics作者 (猜猜偶素隨 ? ^*^)時間15年前 (2010/11/22 20:06), 編輯推噓0(005)
留言5則, 2人參與, 最新討論串1/1
最近在實作一個演算法 原理需要用到標準差的計算 因為資料 是隨時間增加的 所以希望 標準差也能隨時間變動來運算 現在問題來了 我目前求標準差的方式就是直接代公式: SD = sqrt( sum( pow((xi - avg),2) ) for i = 1 to inf 其中 sqrt是取平方 sum 是總和 pow那塊是平方 xi是樣本 avg是平均 利用上述公式 求得標準差是沒有問題的 但是資料越來越多 所需的運算量也越來越大 所以想請教一下 有沒有辦法 在每一筆資料加入時只需做少量運算(不必全部重算) 就能得到新的標準差 目前找到的方法 似乎都要新增兩筆以上的資料 因為一筆資料沒有定義標準差 如果沒有好的辦法~也歡迎大家來討論討論~謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.160.242

11/22 22:26, , 1F
S^2_{n+1} = (n-1)S^2_n/n +(x_{n+1}-xbar_n)^2/(n+1)
11/22 22:26, 1F

11/22 22:26, , 2F
xbar_{n+1}=(n*xbar_n+x_{n+1})/(n+1)
11/22 22:26, 2F

11/22 22:27, , 3F
以上 xbar_n 表 n 個資料之平均數, s^2_n 表 n 個資料變異數
11/22 22:27, 3F

11/22 22:28, , 4F
其中變異數(標準差的平方)是以 (資料數-1) 為分母.
11/22 22:28, 4F

11/29 10:11, , 5F
如果不用相等權數,EWMA也許是個不錯的方法。
11/29 10:11, 5F
文章代碼(AID): #1CwbpZ03 (Statistics)