Есть ли функция для расчета линейной регрессии для массива точек в Accelerate Framework для iPhone? - PullRequest
3 голосов
/ 31 мая 2011

Я ищу самое быстрое / простое решение для вычисления регрессии для группы двойных точек, хранящихся в массиве.
Я попытался найти подходящую функцию в фреймворке или учебнике Accelerate, но безуспешно.

Кто-нибудь делал это?

1 Ответ

1 голос
/ 25 сентября 2013

Предполагая, что вы уже знали параметры своей модели, вы можете сделать это с помощью умножения матрицы на вектор.Линейная регрессия - это внутреннее произведение матрицы X выборок и векторов Тета параметров модели.

// 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]

Подробнее см. введение в линейную регрессию в Википедии

...