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
4444
Aeroport
GeorgiyKlimov96 в сообщении #1641945 писал(а):
Beta = pinv(X)*Y

??

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

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


01/08/06
3131
Уфа
Я совсем не знаю матлаб, особенно вот это:
Используется синтаксис 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
4444
Aeroport
GeorgiyKlimov96 в сообщении #1641945 писал(а):
Beta = pinv(X)*Y;


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

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


23/07/08
10908
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
9904
Москва
Мультиколлинеарность. Интеграл от линейной функции - квадрат.

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

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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