Matlab - регрессия - PullRequest
       2

Matlab - регрессия

2 голосов
/ 28 февраля 2012

Я получаю предупреждение: X не соответствует рангу с точностью до машины.Кроме того, коэффициенты, которые я получаю, являются комплексными числами, хотя все входные данные действительны.Почему это происходит?Есть идеи как из этого выбраться?

1 Ответ

5 голосов
/ 28 февраля 2012

Я полагаю, что ваш входной вектор имеет слишком много линейно зависимых столбцов.Сделайте rank(input) и посмотрите, что говорит результат.Если оно меньше 8, вам нужно удалить некоторые из ваших независимых переменных, которые находятся в вашей матрице input.Кроме того, вы можете включить дополнительную информацию о том, как вы пришли к вашей input матрице, например:

input = [ fuel engine_speed fuel.*engine_speed ];  % or even
input = [ x1 x2 x1.*x2 ];

Если у вас матрица низкого ранга, попробуйте найти зависимые столбцы.Вот быстрый способ, который я бы порекомендовал (я уверен, что кто-то знает о лучшем):

[R,jb] = rref(input);
full_rank_input = input(:,jb);
rank(input)

Должен дать вам матрицу с rank(full_rank_input) == num_columns.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...