Я хочу подогнать нелинейную модель к реальным данным.
Реальные данные состоят из 2 известных числовых векторов ;толщина как 'x' и fh как 'y'
thickness=seq(0.15,2.00,by=0.05)
fh = c(5.17641, 4.20461, 3.31091, 2.60899, 2.23541, 1.97771, 1.88141, 1.62821, 1.50138, 1.51075, 1.40850, 1.26222, 1.09432, 1.13202, 1.12918, 1.10355, 1.11867, 1.09740,1.08324, 1.05687, 1.19422, 1.22984, 1.34516, 1.19713,1.25398 ,1.29885, 1.33658, 1.31166, 1.40332, 1.39550,1.37855, 1.41491, 1.59549, 1.56027, 1.63925, 1.72440, 1.74192, 1.82049)
plot(thickness,fh)
Это, по-видимому, нелинейно.Итак, я пытаюсь приспособить эту модель как нелинейную функцию
y= x*2/3+(2+2*a)/(3*x)
Переменная a
является неизвестной константой, и я пытаюсь найти наилучшую константу a
, которая минимизирует суммуквадрат ошибки между линией регрессии и реальными данными.
Сначала я использовал функцию fitModel
, обнаруженную в видео на YouTube, Подгонка функций к данным в R .
library(TIMP)
f=fitModel(fh~thickness^2/3+(2+2*A)/(3*thickness)) #it finds the coefficient 'A'
coef(f) # to represent just the coefficient
Тем не менее, есть ошибка
Ошибка в моделях spec [[datasetind [i]]]: нижний индекс вне границ
Итак, в качестве альтернативы, хотите найти график «а» и «сумма квадратов ошибок».На этот раз мне очень трудно найти «а» и построить график.Путем ручной работы я выяснил, что значение «а» где-то около 0,2, но это не точное значение.
Было бы полезно, если бы кто-то мог проявить либо:
- Почему
fitModel
функция не работает или - Как найти значение
a
и построить график.