MATLAB:通用多元多项式与数据的线性回归

时间:2015-01-23 17:39:26

标签: matlab linear-regression

我想使用MATLAB将任意度的多元多项式拟合到我的数据中。假设我有两个变量,并且我使用二阶多项式:因此我的多项式是y = c1 + c2 * x1 + c3 * x2 + c4x1 * x2 + c5 * x1 + c6 * x2。还假设我有n个观察值和

X = [X1 X2] 

是存储每个观察的(x1,x2)对的矩阵。

一种可能性是使用

C=A\Y

其中Y是对应于每个观测值的响应矢量(x1,x2),A是矩阵

A=[ones(n,1) X1 X2 X1.*X2 X1.^2 X2.^2] 

然而,这根本不是通用的,每次修改变量的数量或多项式的次数时,我都必须手工编写A的表达式。理想情况下,我需要一些不错的'bsxfun'技巧:)否则,“丑陋”的循环就可以了。

或者,我可以使用'fitlm',我可以访问:

 LM = fitlm(DS,MODELSPEC)

从帮助中,我了解DS是一个包含我的观察结果的数据集(x1,x2,...,xn,y)。但是,MODELSPEC应该是“T-by-V矩阵,其中T是模型中所需的项数,V是DS中变量的数量。(I,J)元素表示变量J在项I中的幂“。我不知道如何为任意程度和数量的变量编写通用的MODELSPEC。你能救我吗?

编辑:为简洁起见,该示例在两个变量中使用了2次多项式。我正在寻找适用于 m 变量中 n 度多项式的解决方案,其中 n m 是任意的。

1 个答案:

答案 0 :(得分:0)

好的,这不是我想要的解决方案,所以如果有人想尝试回答,请做:)但是,我希望它对任何有同样问题的人都有帮助!我在MATLAB Central上找到了这个文件:

http://www.mathworks.com/matlabcentral/fileexchange/34765-polyfitn

它类似于@knedlsepp的链接,但是,根据文档,预测(即,未包含在拟合数据中的测试点处的拟合模型的评估)看起来更简单,更灵活。