F #에서 첨자 화 기능을 사용하기 위해 formula for skewness을 적용하고 있습니다. 불행히도 다시 잘못된 결과를 반환합니다.f # - 첨자의 회귀 식
여기
let kurtosis_aux (m, m2, m3, m4, k) x =
m + (x - m)/k,
m2 + ((x - m)*(x - m)*(k - 1.0))/k,
m3 + ((x - m)*(x - m)*(x - m)*(k - 1.0)*(k - 2.0))/(k * k) - (3.0 * (x - m) * m2)/k,
m4 + ((x - m)*(x - m)*(x - m)*(x - m)*(k - 1.0)*(k * k - (3.0 * k) + 3.0))/(k * k * k) + 6.0 * (x - m)*(x - m)* m2/(k * k) - (4.0*(x - m)* m3)/k ,
k + 1.0;;
let kurtosis xs =
let _, m2, m3, m4, n = Seq.fold kurtosis_aux (0.0, 0.0, 0.0, 0.0, 1.0) xs
((n - 1.0) * m4/(m2 * m2)) - 3.0;;
마지막으로 난 작은 벡터에서 테스트, 약 2.94631
kurtosis [|9.0; 2.0; 6.0; 3.0; 29.0|];;
을 가야 내 코드입니다하지만 그 대신 FSI는 -0.05369308728를 반환합니다.
오류는 kurtosis_aux 함수의 일부 m4 또는 첨도 함수 자체에 있어야합니다. 다른 변수는 모두 skewness 함수에서 사용되고 올바르게 작동합니다.
다시 한번 나는 모든 도움을 주셔서 대단히 감사합니다.
다시 추가해야합니다. Knuth의 점진적 알고리즘을 사용하여 순간을 계산하고 있습니다. 목표로 삼고있는 수식은 http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance에서 확인할 수 있습니다. –