两个MATLAB®函数可以用多项式对数据建模。
多项式拟合函数
这个例子展示了如何用多项式来建模数据。
量一个量Y
在几个时间点T
.
t=[0.3 0.8 1.1 1.6 2.3];y=[0.6 0.67 1.01 1.35 1.47 1.25];绘图(t,y,“o”)职务('y与t的曲线图')
你可以尝试用二次多项式函数来模拟这些数据,
未知系数, , ,和 通过最小化模型数据偏差的平方和(最小二乘拟合)计算。
使用拟合
求多项式系数。
p=多边形拟合(t,y,2)
第=1×3-0.2942 1.0231 0.4981
MATLAB计算多项式系数的降幂。
该方程给出了数据的二次多项式模型
在等距时间上计算多项式,t2级
. 然后,将原始数据和模型绘制在同一个图上。
t2=0:0.1:2.8;y2=polyval(p,t2);曲线图(t,y,“o”,t2,y2)标题('数据(点)和模型(线)的绘图')
在数据时间向量上评估模型
y2=多值(p,t);
计算残差。
res=y-y2;
绘制残差图。
图,绘图(t,res,'+')职务('残差图')
请注意,二次拟合大致遵循数据的基本形状,但不捕捉数据所在的平滑曲线。残差中似乎有一种模式,这表明可能需要一种不同的模型。第五次多项式(如下所示)可以更好地跟踪数据的波动。
重复这个练习,这次使用拟合
.
p5=多边形拟合(t,y,5)
第5页=1×60.7303 -3.5892 5.4281 -2.5175 0.5910 0.6000
计算多项式t2级
并在新的图形窗口中绘制数据顶部的拟合。
y3=polyval(p5,t2);曲线图(t,y,“o”,t2,y3)标题('五次多项式拟合')
注意
如果你试图模拟一个实际情况,那么考虑一个特定订单的模型在你的情况下是否有意义是很重要的。
这个例子展示了如何用包含非多项式项的线性模型来拟合数据。
当多项式函数不能产生令人满意的数据模型时,可以尝试使用带有非多项式项的线性模型。例如,考虑下列参数中的线性函数 , ,和 ,但在 数据:
你可以计算未知系数 , ,和 通过构造和求解一组联立方程组并求解参数。下面的语法通过形成一个设计矩阵,其中每列表示用于预测响应的变量(模型中的一个项),每行对应于这些变量的一个观察值。
输入T
和Y
作为列向量。
t=[0.3 0.8 1.1 1.6 2.3]';y=[0.6 0.67 1.01 1.35 1.47 1.25]';
形成设计矩阵。
X=[个(大小(t))exp(-t)t.*exp(-t)];
计算模型系数。
a=X\y
a=3×11.3983 -0.8860 0.3085
因此,数据模型如下所示:
现在在规则间隔的点上评估模型,并用原始数据绘制模型。
T=(0:0.1:2.5)';Y=[个(尺寸(T))exp(-T)T.*exp(-T)]*a;绘图(T,Y,'-',t,y,“o”),网格在职务('模型和原始数据的绘图')
这个例子展示了如何使用多元回归模型的数据是一个多预测变量的函数。
当y是多个预测变量的函数时,表示变量之间关系的矩阵方程必须展开以容纳额外的数据。这叫做多元回归.
量一个量
对于几个值
和
. 将这些值存储在向量中x1型
,x2个
,和Y
分别是。
x1=[2.5.6.8 1.0 1.1]';x2=[1.3.4.9 1.1 1.4]';y=[17.26.28.23.27.24]';
此数据的模型的形式如下
未知系数的多元回归求解 , ,和 通过最小化模型数据偏差的平方和(最小二乘拟合)。
通过形成设计矩阵,构造并求解联立方程组,十
.
X=[个(大小(x1))x1 x2];
使用反斜杠运算符求解参数。
a=X\y
a=3×10.1018 0.4844 -0.2847
数据的最小二乘拟合模型是
为了验证模型,找出数据与模型偏差绝对值的最大值。
Y=X*a;最大误差=最大值(绝对值(Y-Y))
最大误差=0.0038
此值比任何数据值都小得多,表明此模型准确地跟踪数据。
此示例演示如何使用MATLAB函数:
从加载样本普查数据人口普查.mat
,其中包含1790年至1990年的美国人口数据。
负载人口普查
这将向MATLAB工作区添加以下两个变量。
cdate公司
是以10为增量包含1790年到1990年的列向量。
流行音乐
是一个列向量,其中的美国人口数对应于美国每年的人口数cdate公司
.
绘制数据。
绘图(cdate、pop、,'反渗透')职务(“1790年至1990年的美国人口”)
图中显示了一个很强的模式,这表明变量之间有很高的相关性。
在本示例的这一部分中,将确定变量之间的统计相关性cdate公司
和流行音乐
证明数据建模的合理性。有关相关系数的详细信息,请参见线性相关.
计算相关系数矩阵。
corrcoef(cdate,流行音乐)
答案=2×21.0000 0.9597 0.9597 1.0000
对角线矩阵元素表示每个变量与其自身的完美相关性,等于1。非对角线元素非常接近1,表明变量之间存在很强的统计相关性cdate公司
和流行音乐
.
本部分示例应用拟合
和多项式求值
MATLAB函数对数据进行建模。
计算拟合参数。
[p,ErrorEst]=polyfit(cdate,pop,2);
评估适合度。
pop_fit=polyval(p,cdate,ErrorEst);
绘制数据和拟合曲线。
绘图(cdate、pop\u fit、,'-',日期,流行音乐,'+'); 职务(“1790年至1990年的美国人口”)图例('多项式模型','数据','位置','西北'); xlabel公司('普查年'); 伊莱贝尔('人口(百万)');
曲线图表明,二次多项式拟合能很好地逼近数据。
计算此拟合的残差。
res=弹出-弹出拟合;图形,绘图(cdate,res,'+')职务('二次多项式模型的残差')
请注意,残差的曲线图显示了一种模式,这表明二次多项式可能不适合对该数据进行建模。
置信限是预测响应的置信区间。间隔的宽度表示拟合的确定程度。
示例的这一部分适用于拟合
和多项式求值
到人口普查
样本数据产生二阶多项式模型的置信限。
以下代码使用的间隔为 ,对应于大样本的95%置信区间。
评估拟合和预测误差估计(delta)。
[pop\u fit,delta]=polyval(p,cdate,ErrorEst);
绘制数据、拟合和置信边界。
绘图(cdate、pop、,'+',...日期,流行歌曲,'g-',...cdate,pop\u fit+2*三角形,'r:',...cdate,pop_fit-2*三角洲,'r:'); xlabel公司('普查年'); 伊莱贝尔('人口(百万)'); 职务('带置信边界的二次多项式拟合')网格在
95%的间隔表示您有95%的机会让新的观察值落在范围内。