2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Корректно ли используется метод наименьших квадратов
Сообщение10.06.2024, 08:37 


10/06/24
2
Стоит задача определения параметров некоторой системы $y = a_0 + a_1\cdot x_1 + a_2\cdot x_2 + a_3\cdot x_3$. Пытаюсь определить параметры a0..a3 методом наименьших квадратов. Нюанс заключается в том, что $x_3=x_2^2$, а $x_1 = $\int x_2dt$ $.

Для оценки работы алгоритма использую некоторые тестовые наборы значений с известными a0..a3, и считаю их методом МНК, но не получаю искомые значения.

Пример в матлаб:

Код:
A = [0.5; 1; 1.5; -2]; # вектор параметров a0..a3
x2 = 0:0.01:1; #
X = [ones(size(x2)); cumtrapz(x2)*0.01; x2; x2.^2]'; # матрица регрессоров
Y = X*A; # вектор зависимой переменной y
Beta = pinv(X)*Y; # оценки МНК
Y_est = X*Beta; # вычисление зависимой переменной на основе оценок МНК
plot(Y)
hold on
plot(Y_est)

При вычислении Beta получаю вектор [0.5000; -0.6000; 1.5000; -1.2000].

Подскажите, что делаю не так, и корректен ли вообще такой подход? Возможно есть какие-то альтернативы

 Профиль  
                  
 
 Re: Корректно ли используется метод наименьших квадратов
Сообщение10.06.2024, 10:16 


10/03/16
4285
Aeroport
GeorgiyKlimov96 в сообщении #1641945 писал(а):
Beta = pinv(X)*Y

??

Можете пожалуйста расписать решение задачи наилучшего приближения вектора $Y$ вектором $X \beta$ в квадратичной норме?

 Профиль  
                  
 
 Re: Корректно ли используется метод наименьших квадратов
Сообщение10.06.2024, 10:43 
Заслуженный участник
Аватара пользователя


01/08/06
3080
Уфа
Я совсем не знаю матлаб, особенно вот это:
Используется синтаксис Matlab M
x2 = 0:0.01:1; #

Это же вот в такое разворачивается: $(0, 0.01, 0.02, 0.03, \dots, 0.99, 1)$, да?
Тогда у вас получается строгое равенство $x_3=2x_1$ (функция cumtrapz берёт интеграл точно), и получается линейная зависимость между 1 и 3 столбцами матрицы.
Если подробнее, то регрессия получается такая: $y=a_0+a_2x+(a_1+2a_3)\frac{x^2}{2}$
И, выходит, мы можем варьировать $a_1$ и $a_3$, лишь бы $a_1+2a_3$ равнялось тому, чему оно равняется. Оно исходно равно $-3$, и в результате тоже получается $-3$ — всё правильно.
В сухом остатке получается, что вы просите машину найти $a_1$ и $a_3$ из одного-единственного уравнения $a_1+2a_3=-3$. Вы-то знаете, что должно быть $a_1=1, a_3=-2$, но компьютер оперирует только теми уравнениями, которые вы ему написали, и он выдаёт какое-то решение ($a_1=-0.6, a_3=-1.2$), которое не обязано совпасть с тем, которое вы знаете.
Если в качестве $x_2$ взять что-то посложнее линейной зависимости (например, $x_{2,i} = \sin i$), то интеграл взялся бы с погрешностью, точная линейная зависимость между $x_1$ и $x_3$ исчезла бы и, вероятно, программа бы посчитала правильно.

 Профиль  
                  
 
 Re: Корректно ли используется метод наименьших квадратов
Сообщение10.06.2024, 10:54 


10/06/24
2
worm2, точно! Спасибо!

 Профиль  
                  
 
 Re: Корректно ли используется метод наименьших квадратов
Сообщение10.06.2024, 12:14 


10/03/16
4285
Aeroport
GeorgiyKlimov96 в сообщении #1641945 писал(а):
Beta = pinv(X)*Y;


Sorry, ступил - здесь всё правильно

 Профиль  
                  
 
 Re: Корректно ли используется метод наименьших квадратов
Сообщение10.06.2024, 15:09 
Заслуженный участник
Аватара пользователя


23/07/08
10845
Crna Gora
Выражение $A^+b$ даёт обобщённое нормальное решение системы $Ax=b$. Оно всегда существует и единственно.

Исходя из этого, понятно, почему MATLAB выдал именно $a_1=-0.6, a_3=-1.2$. Это решение уравнения $a_1+2a_3=-3$, имеющее минимальную норму, $a_1^2+a_3^2\to\min$.

 Профиль  
                  
 
 Re: Корректно ли используется метод наименьших квадратов
Сообщение11.06.2024, 11:23 
Заслуженный участник
Аватара пользователя


11/03/08
9701
Москва
Мультиколлинеарность. Интеграл от линейной функции - квадрат.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: george66


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group