Обобщенный метод наименьших квадратов на большом наборе данных - PullRequest
1 голос
/ 08 марта 2012

Я хотел бы линейно подогнать данные, которые НЕ были выбраны независимо.Я столкнулся с обобщенным методом наименьших квадратов:

b=(X'*V^(-1)*X)^(-1)*X'*V^(-1)*Y

Уравнение в формате Matlab;X и Y - это координаты точек данных, а V - это "матрица отклонений".

Проблема в том, что из-за своего размера (1000 строк и столбцов) матрица V становитсяединственное число, таким образом, необратимое.Любые предложения о том, как обойти эту проблему?Может быть, использовать способ решения обобщенной задачи линейной регрессии, кроме GLS?Инструменты, которые у меня есть и которые (немного) знакомы, это Numpy / Scipy, R и Matlab.

Ответы [ 2 ]

2 голосов
/ 08 марта 2012

Вместо:

b=(X'*V^(-1)*X)^(-1)*X'*V^(-1)*Y

Использовать

b= (X'/V *X)\X'/V*Y

То есть заменить все экземпляры X*(Y^-1) на X/Y.Matlab пропустит вычисление обратного (сложного и подверженного ошибкам) ​​и непосредственно вычислит деление.


Редактировать: Даже при наилучшем манипулировании матрицей некоторые операции невозможны (например, приводят к ошибкам)как вы описываете).

Пример того, что может иметь отношение к вашей проблеме, - если попытаться решить проблему наименьших квадратов при ограничении, то множественные измерения идеально, на 100% коррелированы.За исключением редких, вырожденных случаев, это не может быть достигнуто ни в математике, ни физически.Вам нужна некоторая независимость в измерениях, чтобы учесть шум измерений или ошибки моделирования.Например, если у вас есть два измерения, каждое с дисперсией 1 и идеально коррелированные, тогда ваша матрица V будет выглядеть так:

V = [1   1; ...
     1   1];

И вы никогда не сможете соответствоватьданные.(Как правило, это означает, что вам необходимо переформулировать свои базовые функции, но это более длинное эссе.)

Однако, если вы отрегулируете дисперсию измерений, чтобы обеспечить некоторую небольшую степень независимости между измерениями, то это будет работать безпроблема.Например, 95% коррелированные измерения будут выглядеть так:

V = [1      0.95; ...
     0.95   1  ];
1 голос
/ 08 марта 2012

Вы можете использовать разложение по единственному значению в качестве решателя.Это сделает все возможное, что можно сделать.

Я обычно думаю о наименьших квадратах по-другому.Вы можете прочитать мои мысли здесь:

http://www.scribd.com/doc/21983425/Least-Squares-Fit

Посмотрите, работает ли это лучше для вас.

Я не понимаю, как размер это проблема.Если у вас есть N (x, y) пар, вам все равно нужно будет найти только для (M + 1) коэффициентов в полиноме M-порядка:

y = a0 + a1*x + a2*x^2 + ... + am*x^m
...