我试图将非线性回归模型与两个预测变量拟合。我在编写模型时遇到了麻烦。
z =因变量
x =与z定义关系的自变量:a*tanh(-b*x/a)+c
与z的关系是线性的。但由于我的数据范围只是线性的
这是我到目前为止所做的:
a*tanh(-b*x/a)+c + (d*y)
理想情况下,我希望有一个第三个分类独立变量,可用数字表示0或1
提前感谢您的帮助!
答案 0 :(得分:1)
请参阅Matlab文档中的fitnlm
,这是他们用于非线性回归分析的最全面和主流的工具。它是在2013b推出的。旧功能为nlinfit
。
使用它的一种方法是,从上面链接的文档
mdl = fitnlm(X, y, modelfun, beta0)
此处X = [x1, x2]
是使用向量x1
和x2
构建的矩阵,其中包含预测变量的数据(您的x
和y
)。上面的y
是包含响应数据的向量(您的z
)。 modelfun
是您提供功能依赖的地方。这可以通过两种方式完成,下面我使用更简单的“字符串语法”。在z = a*tanh(-b*x/a)+c + (d*y)
的情况下,建模功能是
modelfun = `y~(b1*tanh(-b2*x1/b1)+b3+b4*x2)`
请注意,这是确切的语法'y~(...)'
。请参阅上面链接的fitnlm
页面上“示例”下的“使用模型字符串语法指定非线性回归”。
最后,beta0
是具有未知系数初始值的向量。 (获得合理的数值对于成功建模非常关键。)
因此,要确定的系数为(b1, b2, b3, b4)
,向量beta0
应具有初始值,以便开始拟合。
然后,假设您已为您的数据构建了X = [x1, x2]
矩阵并为beta0
选择了值,
modfun = 'y~(b1*tanh(-b2*x1/b1)+b3+b4*x2)';
nlm = fitnlm(X, y, modfun, beta0);
display(nlm);
这应该显示系数的拟合值和一些统计数据。
有用的网页可能位于non-linear regression,此overview位于资源链接上。
答案 1 :(得分:1)
文档指出fitnlm无法用于分类数据