diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 090a868..0000000 --- a/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -sudo: false -language: go -go: -- 1.8.x -- 1.9.x -- 1.10.x -- tip - -notifications: - email: - - infra@sajari.com diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..d4f0d63 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module github.com/lamrongol/regression + +go 1.24.1 + +require gonum.org/v1/gonum v0.16.0 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..83477d1 --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= diff --git a/regression.go b/regression.go index d5f76fb..5bc62ca 100644 --- a/regression.go +++ b/regression.go @@ -31,6 +31,7 @@ type Regression struct { Formula string crosses []featureCross hasRun bool + residual_sum_of_squares float64 } type dataPoint struct { @@ -233,15 +234,21 @@ func (r *Regression) calcPredicted() string { observations := len(r.data) var predicted float64 var output string + r.residual_sum_of_squares = 0.0 for i := 0; i < observations; i++ { r.data[i].Predicted, _ = r.Predict(r.data[i].Variables) r.data[i].Error = r.data[i].Predicted - r.data[i].Observed + r.residual_sum_of_squares += r.data[i].Error * r.data[i].Error output += fmt.Sprintf("%v. observed = %v, Predicted = %v, Error = %v", i, r.data[i].Observed, predicted, r.data[i].Error) } return output } +func (r *Regression) GetResidualSumOfSquares() float64 { + return r.residual_sum_of_squares +} + func (r *Regression) calcVariance() string { observations := len(r.data) var obtotal, prtotal, obvar, prvar float64