comparison pkg/controllers/gauges.go @ 3091:cec9d4af5f03

Simplified and fixed Nash Sutcliffe calculation.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 23 Apr 2019 10:10:54 +0200
parents 342c7bcb97f1
children 7dc9660df743
comparison
equal deleted inserted replaced
3090:342c7bcb97f1 3091:cec9d4af5f03
556 type coeffs struct { 556 type coeffs struct {
557 When models.ImportTime `json:"when"` 557 When models.ImportTime `json:"when"`
558 Coeffs []coeff `json:"coeffs"` 558 Coeffs []coeff `json:"coeffs"`
559 } 559 }
560 560
561 var measurements []common.NSMeasurement 561 var predicted, observed []float64
562 562
563 cs := make([]coeff, 3) 563 cs := make([]coeff, 3)
564 for i := range cs { 564 for i := range cs {
565 cs[i].Hours = (i + 1) * 24 565 cs[i].Hours = (i + 1) * 24
566 back := when.Add(time.Duration(-cs[i].Hours) * time.Hour) 566 delta := -time.Duration(-cs[i].Hours) * time.Hour
567 567
568 for j := range values { 568 for j := range values {
569 if predicted, ok := values[j].predicted.Interpolate(back); ok { 569 when := values[j].when.Add(delta)
570 measurements = append(measurements, common.NSMeasurement{ 570 if p, ok := values[j].predicted.Interpolate(when); ok {
571 Observed: values[j].observed, 571 predicted = append(predicted, p)
572 Predicted: predicted, 572 observed = append(observed, values[j].observed)
573 })
574 } 573 }
575 } 574 }
576 575
577 cs[i].Value, cs[i].Samples = common.NashSutcliffe( 576 cs[i].Value = common.NashSutcliffe(predicted, observed)
578 measurements, 577 cs[i].Samples = len(predicted)
579 when, 578
580 back, 579 predicted = predicted[:0]
581 ) 580 observed = observed[:0]
582
583 measurements = measurements[:0]
584 } 581 }
585 582
586 jr = JSONResult{ 583 jr = JSONResult{
587 Result: &coeffs{ 584 Result: &coeffs{
588 When: models.ImportTime{Time: when}, 585 When: models.ImportTime{Time: when},