2
私は科学者のためのJon HarropのF#の分散の式に基づいて、Knuthの再帰式を使用して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|];;
0.707107約1 /(SQRT2)を返す必要がありますが、代わりに与えています私は0.8164965809
私の頭よりも賢明な頭部は、それが動作していない理由についてのアドバイスを得た?数式は正しいように見えます。私はより高いモーメント機能のためのアルゴリズムに関するウィキペディアページと、クロスチェックの対象となるPebayの2008年の論文を使用しています。
事前にご協力いただきありがとうございます。
グレートスポット。どうもありがとうございます!今働いているように見えます。 –