我是R新手,但我正在寻找一种方法来确定R中以下函数相关的三个参数A,B和C:
y = A * (x1^B) * (x2^C)
有人可以给我一些关于R方法的提示,这些提示可以帮助我实现这样的拟合吗?
答案 0 :(得分:6)
一个选项是nls
函数,正如@SvenHohenstein建议的那样。另一种选择是将非线性回归转换为线性回归。在这个等式的情况下,只需取两个方程的对数并做一个小代数,你将得到一个线性方程。您可以使用以下内容运行回归:
fit <- lm( log(y) ~ log(x1) + log(x2), data=mydata)
截距为log(A)
,因此使用exp
获取值,B和C参数将为2个斜率。
这里的最大区别是nls
适合模型,原始方程中添加了正常误差,而lm
与日志拟合假设原始模型中的误差来自对数正态分布,乘以而不是添加到模型中。许多数据集将为这两种方法提供类似的结果。
答案 1 :(得分:5)
您可以使用函数nls
拟合非线性最小二乘模型。
nls(y ~ A * (x1^B) * (x2^C))
答案 2 :(得分:-1)
为什么不使用SVM(Suppor Vector Machines)回归? CRAN中有一个名为e1071
的包可以处理SVM回归。
您可以查看本教程:http://www.svm-tutorial.com/2014/10/support-vector-regression-r/
我希望它可以帮到你