mirror of
https://github.com/gonum/gonum.git
synced 2025-10-05 23:26:52 +08:00
stat: Improve documentation and test for Moment (#248)
This commit is contained in:
@@ -903,6 +903,7 @@ func BivariateMoment(r, s float64, x, y, weights []float64) float64 {
|
|||||||
// If weights is nil then all of the weights are 1. If weights is not nil, then
|
// If weights is nil then all of the weights are 1. If weights is not nil, then
|
||||||
// len(x) must equal len(weights).
|
// len(x) must equal len(weights).
|
||||||
func Moment(moment float64, x, weights []float64) float64 {
|
func Moment(moment float64, x, weights []float64) float64 {
|
||||||
|
// This also checks that x and weights have the same length.
|
||||||
mean := Mean(x, weights)
|
mean := Mean(x, weights)
|
||||||
if weights == nil {
|
if weights == nil {
|
||||||
var m float64
|
var m float64
|
||||||
@@ -916,8 +917,9 @@ func Moment(moment float64, x, weights []float64) float64 {
|
|||||||
sumWeights float64
|
sumWeights float64
|
||||||
)
|
)
|
||||||
for i, v := range x {
|
for i, v := range x {
|
||||||
m += weights[i] * math.Pow(v-mean, moment)
|
w := weights[i]
|
||||||
sumWeights += weights[i]
|
m += w * math.Pow(v-mean, moment)
|
||||||
|
sumWeights += w
|
||||||
}
|
}
|
||||||
return m / sumWeights
|
return m / sumWeights
|
||||||
}
|
}
|
||||||
|
@@ -1178,6 +1178,9 @@ func TestMoment(t *testing.T) {
|
|||||||
if !Panics(func() { Moment(1, make([]float64, 3), make([]float64, 2)) }) {
|
if !Panics(func() { Moment(1, make([]float64, 3), make([]float64, 2)) }) {
|
||||||
t.Errorf("Moment did not panic with x, weights length mismatch")
|
t.Errorf("Moment did not panic with x, weights length mismatch")
|
||||||
}
|
}
|
||||||
|
if !Panics(func() { Moment(1, make([]float64, 2), make([]float64, 3)) }) {
|
||||||
|
t.Errorf("Moment did not panic with x, weights length mismatch")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMomentAbout(t *testing.T) {
|
func TestMomentAbout(t *testing.T) {
|
||||||
|
Reference in New Issue
Block a user