我尝试将线性模型(并获得R ^ 2)拟合到以下测试数据
sudo chmod 777 *
我使用scalanlp / breeze 0.12编写了以下代码:
0.0 0.0
1.0 1.0
2.0 2.0
3.0 3.1
输出是:
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)
拦截和坡度是合理的,但我不了解R平方,它应该接近1!
答案 0 :(得分:1)
你的矢量需要不是第一个。因此,您预期r^2 = 1-r_e^2
。
编辑:虽然我上面所说的关于切换你的1s矢量是正确的。即使使用它,我仍然得到一个可怕的不正确的r平方。我的坡度和拦截虽然很像,但很像你的。所以...到源代码!
EDIT2:已知问题。哈斯已经修好了。 耸肩