class FlexStationData::LinearRegression

Attributes

min_r_squared[R]
x[R]
y[R]

Public Class Methods

new(x, y, min_r_squared: 0.0, **) click to toggle source
# File lib/flex_station_data/linear_regression.rb, line 10
def initialize(x, y, min_r_squared: 0.0, **)
  @x = x
  @y = y
  @min_r_squared = min_r_squared.to_f
end

Public Instance Methods

intercept() click to toggle source
# File lib/flex_station_data/linear_regression.rb, line 20
def intercept
  coefficients[0]
end
quality() click to toggle source
# File lib/flex_station_data/linear_regression.rb, line 30
def quality
  "poor fit" if r_squared.present? && r_squared < min_r_squared
end
r_squared() click to toggle source
# File lib/flex_station_data/linear_regression.rb, line 24
def r_squared
  @r_squared ||= line_fit.rSquared
rescue TypeError
  nil
end
slope() click to toggle source
# File lib/flex_station_data/linear_regression.rb, line 16
def slope
  coefficients[1]
end

Private Instance Methods

coefficients() click to toggle source
# File lib/flex_station_data/linear_regression.rb, line 36
def coefficients
  @coefficients ||= line_fit.coefficients
rescue TypeError
  [ nil, nil ]
end
line_fit() click to toggle source
# File lib/flex_station_data/linear_regression.rb, line 42
def line_fit
  @line_fit ||= LineFit.new.tap { |lf| lf.setData(x, y) }
end