2
我試圖在F#中使用Knuth的遞歸公式來製作一個偏斜函數,這個公式是基於Jon Harrop的F#中科學家方差的公式。F#中的偏度遞歸公式#
這裏是我的代碼,(有一個輔助功能)
let skewness_aux (m, m2, m3, k) x =
let m' = m + (x - m)/k
let m2' = m2 + ((x - m)*(x - m)*(k-1.0))/k
m', m2', m3 + (x-m)*(x-m)*(x-m)*(k-1.0)*(k-2.0)/(k*k)-(3.0*(x-m)*m2)/k, k + 1.0;;
let skewness xs =
let _, m2, m3, n2 = Seq.fold skewness_aux (0.0, 0.0, 0.0, 1.0) xs
(sqrt(n2) * m3)/(sqrt (m2*m2*m2));;
最後一個小測試 -
skewness [|2.0; 2.0; 3.0|];;
應返回1 /(SQRT2)約0.707107,而是給我0.8164965809
比我的任何明智的頭都得到任何意見,爲什麼它不工作?公式看起來是正確的。我正在使用維基百科頁面提供關於更高時刻功能的算法以及Pebay的2008年關於該主題的論文進行交叉檢查。
非常感謝任何和所有幫助。
很棒的地方。非常感謝!看起來它現在正在工作。 –