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
|
||||
// len(x) must equal len(weights).
|
||||
func Moment(moment float64, x, weights []float64) float64 {
|
||||
// This also checks that x and weights have the same length.
|
||||
mean := Mean(x, weights)
|
||||
if weights == nil {
|
||||
var m float64
|
||||
@@ -916,8 +917,9 @@ func Moment(moment float64, x, weights []float64) float64 {
|
||||
sumWeights float64
|
||||
)
|
||||
for i, v := range x {
|
||||
m += weights[i] * math.Pow(v-mean, moment)
|
||||
sumWeights += weights[i]
|
||||
w := weights[i]
|
||||
m += w * math.Pow(v-mean, moment)
|
||||
sumWeights += w
|
||||
}
|
||||
return m / sumWeights
|
||||
}
|
||||
|
@@ -1178,6 +1178,9 @@ func TestMoment(t *testing.T) {
|
||||
if !Panics(func() { Moment(1, make([]float64, 3), make([]float64, 2)) }) {
|
||||
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) {
|
||||
|
Reference in New Issue
Block a user