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

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

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

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




Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Нелинейный регрессионный анализ с произвольно заданной аппро
СообщениеДобавлено: 23 фев 2023, 15:07 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
21 дек 2021, 01:39
Сообщений: 1753
Cпасибо сказано: 81
Спасибо получено:
329 раз в 315 сообщениях
Очков репутации: 70

Добавить очки репутацииУменьшить очки репутации

Скопировал вашу базу данных в Excel, написал "теоретическую" формулу [math]y=\frac{1}{ax+b}+c,[/math] запустил свою программу.
Результат: [math]a \approx -5,2624; b \approx -2,6366; c \approx -0,0001646; \sigma \approx 0,0045[/math]
Что касается "Так в этом собственно и вопрос."
Тут нужно различать две разные постановки задачи:
1) Аппроксимация / интерполяция данных. Тут без разницы - локальный минимум невязки, или глобальный, если данные аппроксимированы хорошо.
2) Определение "истинных" значений параметреов. Тут все плохо. Если параметров мало (2-3), то глобальный минимум отыскивается достаточно быстро. Но если их много, с ростом их числа задача становится некорректной (плохо обусловленной), т.е. малые вариации в базе данных дают сколь угодно большой разброс в значениях параметров, даже если отыскать глобальный минимум. Хотя как его искать - непонятно.

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

Добавить очки репутацииУменьшить очки репутации
Exzellenz
Спасибо большое за подробное пояснение и проверку моего датасета у себя в VBA. Хорошая программа.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Нелинейный регрессионный анализ с произвольно заданной аппро
СообщениеДобавлено: 24 фев 2023, 23:36 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
21 дек 2021, 01:39
Сообщений: 1753
Cпасибо сказано: 81
Спасибо получено:
329 раз в 315 сообщениях
Очков репутации: 70

Добавить очки репутацииУменьшить очки репутации
Да на здоровье!
Если хотите, могу выложить вам текст VBA-программы.
Но предупреждаю заранее: программа доморощенная, написана на скорую руку, и ее нужно запускать несколько раз, контролируя внешний вид графика и величину невязки – до тех пор, пока невязка не перестанет убывать.
Так что прошу строго не судить.
Для меня главное, что она работает и выдает результаты, которые меня устраивают.

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

Добавить очки репутацииУменьшить очки репутации
Exzellenz писал(а):
Если хотите, могу выложить вам текст VBA-программы.

Если Вы её сами написали, то конечно покажите. Очень интересно. Я в VBA слаб, но надеюсь разберусь.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Нелинейный регрессионный анализ с произвольно заданной аппро
СообщениеДобавлено: 25 фев 2023, 11:29 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
21 дек 2021, 01:39
Сообщений: 1753
Cпасибо сказано: 81
Спасибо получено:
329 раз в 315 сообщениях
Очков репутации: 70

Добавить очки репутацииУменьшить очки репутации
Прежде, чем вызвать программу, нужно маркировать все клетки таблицы, содержащие значения параметров (которые нужно вариировать); а последней маркировкой должна быть клетка таблицы с невязкой.
Клетки с параметрами можно маркировать в любом порядке, причем эти клетки не обязательно должны лежать в односвязной области.

Итак, текст программы:

Public Sub Solution()
Dim Dis As Double, Bereiche As Long, Zellen As Long, i As Integer, j As Integer, Davor() As Double, Zelle As Range
Dim Z As Integer, S As Integer, Danach() As Double, W As Single, dW As Single, AltDis As Double, Wert() As Double
Dim k As Integer
Bereiche = Selection.Areas.Count
j = 0
For i = 1 To Bereiche - 1
For Each Zelle In Selection.Areas(i)
j = j + 1
ReDim Preserve Davor(j)
ReDim Preserve Danach(j)
ReDim Wert(j)
S = Zelle.Column
Z = Zelle.Row
Davor(j) = Cells(Z, S).Value ' Запомнить параметры до оптимизации
Call Optimizer(Z, S)
Danach(j) = Cells(Z, S).Value ' Параметры после первой оптимизации
Next Zelle
Next i

W = 0
For i = 1 To j: W = W + (Davor(i) - Danach(i)) ^ 2: Next i
W = Sqr(W): dW = W

Dis = ActiveCell.Value
Do
Do
AltDis = Dis
k = 0
For i = 1 To Bereiche - 1
For Each Zelle In Selection.Areas(i)
k = k + 1
S = Zelle.Column
Z = Zelle.Row
Wert(k) = Cells(Z, S).Value + dW * (Danach(k) - Davor(k)) / W
Cells(Z, S).Value = Wert(k)
Next Zelle
Next i
Dis = ActiveCell.Value
Loop While Dis < AltDis
dW = -dW / 3
Loop While Abs(dW) > 0.000000001
End Sub
---------------------------------------------------------------------------------------------
Public Sub Optimizer(Z, S)
Dim Dis As Double, Wert As Double, dW As Double, AltDis As Double
Dis = ActiveCell.Value
Wert = Cells(Z, S).Value
dW = Wert / 10
Do
Do
AltDis = Dis
Wert = Wert + dW
Cells(Z, S).Value = Wert
Dis = ActiveCell.Value
Loop While Dis < AltDis
dW = -dW / 3
Loop While Abs(dW) > 0.000000001
End Sub

К сожалению, местный текстовый редактор игнорирует отступы в начале строки, как и множественные пробелы.

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

Добавить очки репутацииУменьшить очки репутации
Спасибо большое за код! Отступы расставил. С немецкого перевел. Соориентируюсь, как выделять области перед запуском правильно, и испытаю.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Нелинейный регрессионный анализ с произвольно заданной аппро
СообщениеДобавлено: 25 фев 2023, 19:02 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
21 дек 2021, 01:39
Сообщений: 1753
Cпасибо сказано: 81
Спасибо получено:
329 раз в 315 сообщениях
Очков репутации: 70

Добавить очки репутацииУменьшить очки репутации
Да пользуйтесь на здоровье!
А чего там было переводить с немецкого?

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Нелинейный регрессионный анализ с произвольно заданной аппро
СообщениеДобавлено: 26 фев 2023, 22:43 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
21 дек 2021, 01:39
Сообщений: 1753
Cпасибо сказано: 81
Спасибо получено:
329 раз в 315 сообщениях
Очков репутации: 70

Добавить очки репутацииУменьшить очки репутации
Ну как, сориентировались? Программа работает как надо?

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

Добавить очки репутацииУменьшить очки репутации
Exzellenz писал(а):
А чего там было переводить с немецкого?

Когда понимаешь название переменной, легче по ходу программы ориентироваться/помнить, где что лежит. :)

Exzellenz писал(а):
Ну как, сориентировались? Программа работает как надо?
Да, спасибо! Я делаю на листе зону с параметрами и зону таблицы, создаю справа график, чтобы видеть, что происходит, (как на Вашем скриншоте), выделяю две клетки с параметрами и потом одну клетку, где лежит сумма квадратов ошибок (она вероятно поэтому остается "активной", и на это расчитывает программа). И запускаю. Если задать очень неподходящие изначальные параметры для этой конкретной модели, что мы обсуждали, то можно воспроизвести то, что кажется зависанием Excel (хотя возможно он просто очень долго считает и нужно ждать). В более благоприятных условиях он подбирает более хорошие параметры, чем изначальные. Зачастую повтороный запуск макроса после этого генерит ещё более хорошие параметры (меньшую сумму квадратов ошибок). Потом повторный запуск генерит ещё более хорошие параметры. Т.к. синтаксис Visual Basic для меня несколько непривычен (хотя я понимаю, что похожий необычный синтаксис нашёл свой путь и в более современные языки такие как Julia, и в Ruby) я не сразу улавливаю, что происходит. Поэтому я отдельно ещё пройдусь по программе, чтобы полностью понять её логику и до конца понять, почему она работает именно так.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Нелинейный регрессионный анализ с произвольно заданной аппро
СообщениеДобавлено: 27 фев 2023, 00:21 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
21 дек 2021, 01:39
Сообщений: 1753
Cпасибо сказано: 81
Спасибо получено:
329 раз в 315 сообщениях
Очков репутации: 70

Добавить очки репутацииУменьшить очки репутации
ОК, будут вопросы - обращайтесь.

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

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

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

Tatyana2

2

421

14 ноя 2014, 19:34

Регрессионный анализ

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

javavirys

2

377

13 май 2017, 18:47

Регрессионный анализ

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

Fahrengeit777

1

417

19 мар 2015, 17:08

Множественный регрессионный анализ

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

NickMarkus

0

300

10 май 2014, 12:04

Регрессионный анализ разных значений

в форуме Численные методы

FuzzyTosha

2

349

11 апр 2018, 16:12

Линейная регрессия(Регрессионный анализ)

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

Nikita56

7

632

27 окт 2016, 12:44

Корреляционно-регрессионный анализ запасов

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

Pasha0112

5

430

10 ноя 2017, 15:11

МНК и регрессионный анализ. Не отображаются картинки формул

в форуме Предложения, Замечания, Обратная связь

cssoft

1

793

18 дек 2014, 10:01

Регрессионный анализ. Понять задание. Выбрать переменные.

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

Huckleberry_ua

0

313

20 дек 2015, 22:14

Метод конечных разностей нелинейный PDE

в форуме Дифференциальное исчисление

last-cloud

0

430

04 апр 2015, 23:17


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



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

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


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

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

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

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