Дискуссионный математический форумМатематический форум
Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Нелинейная регрессия с пропусками данных
СообщениеДобавлено: 06 апр 2021, 16:12 
Не в сети
Начинающий
Зарегистрирован:
06 апр 2021, 16:00
Сообщений: 1
Cпасибо сказано: 0
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Имеется массив экспериментальных данных с пропусками некоторых точек. Предполагаемая зависимость - синусоида с неизвестной фазой, известным периодом, плавно меняющейся амплитудой, сидящая на медленно меняющемся пьедестале. Медленно меняющиеся - в первом приближении - линейные функции. Имеется ли решение моей задачи!

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Нелинейная регрессия с пропусками данных
СообщениеДобавлено: 06 апр 2021, 16:16 
Не в сети
Последняя инстанция
Аватара пользователя
Зарегистрирован:
28 дек 2011, 15:16
Сообщений: 11671
Откуда: Дивногорск
Cпасибо сказано: 795
Спасибо получено:
1984 раз в 1822 сообщениях
Очков репутации: 314

Добавить очки репутацииУменьшить очки репутации
Думаю что да. Картинку покажите.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Нелинейная регрессия с пропусками данных
СообщениеДобавлено: 07 апр 2021, 21:30 
Не в сети
Профи
Зарегистрирован:
04 июн 2020, 01:04
Сообщений: 387
Cпасибо сказано: 33
Спасибо получено:
92 раз в 88 сообщениях
Очков репутации: 14

Добавить очки репутацииУменьшить очки репутации
Siarhei
Из описания получается, что модель такова:

[math]\left( b_{1} x_{i} + b_{2} \right) \sin{\left( 2 \pi f x_{i} + b_{3} \right)} + b_{4} x_{i} + b_{5} + \epsilon_{i} = y_{i}[/math]

где f — известная частота.
Это можно трансформировать в:

[math]\color{blue}\underbrace{{\color{red}\boxed{{\color{black} b_{1} \cos{b_{3}} }}}}_{ a_{1} } {\color{blue}\boxed{{\color{black} \sin{\left( 2 \pi f x \right) x }}} + \underbrace{{\color{red}\boxed{{\color{black} b_{1} \sin{b_{3}} }}}}_{ a_{2} } {\color{blue}\boxed{{\color{black} \cos{\left( 2 \pi f x \right) x }}} + \underbrace{{\color{red}\boxed{{\color{black} b_{2} \cos{b_{3}} }}}}_{ a_{3} } {\color{blue}\boxed{{\color{black} \sin{\left( 2 \pi f x \right) }}} + \underbrace{{\color{red}\boxed{{\color{black} b_{2} \sin{b_{3}} }}}}_{ a_{4} } {\color{blue}\boxed{{\color{black} \cos{\left( 2 \pi f x \right) } }}} + \underbrace{{\color{red}\boxed{{\color{black} b_{4} }}}}_{ a_{5} } {\color{blue}\boxed{{\color{black} x }}} + \underbrace{{\color{red}\boxed{{\color{black} b_{5} }}}}_{ a_{0} } } } }[/math]

Где синим выделены производные регрессоры, в которые можно трансформировать имеющийся регрессор (значения по оси X), а красным производные коэффициенты для линейной регрессии, из которых можно попытаться получить искомые коэффициенты.

Ниже код c numpy в Python, который генерит значения такой функции с тестовыми коэффициентами и пытается их оценить методом наименьших квадратов. Есть одна проблема: при тригонометрическом разложении выше и последующей линейной регрессии у нас получаются две точечные оценки искомого коэффициента фазы. В коде ниже я просто его арифметически усредняю. От этой усредненной оценки потом высчитываю искомые коэффициенты для наклона и пересечения амплитуды.

import numpy as np
import matplotlib.pyplot as plt

# Частота
f = 0.04

# Генерация переменной X и нормальной ошибки
x = np.arange(-100.0, 100.0, 0.2)
e = np.random.normal(0.0, 0.3, 1000)

# Тестовые коэффициенты
a1 = 1.05
a2 = -105.0
a3 = 0.4
a4 = 1.009
a5 = -3.0

# Генерация случайной тестовой переменной Y
y = (a1 * x + a2) * np.sin(2.0 * np.pi * f * x + a3) + a4 * x + a5 + e

# Функции трансформации регрессоров
x1 = lambda x: np.matrix(np.sin(2.0 * np.pi * f * x) * x).T
x2 = lambda x: np.matrix(np.cos(2.0 * np.pi * f * x) * x).T
x3 = lambda x: np.matrix(np.sin(2.0 * np.pi * f * x)).T
x4 = lambda x: np.matrix(np.cos(2.0 * np.pi * f * x)).T
x5 = lambda x: np.matrix(x).T

# Создание матрицы линейных регрессоров
regressors = np.concatenate((np.matrix(np.ones(1000)).T,x1(x),x2(x),x3(x),x4(x),x5(x)), axis=1)

# Оценка модифицированных коэффициентов
modified_coef = (regressors.T * regressors).I * regressors.T * np.matrix(y).T

# Восстановление исходных коэффициентов
b3 = float((np.arctan(modified_coef[2]/modified_coef[1]) + np.arctan(modified_coef[4]/modified_coef[3])) / 2.0)
b1 = float((modified_coef[1] / np.cos(b3) + modified_coef[2] / np.sin(b3)) / 2.0)
b2 = float((modified_coef[3] / np.cos(b3) + modified_coef[4] / np.sin(b3)) / 2.0)
b4 = float(modified_coef[5])
b5 = float(modified_coef[0])
print("Наклон амплитуды\t%.3f" % b1)
print("Пересечение амплитуды\t%.3f" % b2)
print("Фаза\t\t\t%.3f" % b3)
print("Наклон высоты\t\t%.3f" % b4)
print("Пересечение высоты\t%.3f" % b5)

# График кривой
plt.scatter(x, y, s=0.01)
plt.show()


Изображение

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

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Нелинейная регрессия

в форуме Математическая статистика и Эконометрика

nina94

0

389

11 июн 2014, 20:10

Нелинейная зависимость от 2-х переменных

в форуме Исследование операций и Задачи оптимизации

freon

1

340

08 авг 2014, 11:08

Нелинейная система уравнений

в форуме Тригонометрия

Avatonk

3

369

23 дек 2014, 11:12

Нелинейная система уравнений с 3 переменными

в форуме Линейная и Абстрактная алгебра

Kutumich

7

398

14 дек 2017, 16:26

Нелинейная система дифференциальных уравнений

в форуме Дифференциальные и Интегральные уравнения

Yurievna

2

293

20 апр 2018, 01:34

Нелинейная модель динамики капитала

в форуме Комплексный анализ и Операционное исчисление

KSU-KSU93

2

374

25 ноя 2014, 01:14

Нелинейная функция и построение графика на координате

в форуме Аналитическая геометрия и Векторная алгебра

Dimone_lemone

3

621

03 апр 2019, 10:04

Найти промежуточные значения, нелинейная зависимость

в форуме Начала анализа и Другие разделы школьной математики

ss777

18

1149

24 авг 2016, 03:22

Регрессия

в форуме Математическая статистика и Эконометрика

socb1201

1

257

17 фев 2020, 17:35

Регрессия

в форуме Математическая статистика и Эконометрика

Razor

53

1091

25 авг 2021, 16:30


Часовой пояс: UTC + 3 часа [ Летнее время ]



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

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


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

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2023 MathHelpPlanet.com. All rights reserved