【问题标题】:Fitting data by least squares in MATLAB在 MATLAB 中通过最小二乘拟合数据
【发布时间】:2018-01-24 20:21:53
【问题描述】:

给定以下数据点

我正在尝试使用最小二乘法找到最佳拟合模型。

给出了两个模型。

我的方法是将 to 方程改写成以下形式。


在哪里


在哪里


我编写了以下 MATLAB 代码来计算不同方程的系数 a、b。

对于第一个等式,我编写了以下代码来计算系数 a

x = [150 200 300 500 1000 2000]';
y = [2 3 4 5 6 7]';
func =@(x) (1/x-1/8);
yy=arrayfun(func,y);
A = 1./x;
c= A\yy; yanp= A*c; error = yy-yanp;
rms(error) % Root mean square error.

给我 a= 48.4692,均方根误差为 0.0310。

对于第二个等式,我编写了以下代码来计算系数 a、b。

x = [150 200 300 500 1000 2000]';
y = [2 3 4 5 6 7]';
yy = log(8-y);
A = [ones(6,1) log(x)];
c= A\yy; yanp= A*c;  error= yy-yanp;
a = exp(c(1)); %Converting back
b= c(2);
rms(error)

给我 a=174.5247, b= -0.6640,均方根误差为 0.0756

我的结果表明第一个方程是更好的近似值,因为误差更小,但是我的同学声称第二个方程给出的误差更小,因此是更好的近似值。我怀疑我在计算中的某个地方犯了错误,我正在寻求指导。

【问题讨论】:

  • 我不知道...从视觉的角度来看,在绘制两个回归 (figure(),plot(x,y),hold on,plot(x,yanp),hold off;) 时,有些东西告诉我第二个更好。而且它应该返回一个较低的 RMSE,因为预测值与观察值的偏差要小得多……对数转换一定有问题。

标签: matlab numerical-methods least-squares approximation


【解决方案1】:

在第二种情况下,您没有正确计算错误。您需要将yanp 转换回“真实单位”并与输入y 进行比较:

error = y-(8-exp(yanp));

【讨论】:

    猜你喜欢
    • 2020-10-02
    • 2013-01-21
    • 2016-07-02
    • 1970-01-01
    • 2012-08-29
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多