【发布时间】:2019-04-27 04:10:28
【问题描述】:
我想将非线性模型拟合到真实数据。
真实数据由 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
但是,有一个错误
modelspec[[datasetind[i]]] 中的错误:下标超出范围
因此,作为替代方案,您希望找到“a”和“误差平方和”的图。这一次,我很难找到“a”并绘制此图。通过手工,我发现值“a”接近 0.2,但这不是一个精确值。
如果有人能显化其中之一,那将是有帮助的:
- 为什么
fitModel函数不起作用或 - 如何找到值
a并绘制图表。
【问题讨论】:
-
您没有得到任何响应的原因是人们看到了一个视频文件的链接,并且不想出去查看它以复制您的设置工作。您应该从调用 install.packages 和 library 开始,然后使用该非标准包中的专用函数来加载数据。您可能需要使用数据的
dput输出。只有到那时,潜在的响应者才能帮助解决minimal reproducible example
标签: r model non-linear-regression