2016-07-13 3 views
2

Я стараюсь, чтобы соответствовать линейной модели (и получить R^2) в следующих тестовых данныхМесто линейной модели в Scalanlp/Бриз

0.0 0.0 
1.0 1.0 
2.0 2.0 
3.0 3.1 

Я написал следующий код, используя scalanlp/ветер 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 

Intercept и наклон являются разумными, но я не понимаю, R-квадрат, это должно быть Клоса e to 1!

ответ

1

Ваш вектор из них должен быть последним не первым. Следовательно, вы ожидали r^2 = 1-r_e^2.

EDIT: В то время как то, что я сказал выше, верно относительно переключения вокруг вашего вектора 1s. Я все еще получаю ужасно неправильный r-squared, а также даже используя это. Мой уклон и перехват - это место, хотя, как и ваше. Итак ... к исходному коду!

EDIT2: Известная проблема. Не исправлено. shrug

Смежные вопросы