我想使非线性模型适合实际数据。
实际数据由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
,该常数将回归线与实际数据之间的误差平方和最小化。
我首先使用了在YouTube视频Fitting Functions to Data in R上找到的功能fitModel
。
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
但是,有一个错误
modelspec [[datasetind [i]]]中的错误:下标超出范围
因此,作为替代,希望找到“ a”和“误差平方和”的图。这次,我很难找到“ a”并绘制此图。通过手动工作,我发现值“ a”大约在0.2左右,但这不是一个精确值。
如果有人可以表现出以下任何一种都会有所帮助:
fitModel
函数不起作用或a
并绘制图形。