Я пытаюсь подогнать линейную модель (и получить R^2) к следующим тестовым данным.
0.0 0.0
1.0 1.0
2.0 2.0
3.0 3.1
Я написал следующий код, используя scalanlp/breeze 0.12:
import breeze.linalg.{DenseMatrix, DenseVector}
import breeze.stats.regression.leastSquares
val indep = DenseMatrix((1.0, 0.0), (1.0, 1.0), (1.0, 2.0), (1.0, 3.0))
val dep = DenseVector(0.0, 1.0, 2.0, 3.1)
val result = leastSquares(indep, dep)
println("intercept=" + result.coefficients.data(0))
println("slope=" + result.coefficients.data(1))
println("r^2=" + result.rSquared)
вывод:
intercept=-0.020000000000000018
slope=1.03
r^2=0.0014623322596666252
Перехват и наклон разумны, но я не понимаю R-квадрат, он должен быть близок к 1!