我想用一个非线性模型来拟合真实的数据。
真实的数据由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视频Fitting Functions to Data in 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
但是,出现错误
模型规范datasetind[i]中出错:下标越界
因此,作为一种替代方法,我想找到一个'a'和'误差平方和'的图。这次,我很难找到'a'并绘制这个图。通过手动工作,我计算出'a'的值接近0.2,但这不是一个精确的值。
如果某人能够显化以下任一项,将会很有帮助:
1.为什么fitModel
函数不起作用或
1.如何求出a
的值并绘制图形。
1条答案
按热度按时间5sxhfpxr1#
你可以试试这个: