3

I am looking for a fastest / easiest solution to calculate regression for bunch of double points stored in array.
I have tried to find proper function in Accelerate framework or tutorial but with no luck.

Has anyone done it?

Bhargav Rao
  • 50,140
  • 28
  • 121
  • 140
Lukasz
  • 19,816
  • 17
  • 83
  • 139

1 Answers1

1

Assuming you already knew the parameters of your model, you can do it with matrix-vector multiplication. Linear regression is the inner product of matrix X of samples and vector Theta of the model parameters.

// Simple scenario for linear regression: Y = theta0 + theta1*X
int rows = 4;
int cols = 2;
double theta[] = {5.0, 2.0};
double x[] = {1.0, 10.0, 
              1.0, 20.0, 
              1.0, 30.0, 
              1.0, 40.0};
double y[rows];

// This is matrix-matrix multiplication function, 
// but vector is just a matrix with one row/column. 
vDSP_mmulD(x, 1, theta, 1, y, 1, rows, 1, cols);

NSLog(@"[%f, %f, %f, %f]", y[0], y[1], y[2], y[3]);

[25.000000, 45.000000, 65.000000, 85.000000]

For more details read intro to linear regression on wikipedia

Mykola Pavlov
  • 686
  • 1
  • 9
  • 9