概念
与插值问题不同,在拟合问题中不需要曲线一定经过给定的点在。拟合问题的目标是寻求一个函数(曲线) ,使得该曲线在某种准则下与所有的数现点最为接近,即曲线拟合的最好(最小化损失函数)
拟合的结果是得到一个确定的曲线
clear;clc
load data1
plot(x,y,'o')
%给x和y轴加上标签
xlable('x的值')
ylable('y的值')
n = size(x,1);
k = (n*sum(x.*y)-sum(x)*sum(y))
b = (sum(x.*x)*sum(y)-sum(x)*sum(x.*y))/(n*sum(x.*x)-sum(x)*sum(x))
hold on %继续在之前的图形上来画图形
grid on %显示网格线
f = @(x)k*x+b;
%fplot函数可用于画出匿名一元函数的图形
fplot(f,[2.5,7]);%fplot(f,xinterval)将匿名函数f在指定区间xinterval绘图
legend('样本数据','拟合函数','location','SouthEast')
%计算拟合优度
y_hat = k*x+b;%y的拟合值
SSR = sum((y_hat-mean(y)).^2) %回归平方和
SSE = sum((y_hat-y).^2) % 误差平方和
SST = sum((y-mean(y)).^2) %总体平方和
SST = SSE + SSR
R_2 = SSR/SST
%%画出y=kx+b的函数图像plot(x,y)
%% 传统的画法:模拟生成x和y的序列,比如要画出[0,5]上的图形
% x = 0:0.1:5 %间隔设置的越小画出来的图形越精准
% y = k*x+b % k和b都是已知值
% plot(x,y,'-')
% 匿名函数的基本用法
% handle = @(arglist)anonymous_function
% 其中handle为调用匿名函数时使用的名字
% arglist为匿名函数的输入参数,可以是一个,也可以是多个,用逗号分隔
% anonymous_function为匿名函数的表达式
%eg. z = @(x,y)x^2+y^2
%z(1,2)
%%ans = 5
如何拟合曲线与样本点最接近:最小二乘法
为什么用二次方,而不用绝对值,三次方或者四次方?
用二次方,即最小二乘的思想,得到的结果和MLE极大似然估计一致
用绝对值不方便求导,优化
用三次方,产生正负数,误差发生抵消
用四次方,避免极端数据对拟合曲线的影响
拟合优度:评价拟合的好坏
可决系数:
R
2
R{^2}
R2
R
2
R{^2}
R2越接近1,说明误差平方和越接近0,误差越小,拟合越好
ps.
R
2
R{^2}
R2智能用于拟合函数是线性函数时,拟合结果的评价
总体平方和SST:
T
o
t
a
l
Total
Total
s
u
m
sum
sum
o
f
of
of
s
q
u
a
r
e
s
:
S
S
T
=
∑
i
=
1
n
(
y
i
−
y
‾
)
2
squares : SST = \sum_{i=1}^n (y_i-\overline{y}){^2}
squares:SST=∑i=1n(yi−y)2
误差平方和SSE:
T
h
e
The
The
s
u
m
sum
sum
o
f
of
of
s
q
u
a
r
e
s
squares
squares
d
u
e
due
due
t
o
to
to
e
r
r
o
r
:
S
S
E
=
∑
i
=
1
n
(
y
i
−
y
i
^
)
2
error: SSE = \sum_{i=1}^n(y_i-\hat{y_i}){^2}
error:SSE=∑i=1n(yi−yi^)2
回归平方和SSR:
S
u
m
Sum
Sum
o
f
of
of
s
q
u
a
r
e
s
squares
squares
o
f
of
of
t
h
e
the
the
r
e
g
r
e
s
s
i
o
n
:
S
S
R
=
∑
i
=
1
n
(
y
i
^
−
y
‾
)
2
regression: SSR = \sum_{i=1}^n(\hat{y_i}-\overline{y}){^2}
regression:SSR=∑i=1n(yi^−y)2
可以证明:
S
S
T
=
S
S
E
+
S
S
R
SST = SSE + SSR
SST=SSE+SSR
拟合优度: 0
≤
\leq
≤
R
2
=
S
S
R
S
S
T
=
S
S
T
−
S
S
E
S
S
T
=
1
−
S
S
E
S
S
T
≤
1
R{^2}=\frac{SSR}{SST}=\frac{SST-SSE}{SST}=1-\frac{SSE}{SST} \leq 1
R2=SSTSSR=SSTSST−SSE=1−SSTSSE≤1
注意:
a.SSR不能单独使用,因为量纲不同,所以用
R
2
R{^2}
R2表示
b.
R
2
R{^2}
R2只能用于拟合函数是线性函数时,拟合结果的评价;线性函数和其他函数和其他函数(例如复杂的指数函数)比较好坏,直接看SSE即可(
R
2
R{^2}
R2是个负数)
线性函数
对于参数线性,而不是对于变量:在函数中,参数仅仅以一次方出现,且不能乘以或除以其他任何的参数,并不能出现参数的复合函数形式
如:
y
=
a
+
b
2
x
y = a + b{^2}x
y=a+b2x,
y
=
a
+
b
x
+
b
c
x
2
y = a + bx +bcx{^2}
y=a+bx+bcx2,
y
=
a
(
x
−
b
)
2
y = a(x-b){^2}
y=a(x−b)2,
y
=
a
s
i
n
(
b
+
c
x
)
y= asin(b+cx)
y=asin(b+cx)