Multiple regression: Difference between revisions

From Rosetta Code
Content added Content deleted
m (Force PNG rendering on formulas)
m (Added to matrix cat)
Line 1: Line 1:
{{task}}
{{task|Matrices}}
Given a set of data vectors in the following format:
Given a set of data vectors in the following format:



Revision as of 18:23, 29 June 2009

Task
Multiple regression
You are encouraged to solve this task according to the task description, using any language you may know.

Given a set of data vectors in the following format:

Compute the vector using ordinary least squares regression using the following equation:

You can assume y is given to you as an array, and x is given to you as a two-dimensional array.

Ruby

Using the standard library Matrix class:

<lang ruby>require 'matrix'

def regression_coefficients y, x

 y = Matrix.column_vector y.map { |i| i.to_f }
 x = Matrix.columns x.map { |xi| xi.map { |i| i.to_f }}
 (x.t * x).inverse * x.t * y

end </lang>

Testing: <lang ruby> regression_coefficients([1, 2, 3, 4, 5], [ [2, 1, 3, 4, 5] ]) # => Matrix0.981818181818182 </lang>