R中的非线性回归分析

时间:2012-12-13 09:29:23

标签: r regression non-linear-regression

我是R新手,但我正在寻找一种方法来确定R中以下函数相关的三个参数A,B和C:

y = A * (x1^B) * (x2^C)

有人可以给我一些关于R方法的提示,这些提示可以帮助我实现这样的拟合吗?

3 个答案:

答案 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/

我希望它可以帮到你